Description

Lemmy Universal Link Switcher, or LULs for short, scans all links on all websites, and if any link points to a Lemmy instance that is not your main/home instance, it rewrites the link so that it instead points to your main instance. Currently only works for community/user links.

Home Instance Setup

Simply visit the Lemmy instance you want to set as your home while the script is active. You will be asked if you want to set this instance to your home instance:
home

If you initially set your home instance wrong or just want to change it, no worries - simply go to your settings on your new home instance and press the button for it!
settings

Features

  • Rewrite all links of communities or users on all websites everywhere to your new instance! The rewritten links will have an icon next to it, and hovering/touching the icon will show you the original link, allowing you to go there if you want to.
    rewrite

  • If you are already on a page that has a corresponding page on your home instance, a link will automatically be added to the page header.
    redirect

Coming soon

  • Post & comment links. Those are a bit harder because the URL has to be requested from the instances.

Repository & Issues

  • Azzu@feddit.deOP
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    1 year ago

    Also works on Android on Firefox with TamperMonkey, that’s what I’m mainly using it on. Also only tested it on Firefox, no idea about Chrome or anything else.

  • Zamboniman@lemmy.ca
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    1 year ago

    I installed it on Firefox with Greasemonkey. I don’t get the dialog asking if I want to set my instance to my home instance, and I have no button in my settings. So, at the moment, the script appears to be inoperative.

    Edit: Tried a few more things. I visited several other instances, other than my home instance of lemmy.ca, and still don’t get any dialog about setting an instance to my home instance. Greasemonkey shows the script as enabled, but that’s it. I’m running Firefox 114.0.2 on Arch Linux.

    Edit2: Attempted to post an issue at the referenced Gitlab page, but this page does not exist, and a search for this project was a dead end. I have disabled the script until/unless the authors provide more information as to what is going on.

    Edit3: Found the Gitlab project. The provided URL on the Greasyfork page is incorrect. It should be https://gitlab.com/foundry-azzurite/lemmy-rewrite-links

    I will leave an issue.

    • Azzu@feddit.deOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      1 year ago

      Need to get a bit of feedback from you.

      Any errors in the browser console (F12 by default)? So go to lemmy.ca, press F12, make sure the console is open, refresh, look for red error messages. If there are, copy them to me.

              • Zamboniman@lemmy.ca
                link
                fedilink
                English
                arrow-up
                1
                ·
                edit-2
                1 year ago

                Got the ‘home instance’ dialog this time. Briefly checked it out, some of the links seem to be now directed towards my home instance, but there are no icons beside any link to show the original link as indicated in the description above.

                Edit: Noticed the following error in the console:

                Source map error: Error: URL constructor: tippy-bundle.umd.min.js.map is not a valid URL. Resource URL: user-script:http%3A//azzurite.tv//Lemmy%20-%20Rewrite%20Links%20to%20Home%20Instance Source Map URL: tippy-bundle.umd.min.js.map

                • Azzu@feddit.deOP
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  edit-2
                  1 year ago

                  That error’s irrelevant. Can you check that you have version 1.0.2 not 1.0.1?

  • –Phase–@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    This is amazing! Just what I’ve been looking for, at least until this gets implemented into the site itself. Thanks a lot for making and sharing this.

  • wmrch@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    This works great for me on lemmy instances! However, it doesn’t seem to work on kbin.social (it is included in const INSTANCES_KBIN). Would be great if this was working on kbin instances too!

      • Someology@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        Assuming you are logged in to the website, couldn’t the website just check to see where you’re logged in to? Seems like a cookie might be able to do that (if the user gave permission)?

        • Azzu@feddit.deOP
          link
          fedilink
          English
          arrow-up
          4
          ·
          edit-2
          1 year ago

          The functionality in this script is indeed only possible as an addon or userscript. Browsers specifically spent a lot of work trying to make it impossible for one site to get any information about which other sites the user visited, and for good reason. Just imagine the phishing this would allow if it were possible.

          That said, there could of course be an official lemmy browser addon/userscript for this functionality. But it definitely wouldn’t be baked into the sites themselves.

          Because idk if you noticed, but this script actually rewrites all links everywhere, so for example even if you get a result to some lemmy instance on duckduckgo, the link on duckduckgo itself will already point to your instance. Please tell me how that would be possible without an addon/userscipt :D

        • weavejester@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          Cookies can only be read by the same domain (or subdomain). So a cookie set by lemmy.ml couldn’t be read by lemmy.world, as their domains are different. This is called the “same-origin policy”, and applies to all forms of local storage in browsers.