puter/common/user/features/qutebrowser/default.nix
2023-09-29 20:39:08 +02:00

195 lines
6.9 KiB
Nix

{
programs.qutebrowser = {
enable = true;
extraConfig = ''
from locale import getdefaultlocale
from os import environ
from re import match
from pathlib import Path
config.load_autoconfig()
c.aliases = {
"o": "open",
"q": "quit",
"w": "session-save",
"wq": "quit --save",
"adblock-toggle": "config-cycle -t content.blocking.enabled",
"incognito": "open --private",
"mpv": "spawn --detach mpv {url}",
}
c.colors.webpage.bg = "black"
# TODO
# c.editor.command = [
# "neovide",
# "--nofork",
# "--wayland-app-id",
# "neovidefloat",
# "--",
# "+normal {line}G{column0}l",
# "--",
# "{file}",
# ]
c.editor.encoding = "utf-8"
config.bind("td", "config-cycle colors.webpage.darkmode.enabled;; restart")
c.content.local_content_can_access_remote_urls = True
c.tabs.show = "multiple"
c.url.default_page = Path("${./start.html}").as_uri()
c.url.start_pages = [c.url.default_page]
c.url.searchengines = {
"DEFAULT": "https://www.google.com/search?q={}",
"g": "https://www.google.com/search?q={}",
"ddg": "https://lite.duckduckgo.com/lite?q={}",
"wt": "https://en.wiktionary.org/w/index.php?search={}",
"w": "https://en.wikipedia.org/w/index.php?search={}",
"bs": "https://search.brave.com/search?q={}",
"aur": "https://aur.archlinux.org/packages/?SB=p&SO=d&O=0&K={}",
"gh": "https://github.com/search?q={}",
"gist": "https://gist.github.com/search?q={}",
"dd": "https://thefreedictionary.com/{}",
"dr": "https://search.disroot.org/?q={}",
}
try:
l = getdefaultlocale()[0]
if l is None or l in ("C", "POSIX"):
raise ValueError
rematch = match(r"([a-z]+)(_([A-Z]+)?)", l)
if rematch is None:
raise ValueError
language = rematch[1]
try:
locale = rematch[3]
c.content.headers.accept_language = f"{language}-{locale},{language};q=0.9,en-{locale},en;q=0.8,en-US,en;q=0.7,*;q=0.6"
except IndexError:
c.content.headers.accept_language = f"{language};q=0.9,en-US,en;q=0.8,*;q=0.7"
except:
c.content.headers.accept_language = "en-US,en;q=0.9"
# TODO
# c.colors.webpage.preferred_color_scheme = "dark"
base00 = "#1f2022"
base01 = "#282828"
base02 = "#444155"
base03 = "#585858"
base04 = "#b8b8b8"
base05 = "#a3a3a3"
base06 = "#e8e8e8"
base07 = "#f8f8f8"
base08 = "#f2241f"
base09 = "#ffa500"
base0A = "#b1951d"
base0B = "#67b11d"
base0C = "#2d9574"
base0D = "#4f97d7"
base0E = "#a31db1"
base0F = "#b03060"
c.colors.completion.fg = base05
c.colors.completion.odd.bg = base01
c.colors.completion.even.bg = base00
c.colors.completion.category.fg = base0A
c.colors.completion.category.bg = base00
c.colors.completion.category.border.top = base00
c.colors.completion.category.border.bottom = base00
c.colors.completion.item.selected.fg = base05
c.colors.completion.item.selected.bg = base02
c.colors.completion.item.selected.border.top = base02
c.colors.completion.item.selected.border.bottom = base02
c.colors.completion.item.selected.match.fg = base0B
c.colors.completion.match.fg = base0B
c.colors.completion.scrollbar.fg = base05
c.colors.completion.scrollbar.bg = base00
c.colors.contextmenu.disabled.bg = base01
c.colors.contextmenu.disabled.fg = base04
c.colors.contextmenu.menu.bg = base00
c.colors.contextmenu.menu.fg = base05
c.colors.contextmenu.selected.bg = base02
c.colors.contextmenu.selected.fg = base05
c.colors.downloads.bar.bg = base00
c.colors.downloads.start.fg = base00
c.colors.downloads.start.bg = base0D
c.colors.downloads.stop.fg = base00
c.colors.downloads.stop.bg = base0C
c.colors.downloads.error.fg = base08
c.colors.hints.fg = base00
c.colors.hints.bg = base0A
c.colors.hints.match.fg = base05
c.colors.keyhint.fg = base05
c.colors.keyhint.suffix.fg = base05
c.colors.keyhint.bg = base00
c.colors.messages.error.fg = base00
c.colors.messages.error.bg = base08
c.colors.messages.error.border = base08
c.colors.messages.warning.fg = base00
c.colors.messages.warning.bg = base0E
c.colors.messages.warning.border = base0E
c.colors.messages.info.fg = base05
c.colors.messages.info.bg = base00
c.colors.messages.info.border = base00
c.colors.prompts.fg = base05
c.colors.prompts.border = base00
c.colors.prompts.bg = base00
c.colors.prompts.selected.bg = base02
c.colors.prompts.selected.fg = base05
c.colors.statusbar.normal.fg = base0B
c.colors.statusbar.normal.bg = base00
c.colors.statusbar.insert.fg = base00
c.colors.statusbar.insert.bg = base0D
c.colors.statusbar.passthrough.fg = base00
c.colors.statusbar.passthrough.bg = base0C
c.colors.statusbar.private.fg = base00
c.colors.statusbar.private.bg = base01
c.colors.statusbar.command.fg = base05
c.colors.statusbar.command.bg = base00
c.colors.statusbar.command.private.fg = base05
c.colors.statusbar.command.private.bg = base00
c.colors.statusbar.caret.fg = base00
c.colors.statusbar.caret.bg = base0E
c.colors.statusbar.caret.selection.fg = base00
c.colors.statusbar.caret.selection.bg = base0D
c.colors.statusbar.progress.bg = base0D
c.colors.statusbar.url.fg = base05
c.colors.statusbar.url.error.fg = base08
c.colors.statusbar.url.hover.fg = base05
c.colors.statusbar.url.success.http.fg = base0C
c.colors.statusbar.url.success.https.fg = base0B
c.colors.statusbar.url.warn.fg = base0E
c.colors.tabs.bar.bg = base00
c.colors.tabs.indicator.start = base0D
c.colors.tabs.indicator.stop = base0C
c.colors.tabs.indicator.error = base08
c.colors.tabs.odd.fg = base05
c.colors.tabs.odd.bg = base01
c.colors.tabs.even.fg = base05
c.colors.tabs.even.bg = base00
c.colors.tabs.pinned.even.bg = base0C
c.colors.tabs.pinned.even.fg = base07
c.colors.tabs.pinned.odd.bg = base0B
c.colors.tabs.pinned.odd.fg = base07
c.colors.tabs.pinned.selected.even.bg = base02
c.colors.tabs.pinned.selected.even.fg = base05
c.colors.tabs.pinned.selected.odd.bg = base02
c.colors.tabs.pinned.selected.odd.fg = base05
c.colors.tabs.selected.odd.fg = base05
c.colors.tabs.selected.odd.bg = base02
c.colors.tabs.selected.even.fg = base05
c.colors.tabs.selected.even.bg = base02
c.colors.webpage.bg = base00
'';
};
}