您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sync Floatplane theme with system theme based on system changes and page load
当前为
- // ==UserScript==
- // @name Floatplane System Theme Sync
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Sync Floatplane theme with system theme based on system changes and page load
- // @author EthanBezz
- // @match https://*.floatplane.com/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (() => {
- 'use strict';
- const systemThemeQuery = window.matchMedia('(prefers-color-scheme: dark');
- const isSystemDark = () => systemThemeQuery.matches;
- const getFloatplaneTheme = () => JSON.parse(localStorage.getItem('fp:theme-preferred'));
- const isThemeMismatched = () => isSystemDark() !== (getFloatplaneTheme() === 'dark');
- const getThemeToggle = () =>
- [...document.querySelectorAll('a._dropdownItem_ouby8_1')]
- .find(menuItem => menuItem.textContent.includes('Mode'));
- new MutationObserver((_, observer) => {
- const themeToggle = getThemeToggle();
- if (themeToggle) {
- isThemeMismatched() && themeToggle.click();
- systemThemeQuery.addEventListener('change', () => isThemeMismatched() && getThemeToggle()?.click());
- observer.disconnect();
- }
- }).observe(document, { subtree: true, childList: true });
- })();