Original post, containing the original code @soy@lemmy.world made: https://sh.itjust.works/post/33762
his original message:
For those that use Tampermonkey or GreaseMonkey, here’s a quick script I whipped up that creates a button that redirects communities from other instances to your local instance. If your instance isn’t
lemmy.world
, then change thelocalLemmy
var at the top. Enjoy!
My small fix:
For personal use, I changed localLemmy to sh.itjust.works
because that’s my instance. I also embedded some styles and made it so it’s top right instead of bottom left, and so that it’s red and works better for me. Soy’s original code didn’t work for me so I had to make these small alterations to get it working.
// ==UserScript==
// @name Lemmings Fix
// @version 1.0
// @description Redirect to your local Lemmy instance
// @author @lemmy.world/u/soy
// @match https://*/c/*
// @icon https://join-lemmy.org/static/assets/icons/favicon.svg
// ==/UserScript==
const localLemmy = "sh.itjust.works";
var isLemmy =
document.head.querySelector("[name~=Description][content]").content ===
"Lemmy";
if (isLemmy) {
// Get URL info
var splitUrl = location.href.split("/");
var instanceUrl = splitUrl[2];
var community = splitUrl[4];
var localizedUrl =
"https://" + localLemmy + "/c/" + community + "@" + instanceUrl;
// Create redirect button if not on local
if (instanceUrl !== localLemmy) {
var zNode = document.createElement("div");
zNode.innerHTML = "Open in local instance";
zNode.setAttribute("id", "localizeContainer");
// add styles to the button embedded
zNode.setAttribute(
"style",
"cursor: pointer; padding: 16px; background-color: red; border-radius: 10%; border-width: 3px; border-style: solid; padding: 3px; z-index: 10;max-width:200px;position:fixed;top:0;right:0;"
);
zNode.addEventListener("click", onLocalize);
document.body.appendChild(zNode);
}
}
function onLocalize() {
window.location.replace(localizedUrl);
}
I’ve adapted it to work on kbin - let me know if anyone finds any issues
// ==UserScript==
// @name kbin lemmy redirect
// @version 1.0
// @description Redirect kbin to your local Lemmy instance
// @author @flauschke@feddit.de
// @match https://*/m/*
// @icon https://join-lemmy.org/static/assets/icons/favicon.svg
// ==/UserScript==
// best effort guess
const isKbin = typeof KBIN_USER !== 'undefined' && typeof KBIN_MAGAZINE !== 'undefined';
if (isKbin) {
// Get URL info
const localLemmy = "feddit.de";
const splitUrl = location.href.split("/");
const instanceUrl = splitUrl[2];
const community = splitUrl[4];
const localizedUrl = "https://" + localLemmy + "/c/" + community + "@" + instanceUrl;
// Create redirect button if not on local
if (instanceUrl !== localLemmy) {
const wrapper = document.createElement("div");
wrapper.setAttribute("style", "width: 100%;position: fixed;top: 0;")
const container = document.createElement("div");
container.setAttribute("style", "position:relative;max-width: 1650px;width: 100%;margin: 0 auto;")
const zNode = document.createElement("button");
zNode.innerText = "Open in local instance";
zNode.setAttribute("id", "localizeContainer");
// add styles to the button embedded
zNode.setAttribute(
"style",
"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;"
);
zNode.addEventListener("click", e => window.location.replace(localizedUrl));
container.appendChild(zNode);
wrapper.appendChild(container);
document.body.appendChild(wrapper);
}
}