Makeshift Theme Switch

Very simple temporary theme switcher for any page

当前为 2025-03-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Makeshift Theme Switch
  3. // @namespace https://mkps.app/
  4. // @version 1.0.3
  5. // @description Very simple temporary theme switcher for any page
  6. // @author MK
  7. // @license MIT
  8. // @match *://*/*
  9. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJRSURBVHgB1Ve9etMwFD0BBjbCxob6BMDWrWZjwysT7hMkI1vsJ6CMmUjeoB2ZUJ+g6Rto7NZ265aeW0upoji25KRfv57vu5Ed3Z8j6Uq6Bp4Zg1jFsiyHbHLKJ0pGUZSh7b6hLCiGckbdU0Sik4AEHgwGo+VyOfYCdsHQZkabOe1Nm+Lrts6qqkZsZDTfKG8RDyGaUfIsy2611gukEiDzv2x+dQQWx1eUD9hOREgMSeJfNAEGv0A96jZU1PtBx1MGeM/3wxbdQ+oo6p6FHa8agv9m8xnd8BPtJEK/sL63E7BrPkYclPecIQ7jyWSy5n+1C8hOsfkfONaUc8rP4H+HGeotWGBzh2yzFf0DxpMWb7yOSaBoqPT1kd9DXoRLU6AZbbZCVGahlBd/CXJsjmDNKeKhO2xH9mCrCfAlx+YU5nZZ3PLEJGas7dD955bge4MTUbqgg4VVjj0FY21l0NoRUC2OMvRDl+2R/LgcSJnefUH5BFKmd194TMIGyDErZ8QX1Pv2KXDjE/CDaNm48mCTaI6nwalPwHgdKlB8h/3DUCp5cLtAjkyXiMpexXMWFUcsKgqkw6D54JKZvqSchEexTMfIUyxEGBw9Ah/TuY418C+ja+y+Gw66SrAQ/i74g92gU4OHBKSoMOiPc/TAioBNimP0x0f0wFpNyJrNsHaTvMiQDkXbKX3cpRg11YQl+h0+qyt2JwKWRAF7UCRCIRHb7gI3E5ITBvFYIBGtX0byRcN1lVpe6v6u6Z2R8xSJSPk4VaiTU6on5REylLm7wF4c7gGJsMHpGS98EgAAAABJRU5ErkJggg==
  10. // @grant GM_addStyle
  11. // @grant GM_registerMenuCommand
  12. // ==/UserScript==
  13.  
  14. (() => {
  15. "use strict";
  16.  
  17. const SESSION_STORAGE_KEY = "MK_userscript_makeshiftThemeSwitch_status";
  18.  
  19. const STYLE = `
  20. html, img, canvas, embed, video, object, iframe {
  21. filter: invert(1) hue-rotate(180deg);
  22. }
  23. `;
  24.  
  25. let styleElement = null;
  26.  
  27. function main() {
  28. setState(getStoredIsOn());
  29. GM_registerMenuCommand("Switch theme", switchTheme);
  30. }
  31.  
  32. function switchTheme() {
  33. setState(styleElement == null);
  34. }
  35.  
  36. function setState(on) {
  37. if (styleElement) {
  38. if (!on) {
  39. styleElement.remove();
  40. styleElement = null;
  41. setStoredIsOn(false);
  42. }
  43. } else if (on) {
  44. styleElement = GM_addStyle(STYLE);
  45. setStoredIsOn(true);
  46. }
  47. }
  48.  
  49. function getStoredIsOn() {
  50. return sessionStorage.getItem(SESSION_STORAGE_KEY) == "true";
  51. }
  52.  
  53. function setStoredIsOn(value) {
  54. sessionStorage.setItem(SESSION_STORAGE_KEY, value);
  55. }
  56.  
  57. main();
  58. })();