Makeshift Theme Switch

Very simple temporary theme switcher for any page

当前为 2025-05-19 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Makeshift Theme Switch
  3. // @namespace https://mkps.app/
  4. // @version 1.0.4
  5. // @description Very simple temporary theme switcher for any page
  6. // @tag utilities
  7. // @author MK
  8. // @license MIT
  9. // @match *://*/*
  10. // @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==
  11. // @grant GM_addStyle
  12. // @grant GM_registerMenuCommand
  13. // ==/UserScript==
  14.  
  15. (() => {
  16. "use strict";
  17.  
  18. const SESSION_STORAGE_KEY = "MK_userscript_makeshiftThemeSwitch_status";
  19.  
  20. const STYLE = `
  21. html, img, canvas, embed, video, object, iframe {
  22. filter: invert(1) hue-rotate(180deg);
  23. }
  24. `;
  25.  
  26. let styleElement = null;
  27.  
  28. function main() {
  29. setState(getStoredIsOn());
  30. GM_registerMenuCommand("Switch theme", switchTheme);
  31. }
  32.  
  33. function switchTheme() {
  34. setState(styleElement == null);
  35. }
  36.  
  37. function setState(on) {
  38. if (styleElement) {
  39. if (!on) {
  40. styleElement.remove();
  41. styleElement = null;
  42. setStoredIsOn(false);
  43. }
  44. } else if (on) {
  45. styleElement = GM_addStyle(STYLE);
  46. setStoredIsOn(true);
  47. }
  48. }
  49.  
  50. function getStoredIsOn() {
  51. return sessionStorage.getItem(SESSION_STORAGE_KEY) == "true";
  52. }
  53.  
  54. function setStoredIsOn(value) {
  55. sessionStorage.setItem(SESSION_STORAGE_KEY, value);
  56. }
  57.  
  58. main();
  59. })();