about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--pug/options/reddit/reddit.pug128
-rw-r--r--script.sh2
-rw-r--r--src/assets/javascripts/helpers/common.js39
-rw-r--r--src/assets/javascripts/helpers/reddit.js295
-rw-r--r--src/pages/background/background.js9
-rw-r--r--src/pages/options/general/general.pug (renamed from pug/options/general/general.pug)0
-rw-r--r--src/pages/options/imgur/imgur.pug (renamed from pug/options/imgur/imgur.pug)0
-rw-r--r--src/pages/options/instagram/instagram.pug (renamed from pug/options/instagram/instagram.pug)0
-rw-r--r--src/pages/options/lbry/lbry.pug (renamed from pug/options/lbry/lbry.pug)0
-rw-r--r--src/pages/options/maps/maps.pug (renamed from pug/options/maps/maps.pug)0
-rw-r--r--src/pages/options/medium/medium.pug (renamed from pug/options/medium/medium.pug)0
-rw-r--r--src/pages/options/peertube/peertube.pug (renamed from pug/options/peertube/peertube.pug)0
-rw-r--r--src/pages/options/reddit/reddit.html94
-rw-r--r--src/pages/options/reddit/reddit.js68
-rw-r--r--src/pages/options/reddit/reddit.pug65
-rw-r--r--src/pages/options/search/search.pug (renamed from pug/options/search/search.pug)0
-rw-r--r--src/pages/options/sendTargets/sendTargets.pug (renamed from pug/options/sendTargets/sendTargets.pug)0
-rw-r--r--src/pages/options/tiktok/tiktok.pug (renamed from pug/options/tiktok/tiktok.pug)0
-rw-r--r--src/pages/options/translate/translate.pug (renamed from pug/options/translate/translate.pug)0
-rw-r--r--src/pages/options/twitter/twitter.pug (renamed from pug/options/twitter/twitter.pug)0
-rw-r--r--src/pages/options/wikipedia/wikipedia.pug (renamed from pug/options/wikipedia/wikipedia.pug)0
-rw-r--r--src/pages/options/youtube/youtube.pug (renamed from pug/options/youtube/youtube.pug)0
-rw-r--r--src/pages/options/youtubeMusic/youtubeMusic.pug (renamed from pug/options/youtubeMusic/youtubeMusic.pug)0
-rw-r--r--src/pages/popup/popup.js37
-rw-r--r--src/pages/stylesheets/styles.css11
-rw-r--r--src/pages/widgets/captions_options.pug (renamed from pug/widgets/captions_options.pug)0
-rw-r--r--src/pages/widgets/from-to.pug (renamed from pug/widgets/from-to.pug)0
-rw-r--r--src/pages/widgets/head.pug (renamed from pug/widgets/head.pug)0
-rw-r--r--src/pages/widgets/instances.pug (renamed from pug/widgets/instances.pug)0
-rw-r--r--src/pages/widgets/latency.pug (renamed from pug/widgets/latency.pug)0
-rw-r--r--src/pages/widgets/links.pug (renamed from pug/widgets/links.pug)0
31 files changed, 244 insertions, 504 deletions
diff --git a/pug/options/reddit/reddit.pug b/pug/options/reddit/reddit.pug
deleted file mode 100644
index 1b51ccae..00000000
--- a/pug/options/reddit/reddit.pug
+++ /dev/null
@@ -1,128 +0,0 @@
-doctype html
-html(lang="en")
-    include ../../widgets/head.pug
-        title General
-script(type="module" src="../../../assets/javascripts/localise.js")
-body.option(dir="auto")
-    include ../../widgets/links.pug
-    +links('reddit')
-
-    section.option-block
-        .some-block.option-block
-            h4(data-localise="__MSG_enable__") Enable
-            input#disable-reddit(type="checkbox")
-
-        .some-block.option-block
-            h4#frontend(data-localise="__MSG_frontend__") Frontend
-            select#reddit-frontend
-                option(value="libreddit") Libreddit
-                option(value="teddit") Teddit
-
-        .some-block.option-block
-            h4(data-localise="__MSG_protocol__") Protocol
-            select#protocol
-                option(value="normal" data-localise="__MSG_normal__") Normal
-                option(value="tor" data-localise="__MSG_tor__") Tor
-
-        .some-block.option-block
-            h4(data-localise="__MSG_bypassReddit__") Bypass "Open in Reddit"
-            input#bypass-watch-on-reddit(type="checkbox")
-
-        #libreddit
-            .some-block.option-block
-                h4(data-localise="__MSG_enableCustomSettings__") Enable Custom Settings (will use cookies)
-                input#enable-libreddit-custom-settings(type="checkbox")
-            hr
-            .custom-settings 
-                .some-block.option-block
-                    h2 Appearance
-                .some-block.option-block
-                    h4(data-localise="__MSG_theme__") Theme
-                    select.theme
-                        option(value="system" ) System
-                        option(value="light" ) Light
-                        option(value="dark" ) Dark
-                        option(value="black" ) Black
-                        option(value="dracula" ) Dracula
-                        option(value="nord" ) Nord
-                        option(value="laserwave" ) Laserwave
-                        option(value="violet" ) Violet
-                        option(value="gold" ) Gold
-
-                .some-block.option-block
-                    h2 Interface
-                .some-block.option-block
-                    h4(data-localise="__MSG_frontPage__") Front page
-                    select.front_page
-                        option(value="default") Default
-                        option(value="popular") Popular
-                        option(value="all") All
-
-                .some-block.option-block
-                    h4(data-localise="__MSG_frontLayout__") Front Layout
-                    select.layout
-                        option(value="card") Card
-                        option(value="clean") Clean
-                        option(value="compact") Compact
-
-                .some-block.option-block
-                    h4(data-localise="__MSG_wideUI__") Wide UI
-                    input.wide(type="checkbox")
-
-                .some-block.option-block
-                    h2 Content
-                .some-block.option-block
-                    h4(data-localise="__MSG_defaultSubredditPostSort__") Default subreddit post sort
-                    select.post_sort
-                        option(value="hot") Hot
-                        option(value="new") New
-                        option(value="top") Top
-                        option(value="rising") Rising
-                        option(value="controversial") Controversial
-                
-                .some-block.option-block
-                    h4(data-localise="__MSG_defaultCommentSort__") Default comment sort
-                    select.comment_sort
-                        option(value="confidence") Confidence
-                        option(value="top") Top
-                        option(value="new") New
-                        option(value="controversial") Controversial
-                        option(value="old") Old
-
-                .some-block.option-block
-                    h4(data-localise="__MSG_showNsfwPosts__") Show NSFW posts
-                    input.show_nsfw(type="checkbox")
-
-                .some-block.option-block
-                    h4(data-localise="__MSG_autoplayVideos__") Autoplay videos
-                    input.autoplay_videos(type="checkbox")
-
-                .some-block.option-block
-                    h4(data-localise="__MSG_useHlsForVideos__") Use HLS for videos
-                    input.use_hls(type="checkbox")
-
-                .some-block.option-block
-                    h4(data-localise="__MSG_hideNotificationAboutPossibleHlsUsage__") Hide notification about possible HLS usage
-                    input.hide_hls_notification(type="checkbox")
-
-            .normal
-                include ../../widgets/instances.pug
-                +instances('https://libreddit.com')
-                include ../../widgets/latency.pug
-                +latency('libreddit')
-            .tor
-                include ../../widgets/instances.pug
-                +instances('https://libreddit.onion')
-
-        #teddit
-            hr
-            .normal
-                include ../../widgets/instances.pug
-                +instances('https://teddit.com')
-                +latency('teddit')
-            .tor
-                include ../../widgets/instances.pug
-                +instances('https://teddit.onion')
-
-    script(type="module" src="../init.js")
-    script(type="module" src="./reddit.js")
\ No newline at end of file
diff --git a/script.sh b/script.sh
index 10746503..6856920c 100644
--- a/script.sh
+++ b/script.sh
@@ -1 +1 @@
-pug ./pug/options/ -o ./src/pages/options/ -P -w
\ No newline at end of file
+pug ./src/pages/options/ -P -w
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 7b3a20a5..f0da54c9 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -128,7 +128,6 @@ async function processDefaultCustomInstances(
 
   async function getFromStorage() {
     return new Promise(async resolve => {
-
       browser.storage.local.get(
         [
           redirectsChecks,
@@ -158,16 +157,6 @@ async function processDefaultCustomInstances(
     if (nameDefaultRedirects.length == 0) isTrue = false;
     nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue;
   }
-
-  async function setRedirectsChecks(val) {
-    await browser.storage.local.set({ [redirectsChecks]: val });
-  }
-
-  async function setCustom(val) {
-    await browser.storage.local.set({ [customRedirects]: val });
-  }
-
-
   nameCheckListElement.innerHTML =
     [
       `<div>
@@ -182,7 +171,10 @@ async function processDefaultCustomInstances(
           let latencyLimit = (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms')
           let latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : '';
 
-          return `<div><x><a href="${x}" target="_blank">${x}</a>${cloudflare} ${latency}</x><input type="checkbox" class="${x}"/></div>`;
+          return `<div>
+                    <x><a href="${x}" target="_blank">${x}</a>${cloudflare} ${latency}</x>
+                    <input type="checkbox" class="${x}"/>
+                  </div>`;
         }
       ),
     ].join('\n<hr>\n');
@@ -196,7 +188,7 @@ async function processDefaultCustomInstances(
     else
       nameDefaultRedirects = [];
 
-    await setRedirectsChecks(nameDefaultRedirects);
+    await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
     calcNameCheckBoxes();
   });
 
@@ -209,7 +201,7 @@ async function processDefaultCustomInstances(
           let index = nameDefaultRedirects.indexOf(element.className);
           if (index > -1) nameDefaultRedirects.splice(index, 1);
         }
-        await setRedirectsChecks(nameDefaultRedirects);
+        await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
         calcNameCheckBoxes();
       });
   }
@@ -229,16 +221,16 @@ async function processDefaultCustomInstances(
       ).join('\n');
 
     for (const item of nameCustomInstances) {
-      nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", () => {
+      nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
         let index = nameCustomInstances.indexOf(item);
         if (index > -1) nameCustomInstances.splice(index, 1);
-        setCustom(nameCustomInstances);
+        await browser.storage.local.set({ [customRedirects]: nameCustomInstances });
         calcNameCustomInstances();
       });
     }
   }
   calcNameCustomInstances();
-  nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", event => {
+  nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", async event => {
     event.preventDefault();
     let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName('custom-instance')[0];
     let url = new URL(nameCustomInstanceInput.value);
@@ -246,7 +238,7 @@ async function processDefaultCustomInstances(
     if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) {
       if (!nameCustomInstances.includes(protocolHostVar)) {
         nameCustomInstances.push(protocolHostVar)
-        setCustom(nameCustomInstances);
+        await browser.storage.local.set({ [customRedirects]: nameCustomInstances });
         nameCustomInstanceInput.value = '';
       }
       calcNameCustomInstances();
@@ -298,6 +290,16 @@ async function testLatency(element, instances) {
     resolve(myList);
   })
 }
+
+function copyCookie(targetUrl, url, name) {
+  browser.cookies.get(
+    { url: protocolHost(targetUrl), name: name },
+    r => {
+      if (r) browser.cookies.set({ url: url, name: name, value: r.value })
+    }
+  )
+}
+
 export default {
   getRandomInstance,
   updateInstances,
@@ -305,4 +307,5 @@ export default {
   processDefaultCustomInstances,
   isRtl,
   testLatency,
+  copyCookie
 }
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index 7c123797..04ac2a4b 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -39,14 +39,14 @@ function setLibredditRedirects(val) {
       var index = libredditNormalRedirectsChecks.indexOf(item);
       if (index !== -1) libredditNormalRedirectsChecks.splice(index, 1);
     }
-  setLibredditNormalRedirectsChecks(libredditNormalRedirectsChecks);
+  browser.storage.local.set({ libredditNormalRedirectsChecks })
 
   for (const item of libredditTorRedirectsChecks)
     if (!redirects.libreddit.normal.includes(item)) {
       var index = libredditTorRedirectsChecks.indexOf(item);
       if (index !== -1) libredditTorRedirectsChecks.splice(index, 1);
     }
-  setLibredditTorRedirectsChecks(libredditTorRedirectsChecks);
+  browser.storage.local.set({ libredditTorRedirectsChecks })
 }
 
 function setTedditRedirects(val) {
@@ -58,79 +58,25 @@ function setTedditRedirects(val) {
       var index = tedditNormalRedirectsChecks.indexOf(item);
       if (index !== -1) tedditNormalRedirectsChecks.splice(index, 1);
     }
-  setTedditNormalRedirectsChecks(tedditNormalRedirectsChecks);
+  browser.storage.local.set({ tedditNormalRedirectsChecks })
 
   for (const item of tedditTorRedirectsChecks)
     if (!redirects.teddit.normal.includes(item)) {
       var index = tedditTorRedirectsChecks.indexOf(item);
       if (index !== -1) tedditTorRedirectsChecks.splice(index, 1);
     }
-  setTedditTorRedirectsChecks(tedditTorRedirectsChecks);
+  browser.storage.local.set({ tedditTorRedirectsChecks })
 }
 
 let libredditNormalRedirectsChecks;
-const getLibredditNormalRedirectsChecks = () => libredditNormalRedirectsChecks;
-function setLibredditNormalRedirectsChecks(val) {
-  libredditNormalRedirectsChecks = val;
-  browser.storage.local.set({ libredditNormalRedirectsChecks })
-  console.log("libredditNormalRedirectsChecks: ", val)
-}
-
 let libredditTorRedirectsChecks;
-const getLibredditTorRedirectsChecks = () => libredditTorRedirectsChecks;
-function setLibredditTorRedirectsChecks(val) {
-  libredditTorRedirectsChecks = val;
-  browser.storage.local.set({ libredditTorRedirectsChecks })
-  console.log("libredditTorRedirectsChecks: ", val)
-}
-
 let libredditNormalCustomRedirects = [];
-const getLibredditNormalCustomRedirects = () => libredditNormalCustomRedirects;
-function setLibredditNormalCustomRedirects(val) {
-  libredditNormalCustomRedirects = val;
-  browser.storage.local.set({ libredditNormalCustomRedirects })
-  console.log("libredditNormalCustomRedirects: ", val)
-}
-
 let libredditTorCustomRedirects = [];
-const getLibredditTorCustomRedirects = () => libredditTorCustomRedirects;
-function setLibredditTorCustomRedirects(val) {
-  libredditTorCustomRedirects = val;
-  browser.storage.local.set({ libredditTorCustomRedirects })
-  console.log("libredditTorCustomRedirects: ", val)
-}
 
 let tedditNormalRedirectsChecks;
-const getTedditNormalRedirectsChecks = () => tedditNormalRedirectsChecks;
-function setTedditNormalRedirectsChecks(val) {
-  tedditNormalRedirectsChecks = val;
-  browser.storage.local.set({ tedditNormalRedirectsChecks })
-  console.log("tedditNormalRedirectsChecks: ", val)
-}
-
 let tedditTorRedirectsChecks;
-const getTedditTorRedirectsChecks = () => tedditTorRedirectsChecks;
-function setTedditTorRedirectsChecks(val) {
-  tedditTorRedirectsChecks = val;
-  browser.storage.local.set({ tedditTorRedirectsChecks })
-  console.log("tedditTorRedirectsChecks: ", val)
-}
-
 let tedditNormalCustomRedirects = [];
-const getTedditNormalCustomRedirects = () => tedditNormalCustomRedirects;
-function setTedditNormalCustomRedirects(val) {
-  tedditNormalCustomRedirects = val;
-  browser.storage.local.set({ tedditNormalCustomRedirects })
-  console.log("tedditNormalCustomRedirects: ", val)
-}
-
 let tedditTorCustomRedirects = [];
-const getTedditTorCustomRedirects = () => tedditTorCustomRedirects;
-function setTedditTorCustomRedirects(val) {
-  tedditTorCustomRedirects = val;
-  browser.storage.local.set({ tedditTorCustomRedirects })
-  console.log("tedditTorCustomRedirects: ", val)
-}
 
 const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
 
@@ -145,54 +91,49 @@ let frontend;
 let protocol;
 let bypassWatchOnReddit;
 
-let enableCustom;
-
-let theme;
-let front_page;
-let layout;
-let wide;
-let post_sort;
-let comment_sort;
-let show_nsfw;
-let autoplay_videos;
-let use_hls;
-let hide_hls_notification;
-
-function initLibredditCookies() {
-  if (enableCustom) {
-    let checkedInstances;
-    if (protocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
-    else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
-
-    for (const instance of checkedInstances) {
-      browser.cookies.set({ url: instance, name: "theme", value: theme })
-      browser.cookies.set({ url: instance, name: "front_page", value: front_page })
-      browser.cookies.set({ url: instance, name: "layout", value: layout })
-      browser.cookies.set({ url: instance, name: "wide", value: wide ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "post_sort", value: post_sort })
-      browser.cookies.set({ url: instance, name: "comment_sort", value: comment_sort })
-      browser.cookies.set({ url: instance, name: "show_nsfw", value: show_nsfw ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "autoplay_videos", value: autoplay_videos ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "use_hls", value: use_hls ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "hide_hls_notification", value: hide_hls_notification ? 'on' : 'off' })
+function initLibredditCookies(targetUrl) {
+  browser.storage.local.get(
+    [
+      "redditProtocol",
+      "libredditNormalRedirectsChecks",
+      "libredditNormalCustomRedirects",
+      "libredditTorRedirectsChecks",
+      "libredditTorCustomRedirects",
+    ],
+    r => {
+      let checkedInstances;
+      if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects];
+      else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects];
+
+      for (const instance of checkedInstances) {
+        commonHelper.copyCookie(targetUrl, instance, "theme");
+        commonHelper.copyCookie(targetUrl, instance, "front_page");
+        commonHelper.copyCookie(targetUrl, instance, "layout");
+        commonHelper.copyCookie(targetUrl, instance, "wide");
+        commonHelper.copyCookie(targetUrl, instance, "post_sort");
+        commonHelper.copyCookie(targetUrl, instance, "comment_sort");
+        commonHelper.copyCookie(targetUrl, instance, "show_nsfw");
+        commonHelper.copyCookie(targetUrl, instance, "autoplay_videos");
+        commonHelper.copyCookie(targetUrl, instance, "use_hls");
+        commonHelper.copyCookie(targetUrl, instance, "hide_hls_notification");
+      }
     }
-  }
+  )
 }
+
 function initTedditCookies() {
-  if (enableCustom) {
-    let checkedInstances = [
-      ...tedditNormalRedirectsChecks,
-      ...tedditNormalCustomRedirects,
-      ...tedditTorRedirectsChecks,
-      ...tedditTorCustomRedirects
-    ]
-    for (const instanceUrl of checkedInstances)
-      browser.cookies.set({
-        url: instanceUrl,
-        name: "theme",
-        value: theme == 'dark' ? 'dark' : 'white'
-      })
-  }
+  let checkedInstances = [
+    ...tedditNormalRedirectsChecks,
+    ...tedditNormalCustomRedirects,
+    ...tedditTorRedirectsChecks,
+    ...tedditTorCustomRedirects
+  ]
+  for (const instanceUrl of checkedInstances)
+    browser.cookies.set({
+      url: instanceUrl,
+      name: "theme",
+      value: theme == 'dark' ? 'dark' : 'white'
+    })
 }
 
 let alwaysUsePreferred;
@@ -336,54 +277,76 @@ function reverse(url) {
     return `https://reddit.com${url.pathname}${url.search}`;
 }
 
-function switchInstance(url) {
-  let protocolHost = commonHelper.protocolHost(url);
-
-  let isTeddit = [
-    ...redirects.teddit.normal,
-    ...redirects.teddit.tor
-  ].includes(protocolHost);
-
-  let isLibreddit = [
-    ...redirects.libreddit.normal,
-    ...redirects.libreddit.tor
-  ].includes(protocolHost);
-
-  let redditList = [
-    ...redirects.libreddit.normal,
-    ...redirects.libreddit.tor,
-
-    ...libredditNormalCustomRedirects,
-    ...libredditTorCustomRedirects,
-
-    ...redirects.teddit.normal,
-    ...redirects.teddit.tor,
-
-    ...tedditNormalCustomRedirects,
-    ...tedditTorCustomRedirects,
-  ]
-
-  if (!redditList.includes(protocolHost)) return null;
-
-  let instancesList;
-  if (frontend == 'libreddit') {
-    if (protocol == 'normal') instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
-    else if (protocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
-    if (isTeddit) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
-  }
-  else if (frontend == 'teddit') {
-    if (protocol == 'normal') instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
-    else if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
-    if (isLibreddit) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
-  }
+async function switchInstance(url) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "redditRedirects",
+        "redditFrontend",
+        "redditProtocol",
 
-  let index = instancesList.indexOf(protocolHost);
-  if (index > -1) instancesList.splice(index, 1);
-  if (instancesList.length === 0) return null;
+        "libredditNormalRedirectsChecks",
+        "libredditNormalCustomRedirects",
+        "libredditTorRedirectsChecks",
+        "libredditTorCustomRedirects",
 
-  let randomInstance = commonHelper.getRandomInstance(instancesList);
+        "tedditNormalRedirectsChecks",
+        "tedditNormalCustomRedirects",
+        "tedditTorRedirectsChecks",
+        "tedditTorCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(url);
+        let isTeddit = [
+          ...r.redditRedirects.teddit.normal,
+          ...r.redditRedirects.teddit.tor
+        ].includes(protocolHost);
+
+        let isLibreddit = [
+          ...r.redditRedirects.libreddit.normal,
+          ...r.redditRedirects.libreddit.tor
+        ].includes(protocolHost);
+
+        let redditList = [
+          ...r.redditRedirects.libreddit.normal,
+          ...r.redditRedirects.libreddit.tor,
+
+          ...r.libredditNormalCustomRedirects,
+          ...r.libredditTorCustomRedirects,
+
+          ...r.redditRedirects.teddit.normal,
+          ...r.redditRedirects.teddit.tor,
+
+          ...r.tedditNormalCustomRedirects,
+          ...r.tedditTorCustomRedirects,
+        ]
+
+        if (!redditList.includes(protocolHost)) return null;
+
+        console.log('redditFrontend', r.redditFrontend)
+        let instancesList;
+        if (r.redditFrontend == 'libreddit') {
+          if (r.redditProtocol == 'normal') instancesList = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects];
+          else if (r.redditProtocol == 'tor') instancesList = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects];
+          if (isTeddit) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
+        }
+        else if (r.redditFrontend == 'teddit') {
+          if (r.redditProtocol == 'normal') instancesList = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects];
+          else if (r.redditProtocol == 'tor') instancesList = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects];
+          if (isLibreddit) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
+        }
+
+        let index = instancesList.indexOf(protocolHost);
+        if (index > -1) instancesList.splice(index, 1);
+        if (instancesList.length === 0) return;
+
+        let randomInstance = commonHelper.getRandomInstance(instancesList);
+
+        resolve(`${randomInstance}${url.pathname}${url.search}`)
+      }
+    )
+  })
 
-  return `${randomInstance}${url.pathname}${url.search}`;
 }
 
 async function initDefaults() {
@@ -396,7 +359,7 @@ async function initDefaults() {
       tedditNormalRedirectsChecks = [...redirects.teddit.normal]
       for (const instance of r.cloudflareList) {
         let i;
-        
+
         i = libredditNormalRedirectsChecks.indexOf(instance);
         if (i > -1) libredditNormalRedirectsChecks.splice(i, 1);
 
@@ -459,7 +422,6 @@ async function init() {
         "tedditTorRedirectsChecks",
         "tedditTorCustomRedirects",
 
-
         "redditProtocol",
         "bypassWatchOnReddit",
 
@@ -499,19 +461,6 @@ async function init() {
         tedditTorRedirectsChecks = r.tedditTorRedirectsChecks;
         tedditTorCustomRedirects = r.tedditTorCustomRedirects;
 
-        enableCustom = r.enableLibredditCustomSettings;
-
-        theme = r.redditTheme;
-        front_page = r.redditFrontPage;
-        layout = r.redditLayout;
-        wide = r.redditWide;
-        post_sort = r.redditPostSort;
-        comment_sort = r.redditCommentSort;
-        show_nsfw = r.redditShowNsfw;
-        autoplay_videos = r.redditAutoplayVideos;
-        use_hls = r.redditUseHls;
-        hide_hls_notification = r.redditHideHlsNotification;
-
         resolve();
       }
     );
@@ -531,26 +480,6 @@ export default {
   initLibredditCookies,
   initTedditCookies,
 
-  getLibredditNormalRedirectsChecks,
-  setLibredditNormalRedirectsChecks,
-  getLibredditTorRedirectsChecks,
-  setLibredditTorRedirectsChecks,
-
-  getLibredditNormalCustomRedirects,
-  setLibredditNormalCustomRedirects,
-  getLibredditTorCustomRedirects,
-  setLibredditTorCustomRedirects,
-
-  getTedditNormalRedirectsChecks,
-  setTedditNormalRedirectsChecks,
-  getTedditTorRedirectsChecks,
-  setTedditTorRedirectsChecks,
-
-  getTedditNormalCustomRedirects,
-  setTedditNormalCustomRedirects,
-  getTedditTorCustomRedirects,
-  setTedditTorCustomRedirects,
-
   initLibredditCookies,
 
   redirect,
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 31412117..7bf960c9 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -173,23 +173,14 @@ async function redirectOfflineInstance(url, tabId) {
 
   newUrl = youtubeHelper.switchInstance(url);
   if (!newUrl) newUrl = twitterHelper.switchInstance(url);
-
   if (!newUrl) newUrl = instagramHelper.switchInstance(url);
-
   if (!newUrl) newUrl = redditHelper.switchInstance(url);
-
   if (!newUrl) newUrl = searchHelper.switchInstance(url);
-
   if (!newUrl) newUrl = translateHelper.switchInstance(url);
-
   if (!newUrl) newUrl = mediumHelper.switchInstance(url);
-
   if (!newUrl) newUrl = imgurHelper.switchInstance(url);
-
   if (!newUrl) newUrl = wikipediaHelper.switchInstance(url);
-
   if (!newUrl) newUrl = peertubeHelper.switchInstance(url);
-
   if (!newUrl) newUrl = lbryHelper.switchInstance(url);
 
   if (newUrl) {
diff --git a/pug/options/general/general.pug b/src/pages/options/general/general.pug
index b5b46d5f..b5b46d5f 100644
--- a/pug/options/general/general.pug
+++ b/src/pages/options/general/general.pug
diff --git a/pug/options/imgur/imgur.pug b/src/pages/options/imgur/imgur.pug
index f195ca66..f195ca66 100644
--- a/pug/options/imgur/imgur.pug
+++ b/src/pages/options/imgur/imgur.pug
diff --git a/pug/options/instagram/instagram.pug b/src/pages/options/instagram/instagram.pug
index 6e1ef19a..6e1ef19a 100644
--- a/pug/options/instagram/instagram.pug
+++ b/src/pages/options/instagram/instagram.pug
diff --git a/pug/options/lbry/lbry.pug b/src/pages/options/lbry/lbry.pug
index aca0d489..aca0d489 100644
--- a/pug/options/lbry/lbry.pug
+++ b/src/pages/options/lbry/lbry.pug
diff --git a/pug/options/maps/maps.pug b/src/pages/options/maps/maps.pug
index 2da94a43..2da94a43 100644
--- a/pug/options/maps/maps.pug
+++ b/src/pages/options/maps/maps.pug
diff --git a/pug/options/medium/medium.pug b/src/pages/options/medium/medium.pug
index f5b698d2..f5b698d2 100644
--- a/pug/options/medium/medium.pug
+++ b/src/pages/options/medium/medium.pug
diff --git a/pug/options/peertube/peertube.pug b/src/pages/options/peertube/peertube.pug
index d9b25bbc..d9b25bbc 100644
--- a/pug/options/peertube/peertube.pug
+++ b/src/pages/options/peertube/peertube.pug
diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html
index 6fa9090d..e3fc40d9 100644
--- a/src/pages/options/reddit/reddit.html
+++ b/src/pages/options/reddit/reddit.html
@@ -78,92 +78,22 @@
       <input id="bypass-watch-on-reddit" type="checkbox">
     </div>
     <div id="libreddit">
+      <hr>
       <div class="some-block option-block">
-        <h4 data-localise="__MSG_enableCustomSettings__">Enable Custom Settings (will use cookies)</h4>
-        <input id="enable-libreddit-custom-settings" type="checkbox">
+        <h4>Unify cookies across selected instances</h4>
       </div>
-      <hr>
-      <div class="custom-settings"> 
-        <div class="some-block option-block">
-          <h2>Appearance</h2>
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_theme__">Theme</h4>
-          <select class="theme">
-            <option value="system">System</option>
-            <option value="light">Light</option>
-            <option value="dark">Dark</option>
-            <option value="black">Black</option>
-            <option value="dracula">Dracula</option>
-            <option value="nord">Nord</option>
-            <option value="laserwave">Laserwave</option>
-            <option value="violet">Violet</option>
-            <option value="gold">Gold</option>
-          </select>
-        </div>
-        <div class="some-block option-block">
-          <h2>Interface</h2>
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_frontPage__">Front page</h4>
-          <select class="front_page">
-            <option value="default">Default</option>
-            <option value="popular">Popular</option>
-            <option value="all">All</option>
-          </select>
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_frontLayout__">Front Layout</h4>
-          <select class="layout">
-            <option value="card">Card</option>
-            <option value="clean">Clean</option>
-            <option value="compact">Compact</option>
-          </select>
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_wideUI__">Wide UI</h4>
-          <input class="wide" type="checkbox">
-        </div>
+      <form>
         <div class="some-block option-block">
-          <h2>Content</h2>
+          <input type="url" placeholder="https://libreddit.com">
+          <button class="add" type="submit">
+            <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
+              <rect fill="none" height="24" width="24"></rect>
+              <path d="M18,2H9C7.9,2,7,2.9,7,4v12c0,1.1,0.9,2,2,2h9c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,16H9V4h9V16z M3,15v-2h2v2H3z M3,9.5h2v2H3V9.5z M10,20h2v2h-2V20z M3,18.5v-2h2v2H3z M5,22c-1.1,0-2-0.9-2-2h2V22z M8.5,22h-2v-2h2V22z M13.5,22L13.5,22l0-2h2 v0C15.5,21.1,14.6,22,13.5,22z M5,6L5,6l0,2H3v0C3,6.9,3.9,6,5,6z"></path>
+            </svg>
+          </button>
         </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_defaultSubredditPostSort__">Default subreddit post sort</h4>
-          <select class="post_sort">
-            <option value="hot">Hot</option>
-            <option value="new">New</option>
-            <option value="top">Top</option>
-            <option value="rising">Rising</option>
-            <option value="controversial">Controversial</option>
-          </select>
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_defaultCommentSort__">Default comment sort</h4>
-          <select class="comment_sort">
-            <option value="confidence">Confidence</option>
-            <option value="top">Top</option>
-            <option value="new">New</option>
-            <option value="controversial">Controversial</option>
-            <option value="old">Old</option>
-          </select>
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_showNsfwPosts__">Show NSFW posts</h4>
-          <input class="show_nsfw" type="checkbox">
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_autoplayVideos__">Autoplay videos</h4>
-          <input class="autoplay_videos" type="checkbox">
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_useHlsForVideos__">Use HLS for videos</h4>
-          <input class="use_hls" type="checkbox">
-        </div>
-        <div class="some-block option-block">
-          <h4 data-localise="__MSG_hideNotificationAboutPossibleHlsUsage__">Hide notification about possible HLS usage</h4>
-          <input class="hide_hls_notification" type="checkbox">
-        </div>
-      </div>
+      </form>
+      <hr>
       <div class="normal">
                 <div class="some-block option-block">
                   <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js
index 475f8b61..65ad284c 100644
--- a/src/pages/options/reddit/reddit.js
+++ b/src/pages/options/reddit/reddit.js
@@ -3,49 +3,31 @@ import commonHelper from "../../../assets/javascripts/helpers/common.js";
 
 let libredditDivElement = document.getElementById("libreddit")
 let tedditDivElement = document.getElementById("teddit")
-let enableLibredditSettingsElement = document.getElementById("enable-libreddit-custom-settings");
-let customSettingsDivElement = document.getElementsByClassName("custom-settings");
 
 let disableRedditElement = document.getElementById("disable-reddit");
 let redditFrontendElement = document.getElementById("reddit-frontend");
 let protocolElement = document.getElementById("protocol")
 let bypassWatchOnRedditElement = document.getElementById("bypass-watch-on-reddit")
 
-let theme = document.getElementById('libreddit').getElementsByClassName('theme')[0];
-let front_page = document.getElementById('libreddit').getElementsByClassName('front_page')[0];
-let layout = document.getElementById('libreddit').getElementsByClassName('layout')[0];
-let wide = document.getElementById('libreddit').getElementsByClassName('wide')[0];
-let post_sort = document.getElementById('libreddit').getElementsByClassName('post_sort')[0];
-let comment_sort = document.getElementById('libreddit').getElementsByClassName('comment_sort')[0];
-let show_nsfw = document.getElementById('libreddit').getElementsByClassName('show_nsfw')[0];
-let autoplay_videos = document.getElementById('libreddit').getElementsByClassName('autoplay_videos')[0];
-let use_hls = document.getElementById('libreddit').getElementsByClassName('use_hls')[0];
-let hide_hls_notification = document.getElementById('libreddit').getElementsByClassName('hide_hls_notification')[0];
-
 document.addEventListener("change", async () => {
     await browser.storage.local.set({
         disableReddit: !disableRedditElement.checked,
         bypassWatchOnReddit: bypassWatchOnRedditElement.checked,
         redditProtocol: protocolElement.value,
         redditFrontend: redditFrontendElement.value,
-
-        enableLibredditCustomSettings: enableLibredditSettingsElement.checked,
-
-        redditTheme: theme.value,
-        redditFrontPage: front_page.value,
-        redditLayout: layout.value,
-        redditWide: wide.checked,
-        redditPostSort: post_sort.value,
-        redditCommentSort: comment_sort.value,
-        redditShowNsfw: show_nsfw.checked,
-        redditAutoplayVideos: autoplay_videos.checked,
-        redditUseHls: use_hls.checked,
-        redditHideHlsNotification: hide_hls_notification.checked,
     });
     changeFrontendsSettings(redditFrontendElement.value);
     changeProtocolSettings(protocolElement.value);
 })
 
+const libredditForm = libredditDivElement.getElementsByTagName('form')[0];
+const libredditCookies = libredditForm.getElementsByTagName('input')[0];
+libredditForm.addEventListener('submit', async event => {
+    event.preventDefault();
+    const url = new URL(libredditCookies.value);
+    redditHelper.initLibredditCookies(url);
+})
+
 function changeProtocolSettings(protocol) {
     let normalLibredditDiv = libredditDivElement.getElementsByClassName("normal")[0];
     let torLibredditDiv = libredditDivElement.getElementsByClassName("tor")[0];
@@ -64,10 +46,6 @@ function changeProtocolSettings(protocol) {
         torTedditDiv.style.display = 'block';
         torLibredditDiv.style.display = 'block';
     }
-    if (enableLibredditSettingsElement.checked)
-        for (const item of customSettingsDivElement) item.style.display = 'block';
-    else
-        for (const item of customSettingsDivElement) item.style.display = 'none';
 }
 function changeFrontendsSettings(frontend) {
     let frontendElement = document.getElementById("frontend");
@@ -96,37 +74,14 @@ browser.storage.local.get(
         "redditFrontend",
 
         "enableLibredditCustomSettings",
-
-        "redditTheme",
-        "redditFrontPage",
-        "redditLayout",
-        "redditWide",
-        "redditPostSort",
-        "redditCommentSort",
-        "redditShowNsfw",
-        "redditAutoplayVideos",
-        "redditUseHls",
-        "redditHideHlsNotification",
     ],
     r => {
         disableRedditElement.checked = !r.disableReddit
         bypassWatchOnRedditElement.checked = r.bypassWatchOnReddit
         protocolElement.value = r.redditProtocol
         redditFrontendElement.value = r.redditFrontend
-        enableLibredditSettingsElement.checked = r.enableLibredditCustomSettings
         changeFrontendsSettings(r.redditFrontend);
         changeProtocolSettings(r.redditProtocol);
-
-        theme.value = r.redditTheme;
-        front_page.value = r.redditFrontPage;
-        layout.value = r.redditLayout;
-        wide.checked = r.redditWide;
-        post_sort.value = r.redditPostSort;
-        comment_sort.value = r.redditCommentSort;
-        show_nsfw.checked = r.redditShowNsfw;
-        autoplay_videos.checked = r.redditAutoplayVideos;
-        use_hls.checked = r.redditUseHls;
-        hide_hls_notification.checked = r.redditHideHlsNotification;
     }
 )
 
@@ -172,9 +127,4 @@ latencyTedditElement.addEventListener("click",
             latencyTedditElement.removeEventListener("click", reloadWindow);
         });
     }
-);
-
-window.onblur = () => {
-    redditHelper.initLibredditCookies();
-    redditHelper.initTedditCookies();
-}
\ No newline at end of file
+);
\ No newline at end of file
diff --git a/src/pages/options/reddit/reddit.pug b/src/pages/options/reddit/reddit.pug
new file mode 100644
index 00000000..7262a7f4
--- /dev/null
+++ b/src/pages/options/reddit/reddit.pug
@@ -0,0 +1,65 @@
+doctype html
+html(lang="en")
+    include ../../widgets/head.pug
+        title General
+script(type="module" src="../../../assets/javascripts/localise.js")
+body.option(dir="auto")
+    include ../../widgets/links.pug
+    +links('reddit')
+
+    section.option-block
+        .some-block.option-block
+            h4(data-localise="__MSG_enable__") Enable
+            input#disable-reddit(type="checkbox")
+
+        .some-block.option-block
+            h4#frontend(data-localise="__MSG_frontend__") Frontend
+            select#reddit-frontend
+                option(value="libreddit") Libreddit
+                option(value="teddit") Teddit
+
+        .some-block.option-block
+            h4(data-localise="__MSG_protocol__") Protocol
+            select#protocol
+                option(value="normal" data-localise="__MSG_normal__") Normal
+                option(value="tor" data-localise="__MSG_tor__") Tor
+
+        .some-block.option-block
+            h4(data-localise="__MSG_bypassReddit__") Bypass "Open in Reddit"
+            input#bypass-watch-on-reddit(type="checkbox")
+
+        #libreddit
+            hr
+            .some-block.option-block
+                h4 Unify cookies across selected instances
+            form
+                .some-block.option-block
+                    input(type="url" placeholder="https://libreddit.com")
+                    button.add(type="submit")
+                        svg(xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
+                            rect(fill="none" height="24" width="24")
+                            path(d="M18,2H9C7.9,2,7,2.9,7,4v12c0,1.1,0.9,2,2,2h9c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,16H9V4h9V16z M3,15v-2h2v2H3z M3,9.5h2v2H3V9.5z M10,20h2v2h-2V20z M3,18.5v-2h2v2H3z M5,22c-1.1,0-2-0.9-2-2h2V22z M8.5,22h-2v-2h2V22z M13.5,22L13.5,22l0-2h2 v0C15.5,21.1,14.6,22,13.5,22z M5,6L5,6l0,2H3v0C3,6.9,3.9,6,5,6z")
+
+            hr
+
+            .normal
+                include ../../widgets/instances.pug
+                +instances('https://libreddit.com')
+                include ../../widgets/latency.pug
+                +latency('libreddit')
+            .tor
+                include ../../widgets/instances.pug
+                +instances('https://libreddit.onion')
+
+        #teddit
+            hr
+            .normal
+                include ../../widgets/instances.pug
+                +instances('https://teddit.com')
+                +latency('teddit')
+            .tor
+                include ../../widgets/instances.pug
+                +instances('https://teddit.onion')
+
+    script(type="module" src="../init.js")
+    script(type="module" src="./reddit.js")
\ No newline at end of file
diff --git a/pug/options/search/search.pug b/src/pages/options/search/search.pug
index 78825611..78825611 100644
--- a/pug/options/search/search.pug
+++ b/src/pages/options/search/search.pug
diff --git a/pug/options/sendTargets/sendTargets.pug b/src/pages/options/sendTargets/sendTargets.pug
index 3017fa87..3017fa87 100644
--- a/pug/options/sendTargets/sendTargets.pug
+++ b/src/pages/options/sendTargets/sendTargets.pug
diff --git a/pug/options/tiktok/tiktok.pug b/src/pages/options/tiktok/tiktok.pug
index 31ae18df..31ae18df 100644
--- a/pug/options/tiktok/tiktok.pug
+++ b/src/pages/options/tiktok/tiktok.pug
diff --git a/pug/options/translate/translate.pug b/src/pages/options/translate/translate.pug
index f6a192c4..f6a192c4 100644
--- a/pug/options/translate/translate.pug
+++ b/src/pages/options/translate/translate.pug
diff --git a/pug/options/twitter/twitter.pug b/src/pages/options/twitter/twitter.pug
index 230aefd1..230aefd1 100644
--- a/pug/options/twitter/twitter.pug
+++ b/src/pages/options/twitter/twitter.pug
diff --git a/pug/options/wikipedia/wikipedia.pug b/src/pages/options/wikipedia/wikipedia.pug
index 54ca8730..54ca8730 100644
--- a/pug/options/wikipedia/wikipedia.pug
+++ b/src/pages/options/wikipedia/wikipedia.pug
diff --git a/pug/options/youtube/youtube.pug b/src/pages/options/youtube/youtube.pug
index be88aac8..be88aac8 100644
--- a/pug/options/youtube/youtube.pug
+++ b/src/pages/options/youtube/youtube.pug
diff --git a/pug/options/youtubeMusic/youtubeMusic.pug b/src/pages/options/youtubeMusic/youtubeMusic.pug
index 10d2deef..10d2deef 100644
--- a/pug/options/youtubeMusic/youtubeMusic.pug
+++ b/src/pages/options/youtubeMusic/youtubeMusic.pug
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index f6dab091..e3f52baf 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -104,7 +104,7 @@ document.getElementById("more-options").addEventListener("click",
 );
 
 function switchInstance() {
-  browser.tabs.query({ active: true, currentWindow: true }, function (tabs) {
+  browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
     let currTab = tabs[0];
     if (currTab) {
       let url = currTab.url;
@@ -113,29 +113,18 @@ function switchInstance() {
       catch (_) { return false; }
       let newUrl;
 
-      newUrl = youtubeHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = twitterHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = instagramHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = redditHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = searchHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = translateHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = mediumHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = sendTargetsHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = peertubeHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = lbryHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = imgurHelper.switchInstance(tabUrl);
-
-      if (!newUrl) newUrl = wikipediaHelper.switchInstance(tabUrl);
+      // newUrl = youtubeHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = twitterHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = instagramHelper.switchInstance(tabUrl);
+      if (!newUrl) newUrl = await redditHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = searchHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = translateHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = mediumHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = sendTargetsHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = peertubeHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = lbryHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = imgurHelper.switchInstance(tabUrl);
+      // if (!newUrl) newUrl = wikipediaHelper.switchInstance(tabUrl);
 
       if (newUrl) {
         browser.tabs.update({ url: newUrl });
diff --git a/src/pages/stylesheets/styles.css b/src/pages/stylesheets/styles.css
index 8b2718cd..c1c2a53f 100644
--- a/src/pages/stylesheets/styles.css
+++ b/src/pages/stylesheets/styles.css
@@ -444,4 +444,15 @@ section.general div {
 
 #customize-popup {
   width: 250px;
+}
+
+button {
+  background-color:transparent;
+  color: var(--text);
+  border: none;
+  padding: 10px 5px;
+  text-decoration: none;
+  display: inline-block;
+  cursor: pointer;
+  border-radius: 5px;
 }
\ No newline at end of file
diff --git a/pug/widgets/captions_options.pug b/src/pages/widgets/captions_options.pug
index 51d18d62..51d18d62 100644
--- a/pug/widgets/captions_options.pug
+++ b/src/pages/widgets/captions_options.pug
diff --git a/pug/widgets/from-to.pug b/src/pages/widgets/from-to.pug
index 9140e094..9140e094 100644
--- a/pug/widgets/from-to.pug
+++ b/src/pages/widgets/from-to.pug
diff --git a/pug/widgets/head.pug b/src/pages/widgets/head.pug
index 53de42d3..53de42d3 100644
--- a/pug/widgets/head.pug
+++ b/src/pages/widgets/head.pug
diff --git a/pug/widgets/instances.pug b/src/pages/widgets/instances.pug
index 950bd46b..950bd46b 100644
--- a/pug/widgets/instances.pug
+++ b/src/pages/widgets/instances.pug
diff --git a/pug/widgets/latency.pug b/src/pages/widgets/latency.pug
index 0069ca74..0069ca74 100644
--- a/pug/widgets/latency.pug
+++ b/src/pages/widgets/latency.pug
diff --git a/pug/widgets/links.pug b/src/pages/widgets/links.pug
index 8daf48ba..8daf48ba 100644
--- a/pug/widgets/links.pug
+++ b/src/pages/widgets/links.pug