nice, we had the same idea within about 10 minutes...
edit: uh, it seems to have gone; so i've tried reposting it
This Community is intended for posts about the Lemmy.world server by the admins.
For support with issues at Lemmy.world, go to the Lemmy.world Support community.
Any support requests are best sent to [email protected] e-mail.
If you would like to make a donation to support the cost of running this platform, please do so at the following donation URLs.
If you can, please use / switch to Ko-Fi, it has the lowest fees for us
nice, we had the same idea within about 10 minutes...
edit: uh, it seems to have gone; so i've tried reposting it
I wish lemmy instances had an indicator for if that instance is lemmy instead of using the url.
Henlo buddy, your script didn't work for me, so I fixed it. Works for me now. I also changed lemmy.world
to sh.itjust.works
so beware.
Here's my final one:
// ==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);
}
https://greasyfork.org/en/scripts/468521-lemmings-fix
Threw yours up on greasyfork so people can easily install it, just poke me if you'd like me to take it down so you can put your own up
i tried to upload it to tampermonkey and failed lol. if i knew how i'd do it. i'm always making userscripts and it'd be good to have them all somewhere.
if you're willing could you tell me how to upload a script there?
First you need to sign in or up here:
https://greasyfork.org/en/users/sign_in
Then you need to visit this page and fill out the form, including with the script
ty, i'll add a reminder to check this out 2moro when i'm more awake
Giving this a test now... where does the button show up? I haven't spotted it
Ah nevermind, botton right of the browser window :)
Excellent work!
Hah, just came here to suggest an improvement, but the script has already transformed completely while I was gone :D
If someone wouldn't mind throwing this up on, say, userforks or similar, that would be great.
i made a new userscript for submitting forms with Ctrl + Enter. Is that something you'd find useful?
// ==UserScript==
// @name Lemmy Form Submit with Ctrl+Enter
// @version 1.0
// @description Submit forms with Ctrl+Enter in Lemmy instances so you don't have to click the button every time you want to post something.
// @author God (https://sh.itjust.works/u/god)
// @match https://*/post/*
// @match https://*/comment/*
// @icon https://join-lemmy.org/static/assets/icons/favicon.svg
// ==/UserScript==
var isLemmy =
document.head.querySelector("[name~=Description][content]").content ===
"Lemmy";
if (isLemmy) {
// Define a global variable to keep track of the currently focused textarea.
var currentFocusedTextarea = null;
// Function to attach focus and blur event handlers to all textareas.
function attachEventHandlers() {
document.querySelectorAll("textarea").forEach((textarea) => {
if (!textarea.dataset.ctrlEnterHandled) {
textarea.dataset.ctrlEnterHandled = true;
// Check if this textarea is currently focused
const wasFocused = document.activeElement === textarea;
textarea.addEventListener("focus", function () {
currentFocusedTextarea = this;
});
textarea.addEventListener("blur", function () {
currentFocusedTextarea = null;
});
// If this textarea was focused, blur and re-focus it to ensure event handlers get triggered
if (wasFocused) {
textarea.blur();
textarea.focus();
}
}
});
}
// Attach a keydown event handler to the entire document.
document.addEventListener("keydown", function (event) {
// If Ctrl + Enter is pressed
if (event.ctrlKey && event.key === "Enter") {
// If a textarea is focused and contains text
if (
currentFocusedTextarea &&
currentFocusedTextarea.value.trim() !== ""
) {
// Your submit logic here
handleSubmit(currentFocusedTextarea);
}
}
});
function handleSubmit(textarea) {
// find the closest type="submit" button and press it.
textarea.closest("form").querySelector('[type="submit"]').click();
}
// Call the function initially to cover textareas that exist when the page is first loaded.
attachEventHandlers();
// Observe the document for changes and reattach event handlers when new textareas are added.
const observer = new MutationObserver(function (mutations) {
mutations.forEach((mutation) => {
if (mutation.type === "childList") {
attachEventHandlers();
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
}
i made a new userscript for submitting forms with Ctrl + Enter. Is that something you'd find useful?
// ==UserScript==
// @name Lemmy Form Submit with Ctrl+Enter
// @version 1.0
// @description Submit forms with Ctrl+Enter in Lemmy instances so you don't have to click the button every time you want to post something.
// @author God (https://sh.itjust.works/u/god)
// @match https://*/post/*
// @match https://*/comment/*
// @icon https://join-lemmy.org/static/assets/icons/favicon.svg
// ==/UserScript==
var isLemmy =
document.head.querySelector("[name~=Description][content]").content ===
"Lemmy";
if (isLemmy) {
// Define a global variable to keep track of the currently focused textarea.
var currentFocusedTextarea = null;
// Function to attach focus and blur event handlers to all textareas.
function attachEventHandlers() {
document.querySelectorAll("textarea").forEach((textarea) => {
if (!textarea.dataset.ctrlEnterHandled) {
textarea.dataset.ctrlEnterHandled = true;
// Check if this textarea is currently focused
const wasFocused = document.activeElement === textarea;
textarea.addEventListener("focus", function () {
currentFocusedTextarea = this;
});
textarea.addEventListener("blur", function () {
currentFocusedTextarea = null;
});
// If this textarea was focused, blur and re-focus it to ensure event handlers get triggered
if (wasFocused) {
textarea.blur();
textarea.focus();
}
}
});
}
// Attach a keydown event handler to the entire document.
document.addEventListener("keydown", function (event) {
// If Ctrl + Enter is pressed
if (event.ctrlKey && event.key === "Enter") {
// If a textarea is focused and contains text
if (
currentFocusedTextarea &&
currentFocusedTextarea.value.trim() !== ""
) {
// Your submit logic here
handleSubmit(currentFocusedTextarea);
}
}
});
function handleSubmit(textarea) {
// find the closest type="submit" button and press it.
textarea.closest("form").querySelector('[type="submit"]').click();
}
// Call the function initially to cover textareas that exist when the page is first loaded.
attachEventHandlers();
// Observe the document for changes and reattach event handlers when new textareas are added.
const observer = new MutationObserver(function (mutations) {
mutations.forEach((mutation) => {
if (mutation.type === "childList") {
attachEventHandlers();
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
}