flauschke, 1 year ago I’ve adapted it to work on kbin - let me know if anyone finds any issues <span style="font-style:italic;color:#969896;">// ==UserScript== </span><span style="font-style:italic;color:#969896;">// @name kbin lemmy redirect </span><span style="font-style:italic;color:#969896;">// @version 1.0 </span><span style="font-style:italic;color:#969896;">// @description Redirect kbin to your local Lemmy instance </span><span style="font-style:italic;color:#969896;">// @author @[email protected] </span><span style="font-style:italic;color:#969896;">// @match https://*/m/* </span><span style="font-style:italic;color:#969896;">// @icon https://join-lemmy.org/static/assets/icons/favicon.svg </span><span style="font-style:italic;color:#969896;">// ==/UserScript== </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// best effort guess </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">isKbin </span><span style="font-weight:bold;color:#a71d5d;">= typeof </span><span style="color:#0086b3;">KBIN_USER </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#183691;">'undefined' </span><span style="font-weight:bold;color:#a71d5d;">&& typeof </span><span style="color:#0086b3;">KBIN_MAGAZINE </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#183691;">'undefined'</span><span style="color:#323232;">; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#323232;">(isKbin) { </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// Get URL info </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">localLemmy </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"feddit.de"</span><span style="color:#323232;">; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">splitUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">location.href.split(</span><span style="color:#183691;">"/"</span><span style="color:#323232;">); </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">instanceUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">splitUrl[</span><span style="color:#0086b3;">2</span><span style="color:#323232;">]; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">community </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">splitUrl[</span><span style="color:#0086b3;">4</span><span style="color:#323232;">]; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">localizedUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"https://" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">localLemmy </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#183691;">"/c/" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">community </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#183691;">"@" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">instanceUrl; </span><span style="color:#323232;"> </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// Create redirect button if not on local </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#323232;">(instanceUrl </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#323232;">localLemmy) { </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">wrapper </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"div"</span><span style="color:#323232;">); </span><span style="color:#323232;"> wrapper.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#183691;">"width: 100%;position: fixed;top: 0;"</span><span style="color:#323232;">) </span><span style="color:#323232;"> </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">container </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"div"</span><span style="color:#323232;">); </span><span style="color:#323232;"> container.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#183691;">"position:relative;max-width: 1650px;width: 100%;margin: 0 auto;"</span><span style="color:#323232;">) </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">zNode </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"button"</span><span style="color:#323232;">); </span><span style="color:#323232;"> zNode.innerText </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"Open in local instance"</span><span style="color:#323232;">; </span><span style="color:#323232;"> zNode.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"id"</span><span style="color:#323232;">, </span><span style="color:#183691;">"localizeContainer"</span><span style="color:#323232;">); </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// add styles to the button embedded </span><span style="color:#323232;"> zNode.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">( </span><span style="color:#323232;"> </span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#323232;"> </span><span style="color:#183691;">"cursor: pointer; padding: 5px; margin-top: 55px; background-color: red; border-radius: 10%; border-width: 3px; border-style: solid; z-index: 10;max-width:200px;position:absolute;top:0;right:0;" </span><span style="color:#323232;"> ); </span><span style="color:#323232;"> zNode.addEventListener(</span><span style="color:#183691;">"click"</span><span style="color:#323232;">, e </span><span style="font-weight:bold;color:#a71d5d;">=> </span><span style="color:#0086b3;">window</span><span style="color:#323232;">.location.replace(localizedUrl)); </span><span style="color:#323232;"> container.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(zNode); </span><span style="color:#323232;"> wrapper.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(container); </span><span style="color:#323232;"> </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.body.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(wrapper); </span><span style="color:#323232;"> } </span><span style="color:#323232;">} </span>
I’ve adapted it to work on kbin - let me know if anyone finds any issues
<span style="font-style:italic;color:#969896;">// ==UserScript== </span><span style="font-style:italic;color:#969896;">// @name kbin lemmy redirect </span><span style="font-style:italic;color:#969896;">// @version 1.0 </span><span style="font-style:italic;color:#969896;">// @description Redirect kbin to your local Lemmy instance </span><span style="font-style:italic;color:#969896;">// @author @[email protected] </span><span style="font-style:italic;color:#969896;">// @match https://*/m/* </span><span style="font-style:italic;color:#969896;">// @icon https://join-lemmy.org/static/assets/icons/favicon.svg </span><span style="font-style:italic;color:#969896;">// ==/UserScript== </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// best effort guess </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">isKbin </span><span style="font-weight:bold;color:#a71d5d;">= typeof </span><span style="color:#0086b3;">KBIN_USER </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#183691;">'undefined' </span><span style="font-weight:bold;color:#a71d5d;">&& typeof </span><span style="color:#0086b3;">KBIN_MAGAZINE </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#183691;">'undefined'</span><span style="color:#323232;">; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#323232;">(isKbin) { </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// Get URL info </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">localLemmy </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"feddit.de"</span><span style="color:#323232;">; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">splitUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">location.href.split(</span><span style="color:#183691;">"/"</span><span style="color:#323232;">); </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">instanceUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">splitUrl[</span><span style="color:#0086b3;">2</span><span style="color:#323232;">]; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">community </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#323232;">splitUrl[</span><span style="color:#0086b3;">4</span><span style="color:#323232;">]; </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">localizedUrl </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"https://" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">localLemmy </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#183691;">"/c/" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">community </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#183691;">"@" </span><span style="font-weight:bold;color:#a71d5d;">+ </span><span style="color:#323232;">instanceUrl; </span><span style="color:#323232;"> </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// Create redirect button if not on local </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">if </span><span style="color:#323232;">(instanceUrl </span><span style="font-weight:bold;color:#a71d5d;">!== </span><span style="color:#323232;">localLemmy) { </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">wrapper </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"div"</span><span style="color:#323232;">); </span><span style="color:#323232;"> wrapper.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#183691;">"width: 100%;position: fixed;top: 0;"</span><span style="color:#323232;">) </span><span style="color:#323232;"> </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">container </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"div"</span><span style="color:#323232;">); </span><span style="color:#323232;"> container.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#183691;">"position:relative;max-width: 1650px;width: 100%;margin: 0 auto;"</span><span style="color:#323232;">) </span><span style="color:#323232;"> </span><span style="font-weight:bold;color:#a71d5d;">const </span><span style="color:#323232;">zNode </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.</span><span style="color:#0086b3;">createElement</span><span style="color:#323232;">(</span><span style="color:#183691;">"button"</span><span style="color:#323232;">); </span><span style="color:#323232;"> zNode.innerText </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"Open in local instance"</span><span style="color:#323232;">; </span><span style="color:#323232;"> zNode.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">(</span><span style="color:#183691;">"id"</span><span style="color:#323232;">, </span><span style="color:#183691;">"localizeContainer"</span><span style="color:#323232;">); </span><span style="color:#323232;"> </span><span style="font-style:italic;color:#969896;">// add styles to the button embedded </span><span style="color:#323232;"> zNode.</span><span style="color:#0086b3;">setAttribute</span><span style="color:#323232;">( </span><span style="color:#323232;"> </span><span style="color:#183691;">"style"</span><span style="color:#323232;">, </span><span style="color:#323232;"> </span><span style="color:#183691;">"cursor: pointer; padding: 5px; margin-top: 55px; background-color: red; border-radius: 10%; border-width: 3px; border-style: solid; z-index: 10;max-width:200px;position:absolute;top:0;right:0;" </span><span style="color:#323232;"> ); </span><span style="color:#323232;"> zNode.addEventListener(</span><span style="color:#183691;">"click"</span><span style="color:#323232;">, e </span><span style="font-weight:bold;color:#a71d5d;">=> </span><span style="color:#0086b3;">window</span><span style="color:#323232;">.location.replace(localizedUrl)); </span><span style="color:#323232;"> container.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(zNode); </span><span style="color:#323232;"> wrapper.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(container); </span><span style="color:#323232;"> </span><span style="color:#0086b3;">document</span><span style="color:#323232;">.body.</span><span style="color:#0086b3;">appendChild</span><span style="color:#323232;">(wrapper); </span><span style="color:#323232;"> } </span><span style="color:#323232;">} </span>