91 lines
2.6 KiB
Nix
91 lines
2.6 KiB
Nix
|
{ config, pkgs, lib, font, ... }:
|
||
|
let
|
||
|
inherit (pkgs.uservars) theme;
|
||
|
inherit (theme) color;
|
||
|
|
||
|
# ".config/qutebrowser/greasemonkey/darkreader.js".text =
|
||
|
darkThemeUserscript = enabled: pkgs.writeText "darkreader.js" ''
|
||
|
// ==UserScript==
|
||
|
// @name Dark Reader (Unofficial)
|
||
|
// @icon https://darkreader.org/images/darkreader-icon-256x256.png
|
||
|
// @namespace DarkReader
|
||
|
// @description Inverts the brightness of pages to reduce eye strain
|
||
|
// @version 4.7.15
|
||
|
// @author https://github.com/darkreader/darkreader#contributors
|
||
|
// @homepageURL https://darkreader.org/ | https://github.com/darkreader/darkreader
|
||
|
// @run-at document-end
|
||
|
// @grant none
|
||
|
// @include http*
|
||
|
// @require https://cdn.jsdelivr.net/npm/darkreader/darkreader.min.js
|
||
|
// @noframes
|
||
|
// ==/UserScript==
|
||
|
|
||
|
DarkReader.setFetchMethod(window.fetch)
|
||
|
|
||
|
if (${if enabled then "false" else "true"}) {
|
||
|
DarkReader.disable();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const ignore_list = [
|
||
|
"askubuntu.com",
|
||
|
"mathoverflow.com",
|
||
|
"mathoverflow.net",
|
||
|
"serverfault.com",
|
||
|
"stackapps.com",
|
||
|
"stackexchange.com",
|
||
|
"stackoverflow.com",
|
||
|
"superuser.com",
|
||
|
"hub.docker.com",
|
||
|
];
|
||
|
|
||
|
for (let item of ignore_list) {
|
||
|
if (window.location.origin.indexOf(item) >= 0) {
|
||
|
console.log("URL matched dark-mode ignore list");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DarkReader.enable({
|
||
|
brightness: 100,
|
||
|
contrast: 100,
|
||
|
sepia: 0,
|
||
|
|
||
|
darkSchemeBackgroundColor: "${color.bg}",
|
||
|
darkSchemeTextColor: "${color.txt}",
|
||
|
|
||
|
lightSchemeBackgroundColor: "${color.bg}",
|
||
|
lightSchemeTextColor: "${color.txt}",
|
||
|
});
|
||
|
'';
|
||
|
in
|
||
|
{
|
||
|
programs.qutebrowser.keyBindings = {
|
||
|
normal = {
|
||
|
"K" = "spawn --userscript toggle-dark-theme";
|
||
|
};
|
||
|
};
|
||
|
home.file = {
|
||
|
".local/share/qutebrowser/userscripts/toggle-dark-theme".executable = true;
|
||
|
".local/share/qutebrowser/userscripts/toggle-dark-theme".text = ''
|
||
|
#!/bin/sh
|
||
|
DARK_READER_SCRIPT="$HOME/.config/qutebrowser/greasemonkey/darkreader.js"
|
||
|
MARKER="$HOME/.config/qutebrowser/is-dark-mode"
|
||
|
if test -f "$MARKER"
|
||
|
then
|
||
|
rm -f "$MARKER"
|
||
|
cp -f ${darkThemeUserscript false} "$DARK_READER_SCRIPT"
|
||
|
echo "jseval --world main DarkReader.disable()" >> "$QUTE_FIFO"
|
||
|
else
|
||
|
touch "$MARKER"
|
||
|
cp -f ${darkThemeUserscript true} "$DARK_READER_SCRIPT"
|
||
|
echo "jseval --world main DarkReader.enable()" >> "$QUTE_FIFO"
|
||
|
fi
|
||
|
if test -n "$QUTE_FIFO"; then
|
||
|
echo "greasemonkey-reload --quiet" >> "$QUTE_FIFO"
|
||
|
fi
|
||
|
'';
|
||
|
};
|
||
|
}
|
||
|
|