Move userscripts into scripts/ subfolder
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
// ==UserScript==
|
||||
// @name DarkReader
|
||||
// @version 0.0.7
|
||||
// @match *://*/*
|
||||
// @downloadURL https://gist.github.com/evanreichard/f983ca26836d4af6ca0f6fb602b9dcaf/raw/darkreader.user.js
|
||||
// @require https://unpkg.com/darkreader@4.9.46/darkreader.js
|
||||
// @grant GM.xmlhttpRequest
|
||||
// @grant GM.registerMenuCommand
|
||||
// @grant GM.unregisterMenuCommand
|
||||
// @grant GM_getValue
|
||||
// @grant GM_setValue
|
||||
// @inject-into content
|
||||
// @noframes
|
||||
// @run-at document-start
|
||||
// ==/UserScript==
|
||||
|
||||
/* globals DarkReader */
|
||||
|
||||
let options = {
|
||||
brightness: 70,
|
||||
contrast: 110,
|
||||
sepia: 50,
|
||||
};
|
||||
|
||||
let prefersDark =
|
||||
window.matchMedia &&
|
||||
window.matchMedia("(prefers-color-scheme: dark)").matches;
|
||||
|
||||
function toggleHost() {
|
||||
let disabledHosts = GM_getValue("disabledHosts", []);
|
||||
let isDisabled = disabledHosts.includes(window.location.hostname);
|
||||
|
||||
if (isDisabled) {
|
||||
disabledHosts = disabledHosts.filter(
|
||||
(item) => item !== window.location.hostname,
|
||||
);
|
||||
} else {
|
||||
disabledHosts.push(window.location.hostname);
|
||||
}
|
||||
|
||||
GM_setValue("disabledHosts", disabledHosts);
|
||||
applySettings();
|
||||
}
|
||||
|
||||
function toggleSystem() {
|
||||
let useSystem = GM_getValue("useSystem", true);
|
||||
GM_setValue("useSystem", !useSystem);
|
||||
applySettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* This is necessary for CORS related requests. GM.xmlhttpRequest
|
||||
* bypasses that restriction.
|
||||
**/
|
||||
async function extensionFetch(url) {
|
||||
let responseData = await new Promise((resolve, reject) => {
|
||||
GM.xmlhttpRequest({
|
||||
url,
|
||||
responseType: "blob",
|
||||
onerror: reject,
|
||||
onload: resolve,
|
||||
});
|
||||
});
|
||||
|
||||
return new Response(responseData.response);
|
||||
}
|
||||
|
||||
DarkReader.setFetchMethod(extensionFetch);
|
||||
|
||||
function applySettings() {
|
||||
GM.unregisterMenuCommand("System Mode - Enable");
|
||||
GM.unregisterMenuCommand("System Mode - Disable");
|
||||
GM.unregisterMenuCommand("DarkReader - Disable");
|
||||
GM.unregisterMenuCommand("DarkReader - Enable");
|
||||
|
||||
let disabledHosts = GM_getValue("disabledHosts", []);
|
||||
let useSystem = GM_getValue("useSystem", true);
|
||||
|
||||
if (useSystem) {
|
||||
GM.registerMenuCommand("System Mode - Disable", toggleSystem);
|
||||
} else {
|
||||
GM.registerMenuCommand("System Mode - Enable", toggleSystem);
|
||||
}
|
||||
|
||||
let isDisabled = disabledHosts.includes(window.location.hostname);
|
||||
if (isDisabled) {
|
||||
GM.registerMenuCommand("DarkReader - Enable", toggleHost);
|
||||
} else {
|
||||
GM.registerMenuCommand("DarkReader - Disable", toggleHost);
|
||||
}
|
||||
|
||||
if (useSystem && prefersDark && !isDisabled)
|
||||
return DarkReader.enable(options);
|
||||
if (!useSystem && !isDisabled) return DarkReader.enable(options);
|
||||
|
||||
DarkReader.disable();
|
||||
}
|
||||
|
||||
// System Change
|
||||
window
|
||||
.matchMedia("(prefers-color-scheme: dark)")
|
||||
.addEventListener("change", (event) => {
|
||||
prefersDark = event.matches;
|
||||
applySettings();
|
||||
});
|
||||
|
||||
// Initial Load
|
||||
applySettings();
|
||||
Reference in New Issue
Block a user