1

Modules/Qutebrowser: Configuration and theming

This commit is contained in:
2025-07-21 03:49:41 +02:00
parent 9e092d6319
commit 31cbdcf5b3
2 changed files with 117 additions and 152 deletions

View File

@ -1,58 +1,52 @@
{color}: { {color}: {
webpage.darkmode.enabled = true;
completion = { completion = {
## Background color of the completion widget category headers. ## Background color of the completion widget category headers.
category.bg = color.hexS.base; category.bg = color.hexS.base;
category.fg = color.hexS.accent;
## Bottom border color of the completion widget category headers. ## Bottom border color of the completion widget category headers.
category.border.bottom = color.hexS.mantle; category.border.top = color.hexS.base;
category.border.bottom = color.hexS.accent;
## Top border color of the completion widget category headers.
category.border.top = color.hexS.overlay2;
## Foreground color of completion widget category headers.
category.fg = color.hexS.green;
## Background color of the completion widget for even and odd rows. ## Background color of the completion widget for even and odd rows.
even.bg = color.hexS.mantle; even.bg = color.hexS.base;
odd.bg = color.hexS.mantle; odd.bg = color.hexS.base;
## Text color of the completion widget. ## Text color of the completion widget.
fg = color.hexS.subtext0; fg = color.hexS.text;
## Background color of the selected completion item. # Selected item color + border
item.selected.bg = color.hexS.surface2; item.selected.bg = color.hexS.accent;
item.selected.fg = color.hexS.accentText;
## Bottom border color of the selected completion item.
item.selected.border.bottom = color.hexS.surface2; item.selected.border.bottom = color.hexS.surface2;
## Top border color of the completion widget category headers.
item.selected.border.top = color.hexS.surface2; item.selected.border.top = color.hexS.surface2;
## Foreground color of the selected completion item. ## Foreground color of the selected completion item.
item.selected.fg = color.hexS.text; item.selected.match.fg = color.hexS.accentText;
## Foreground color of the selected completion item.
item.selected.match.fg = color.hexS.rosewater;
## Foreground color of the matched text in the completion. ## Foreground color of the matched text in the completion.
match.fg = color.hexS.text; match.fg = color.hexS.accent;
## Color of the scrollbar in completion view ## Color of the scrollbar in completion view
scrollbar.bg = color.hexS.crust; scrollbar.bg = color.hexS.base;
scrollbar.fg = color.hexS.accent;
## Color of the scrollbar handle in completion view.
scrollbar.fg = color.hexS.surface2;
}; };
downloads = { downloads = {
bar.bg = color.hexS.base; bar.bg = color.hexS.base;
error.bg = color.hexS.base;
start.bg = color.hexS.base;
stop.bg = color.hexS.base;
error.bg = color.hexS.base;
error.fg = color.hexS.red; error.fg = color.hexS.red;
# Color gradient
start.bg = color.hexS.base;
start.fg = color.hexS.blue; start.fg = color.hexS.blue;
stop.bg = color.hexS.base;
stop.fg = color.hexS.green; stop.fg = color.hexS.green;
# Set to "none" to disable gradient, otherwise "rgb"
system.fg = "none"; system.fg = "none";
system.bg = "none"; system.bg = "none";
}; };
@ -60,162 +54,119 @@
hints = { hints = {
## Background color for hints. Note that you can use a `rgba(...)` value ## Background color for hints. Note that you can use a `rgba(...)` value
## for transparency. ## for transparency.
bg = color.hexS.peach; bg = color.hexS.accentDim;
fg = color.hexS.accentText;
## Font color for hints.
fg = color.hexS.mantle;
## Hints
border = "1px solid " + color.hexS.mantle;
## Font color for the matched part of hints. ## Font color for the matched part of hints.
match.fg = color.hexS.subtext1; match.fg = color.hexS.accent;
}; };
keyhint = { keyhint = {
## Background color of the keyhint widget. ## Background color of the keyhint widget.
bg = color.hexS.mantle; bg = color.hexS.accentDim;
fg = color.hexS.accentText;
## Text color for the keyhint widget.
fg = color.hexS.text;
## Highlight color for keys to complete the current keychain. ## Highlight color for keys to complete the current keychain.
suffix.fg = color.hexS.subtext1; suffix.fg = color.hexS.accent;
}; };
messages = { messages = {
## Background color of an error message. ## Background color of an error message.
error.bg = color.hexS.overlay0; error.bg = color.hexS.base;
error.fg = color.hexS.red;
error.border = color.hexS.red;
## Background color of an info message. ## Background color of an info message.
info.bg = color.hexS.overlay0; info.bg = color.hexS.base;
info.fg = color.hexS.blue;
info.border = color.hexS.blue;
## Background color of a warning message. ## Background color of a warning message.
warning.bg = color.hexS.overlay0; warning.bg = color.hexS.base;
warning.fg = color.hexS.yellow;
## Border color of an error message. warning.border = color.hexS.yellow;
error.border = color.hexS.mantle;
## Border color of an info message.
info.border = color.hexS.mantle;
## Border color of a warning message.
warning.border = color.hexS.mantle;
## Foreground color of an error message.
error.fg = color.hexS.red;
## Foreground color an info message.
info.fg = color.hexS.text;
## Foreground color a warning message.
warning.fg = color.hexS.peach;
}; };
prompts = { prompts = {
## Background color for prompts. ## Background color for prompts.
bg = color.hexS.mantle; bg = color.hexS.base;
fg = color.hexS.text;
# ## Border used around UI elements in prompts. # ## Border used around UI elements in prompts.
border = "1px solid " + color.hexS.overlay0; border = "1px solid " + color.hexS.overlay0;
## Foreground color for prompts.
fg = color.hexS.text;
## Background color for the selected item in filename prompts. ## Background color for the selected item in filename prompts.
selected.bg = color.hexS.surface2; selected.bg = color.hexS.accent;
selected.fg = color.hexS.accentText;
## Background color for the selected item in filename prompts.
selected.fg = color.hexS.rosewater;
}; };
statusbar = { statusbar = {
## Background color of the statusbar. ## Background color of the statusbar.
normal.bg = color.hexS.base; normal.bg = color.hexS.base;
normal.fg = color.hexS.text;
## Background color of the statusbar in insert mode. ## Background color of the statusbar in insert mode.
insert.bg = color.hexS.crust; insert.bg = color.hexS.green;
insert.fg = color.hexS.accentText;
## Background color of the statusbar in command mode. ## Background color of the statusbar in command mode.
command.bg = color.hexS.base; command.bg = color.hexS.peach;
command.fg = color.hexS.accentText;
## Background color of the statusbar in caret mode. ## Background color of the statusbar in caret mode.
caret.bg = color.hexS.base; caret.bg = color.hexS.blue;
caret.fg = color.hexS.accentText;
## Background color of the statusbar in caret mode with a selection. ## Background color of the statusbar in caret mode with a selection.
caret.selection.bg = color.hexS.base; caret.selection.bg = color.hexS.blue;
caret.selection.fg = color.hexS.accentText;
## Background color of the progress bar. ## Background color of the progress bar.
progress.bg = color.hexS.base; progress.bg = color.hexS.base;
## Background color of the statusbar in passthrough mode. ## Background color of the statusbar in passthrough mode.
passthrough.bg = color.hexS.base; passthrough.bg = color.hexS.red;
passthrough.fg = color.hexS.accentText;
## Foreground color of the statusbar.
normal.fg = color.hexS.text;
## Foreground color of the statusbar in insert mode.
insert.fg = color.hexS.rosewater;
## Foreground color of the statusbar in command mode.
command.fg = color.hexS.text;
## Foreground color of the statusbar in passthrough mode.
passthrough.fg = color.hexS.peach;
## Foreground color of the statusbar in caret mode.
caret.fg = color.hexS.peach;
## Foreground color of the statusbar in caret mode with a selection.
caret.selection.fg = color.hexS.peach;
## Foreground color of the URL in the statusbar on error.
url.error.fg = color.hexS.red;
## Default foreground color of the URL in the statusbar. ## Default foreground color of the URL in the statusbar.
# NOTE: The colors will be barely legible in different modes,
# but currently we can't change url color per mode...
url.fg = color.hexS.text; url.fg = color.hexS.text;
## Foreground color of the URL in the statusbar for hovered links.
url.hover.fg = color.hexS.sky;
## Foreground color of the URL in the statusbar on successful load
url.success.http.fg = color.hexS.teal;
## Foreground color of the URL in the statusbar on successful load
url.success.https.fg = color.hexS.green;
## Foreground color of the URL in the statusbar when there's a warning.
url.warn.fg = color.hexS.yellow; url.warn.fg = color.hexS.yellow;
url.error.fg = color.hexS.red;
url.hover.fg = color.hexS.sky;
url.success.http.fg = color.hexS.red;
url.success.https.fg = color.hexS.green;
## PRIVATE MODE COLORS ## PRIVATE MODE COLORS
## Background color of the statusbar in private browsing mode. ## Background color of the statusbar in private browsing mode.
private.bg = color.hexS.mantle; private.bg = color.hexS.teal;
private.fg = color.hexS.accentText;
## Foreground color of the statusbar in private browsing mode.
private.fg = color.hexS.subtext1;
## Background color of the statusbar in private browsing + command mode. ## Background color of the statusbar in private browsing + command mode.
command.private.bg = color.hexS.base; command.private.bg = color.hexS.peach;
command.private.fg = color.hexS.accentText;
## Foreground color of the statusbar in private browsing + command mode.
command.private.fg = color.hexS.subtext1;
}; };
tabs = { tabs = {
## Background color of the tab bar. ## Background color of the tab bar.
bar.bg = color.hexS.crust; bar.bg = color.hexS.base;
# ## Background color of selected even tabs.
selected.even.bg = color.hexS.accent;
selected.even.fg = color.hexS.accentText;
# ## Background color of selected odd tabs.
selected.odd.bg = color.hexS.accent;
selected.odd.fg = color.hexS.accentText;
## Background color of unselected even tabs. ## Background color of unselected even tabs.
even.bg = color.hexS.surface2; even.bg = color.hexS.base;
even.fg = color.hexS.accent;
## Background color of unselected odd tabs. ## Background color of unselected odd tabs.
odd.bg = color.hexS.surface1; odd.bg = color.hexS.base;
odd.fg = color.hexS.accent;
## Foreground color of unselected even tabs.
even.fg = color.hexS.overlay2;
## Foreground color of unselected odd tabs.
odd.fg = color.hexS.overlay2;
## Color for the tab indicator on errors. ## Color for the tab indicator on errors.
indicator.error = color.hexS.red; indicator.error = color.hexS.red;
@ -227,28 +178,16 @@
## - hsl: Interpolate in the HSL color system. ## - hsl: Interpolate in the HSL color system.
## - none: Don't show a gradient. ## - none: Don't show a gradient.
indicator.system = "none"; indicator.system = "none";
# ## Background color of selected even tabs.
selected.even.bg = color.hexS.base;
# ## Background color of selected odd tabs.
selected.odd.bg = color.hexS.base;
# ## Foreground color of selected even tabs.
selected.even.fg = color.hexS.text;
# ## Foreground color of selected odd tabs.
selected.odd.fg = color.hexS.text;
}; };
contextmenu = { contextmenu = {
menu.bg = color.hexS.base; menu.bg = color.hexS.base;
menu.fg = color.hexS.text; menu.fg = color.hexS.accent;
disabled.bg = color.hexS.mantle; disabled.bg = color.hexS.base;
disabled.fg = color.hexS.overlay0; disabled.fg = color.hexS.text;
selected.bg = color.hexS.overlay0; selected.bg = color.hexS.accent;
selected.fg = color.hexS.rosewater; selected.fg = color.hexS.accentText;
}; };
} }

View File

@ -96,6 +96,7 @@ in {
# TODO: Find a unified version for qutebrowser + firefox (+ other browsers ideally) # TODO: Find a unified version for qutebrowser + firefox (+ other browsers ideally)
searchEngines = { searchEngines = {
DEFAULT = "https://kagi.com/search?q={}";
k = "https://kagi.com/search?q={}"; k = "https://kagi.com/search?q={}";
w = "https://en.wikipedia.org/wiki/Special:Search?search={}"; w = "https://en.wikipedia.org/wiki/Special:Search?search={}";
np = "https://searchix.ovh/?query={}"; np = "https://searchix.ovh/?query={}";
@ -129,24 +130,49 @@ in {
enableDefaultBindings = true; enableDefaultBindings = true;
settings = { settings = {
# Theme
colors = import ./colors.nix {inherit color;}; colors = import ./colors.nix {inherit color;};
fonts = {
default_family = color.font;
default_size = "12pt";
web.family.fixed = color.font;
};
hints.border = "1px solid " + color.hexS.mantle;
# Settings
auto_save.session = true;
changelog_after_upgrade = "minor";
completion.height = "33%";
content = {
autoplay = true;
blocking.enabled = true;
blocking.method = "auto"; # "auto", "adblock", "hosts", "both"
dns_prefetch = true;
};
editor.command = ["neovide" "{file}" "--" "normal {line}G{column0}l"];
# TODO: termfilechooser, also for downloads (those are separate)
# fileselect = {
# handler = "external";
# folder.command = [];
# multiple_files.command = [];
# single_file.command = [];
# };
input.media_keys = false;
prompt.radius = 6;
scrolling.smooth = true;
session.lazy_restore = true;
tabs.position = "right";
url = {
default_page = "about:blank";
open_base_url = true;
start_pages = ["https://kagi.com"];
};
}; };
# Same keys as qutebrowser.settings, but per domain # Same keys as qutebrowser.settings, but per domain
# perDomainSettings = { # perDomainSettings = {
# "github.com".colors.webpage.darkmode.enabled = false; # "github.com".colors.webpage.darkmode.enabled = false;
# }; # };
extraConfig = builtins.concatStringsSep "\n" [
# Options
''
c.editor.command = ["neovide", "{file}", "--", "normal {line}G{column0}l"]
''
# Theme
''
''
];
}; };
}; };
} }