From 86093545d2b74879aff6e46af40d826a040ecac3 Mon Sep 17 00:00:00 2001 From: Henrik Bakken Date: Tue, 3 Jun 2025 15:48:11 +0200 Subject: [PATCH] qutebrowser inputs from https://git.deuill.org/deuill/dotfiles --- qutebrowser/config.py | 239 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 195 insertions(+), 44 deletions(-) diff --git a/qutebrowser/config.py b/qutebrowser/config.py index 8263af6..a6d758c 100644 --- a/qutebrowser/config.py +++ b/qutebrowser/config.py @@ -12,6 +12,8 @@ config.bind("", "tab-prev") config.bind("", "tab-next") config.bind("", "cmd-set-text :open {url:pretty}") config.bind("", "reload") +config.bind("", "tab-clone -w") +config.bind("", "tab-clone -t") config.bind("", "restart", mode="normal") config.bind("", "history") config.bind("", "config-cycle colors.webpage.darkmode.enabled true false") @@ -23,7 +25,10 @@ config.bind("", "mode-enter passthrough", mode="insert") config.bind(">", "tab-move +") config.bind("K", "tab-prev") config.bind("J", "tab-next") -config.bind("pw", "spawn --userscript qute-bitwarden") +config.bind("pww", "spawn --userscript qute-bitwarden") +config.bind("pwu", "spawn --userscript qute-bitwarden --username-only") +config.bind("pwp", "spawn --userscript qute-bitwarden --password-only") +config.bind("pwo", "spawn --userscript qute-bitwarden --totp-only") config.bind("do", "download-open") config.bind("dx", "download-cancel") config.bind("dD", "download-delete") @@ -32,6 +37,10 @@ config.bind("dC", "download-clear") config.bind("dc", "download-remove") config.bind("tm", "tab-move") config.bind("to", "tab-focus") +config.bind("tj", "back -t", mode="normal") +config.bind("wj", "back -w", mode="normal") +config.bind("tk", "forward -t", mode="normal") +config.bind("wk", "forward -w", mode="normal") config.bind("ΓΈ", "cmd-set-text :") config.bind("m", 'cmd-set-text :quickmark-add {url:pretty} "', mode="normal") config.bind("D", "tab-close") @@ -53,43 +62,55 @@ c.completion.open_categories = [ "history", "filesystem", ] +c.content.blocking.enabled = True +c.content.blocking.method = "both" +c.content.blocking.adblock.lists = [ + "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt", + "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt", + "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt", + "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt", + "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/unbreak.txt", + "https://easylist.to/easylist/easylist.txt", + "https://easylist.to/easylist/easyprivacy.txt", + "https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext", +] c.completion.web_history.max_items = 10000 c.completion.height = "100%" -config.set("content.desktop_capture", True, "https://meet.google.com") -config.set( - "content.headers.user_agent", - "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25", - "*://*.youtube.com/*", -) +c.confirm_quit = ["multiple-tabs", "downloads"] c.content.javascript.clipboard = "ask" -config.set( - "content.javascript.clipboard", - "access-paste", - "https://mail.google.com", -) -config.set( - "content.javascript.clipboard", - "access-paste", - "https://monitor.hjarl.com", -) c.content.autoplay = False c.content.geolocation = False c.content.cache.size = 52428800 -config.set("content.media.audio_video_capture", True, "https://meet.google.com") -config.set("content.media.video_capture", True, "https://meet.google.com") -config.set("content.media.audio_capture", True, "https://meet.google.com") c.content.notifications.enabled = False -config.set( - "content.register_protocol_handler", - True, - "https://mail.google.com?extsrc=mailto&url=%25s", -) -config.set( - "content.register_protocol_handler", - True, - "https://calendar.google.com?cid=%25s", -) c.content.tls.certificate_errors = "ask-block-thirdparty" + +urlconfigs: dict[str, list[tuple[str, bool | str | dict[str, str]]]] = { + "https://meet.google.com": [ + ("content.desktop_capture", True), + ("content.media.audio_video_capture", True), + ("content.media.video_capture", True), + ("content.media.audio_capture", True), + ], + "https://mail.google.com": [("content.javascript.clipboard", "access-paste")], + "https://*.hjarl.com": [("content.javascript.clipboard", "access-paste")], + "https://chatgpt.com": [("content.javascript.clipboard", "access-paste")], + "*://*.youtube.com/*": [ + ( + "content.headers.custom", + {"X-YouTube-Client-Name": "85", "X-YouTube-Client-Version": "2.0"}, + ) + ], + # "https://mail.google.com?extsrc=mailto&url=%25s": [ + # ("content.register_protocol_handler", True) + # ], + # "https://calendar.google.com?cid=%25s": [ + # ("content.register_protocol_handler", True) + # ], +} +for url, urlconfig in urlconfigs.items(): + for setting, value in urlconfig: + config.set(setting, value, url) + c.downloads.position = "bottom" c.downloads.prevent_mixed_content = False c.editor.command = [ @@ -103,17 +124,22 @@ c.editor.command = [ "-f", "{}", ] +c.hints.padding = {"bottom": 2, "left": 5, "right": 5, "top": 2} +c.hints.border = "none" c.input.insert_mode.auto_load = True +c.input.insert_mode.auto_leave = False c.input.insert_mode.plugins = True -c.messages.timeout = 500 +c.messages.timeout = 5000 c.qt.args = [ "enable-accelerated-video-decode", "enable-gpu-rasterization", ] +c.qt.highdpi = True c.scrolling.bar = "always" +c.scrolling.smooth = False c.session.lazy_restore = False c.session.default_name = "hb" -c.statusbar.padding = {"bottom": 10, "left": 10, "right": 10, "top": 10} +c.statusbar.padding = {"bottom": 5, "left": 5, "right": 5, "top": 5} c.statusbar.position = "bottom" c.statusbar.show = "always" c.statusbar.widgets = [ @@ -125,7 +151,7 @@ c.statusbar.widgets = [ "progress", ] c.tabs.background = True -c.tabs.favicons.show = "never" +c.tabs.favicons.show = "pinned" c.tabs.indicator.width = 3 c.tabs.last_close = "close" c.tabs.max_width = 8000 @@ -136,25 +162,150 @@ c.tabs.padding = {"bottom": 2, "left": 5, "right": 5, "top": 2} c.tabs.position = "top" c.tabs.show = "always" c.tabs.show_switching_delay = 5000 +c.tabs.tabs_are_windows = False c.tabs.title.format = "{index}.{current_title}" c.tabs.undo_stack_size = 1000 c.tabs.width = "15%" -c.url.start_pages = "https://rss.hjarl.com" - +c.url.start_pages = "http://www.google.com/search?hl=en&source=hp&ie=ISO-8859-l" +c.url.default_page = "http://www.google.com/search?hl=en&source=hp&ie=ISO-8859-l" c.url.searchengines = dict( - DEFAULT="https://google.com/search?q={}", - al="https://wiki.archlinux.org/?search={}", + DEFAULT="http://www.google.com/search?hl=en&source=hp&ie=ISO-8859-l&q={}", + cg="https://chatgpt.com/?q={}", + kg="https://kagi.com/search/?q={}", + aw="https://wiki.archlinux.org/?search={}", + ap="https://www.archlinux.org/packages/?sort=&q={}", gh="https://github.com/search?q={}&type=Code", ip="https://iplocation.io/ip/{}", sh="https://explainshell.com/explain?cmd={}", wi="https://en.wikipedia.org/w/index.php?search={}", yt="https://yewtu.be/search?q={}", ) +c.zoom.default = "100%" -c.colors.tabs.even.bg = "cyan" -c.colors.tabs.even.fg = "black" -c.colors.tabs.odd.bg = "cyan" -c.colors.tabs.odd.fg = "black" -c.fonts.tabs.selected = "10pt sans-serif" -c.fonts.tabs.unselected = "10pt sans-serif" -c.fonts.statusbar = "20px default_family" +# FONTS +c.fonts.default_family = ["Iosevka"] +c.fonts.default_size = "12pt" +c.fonts.prompts = "12pt Iosevka" +c.fonts.web.family.sans_serif = "IBM Plex Sans" +c.fonts.web.family.serif = "IBM Plex Serif" +c.fonts.web.family.fixed = "IBM Plex Mono" +c.fonts.web.family.standard = c.fonts.web.family.sans_serif + +# COLORS +base00 = "#181818" +base01 = "#282828" +base02 = "#383838" +base03 = "#585858" +base04 = "#b8b8b8" +base05 = "#d8d8d8" +base06 = "#e8e8e8" +base07 = "#f8f8f8" +base08 = "#ab4642" +base09 = "#dc9656" +base0A = "#f7ca88" +base0B = "#a1b56c" +base0C = "#86c1b9" +base0D = "#7cafc2" +base0E = "#ba8baf" +base0F = "#a16946" +c.colors.webpage.preferred_color_scheme = "light" +c.colors.webpage.darkmode.enabled = False + +# from https://raw.githubusercontent.com/tinted-theming/base16-qutebrowser/refs/heads/main/templates/default.mustache +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 + +# overrides +c.colors.hints.fg = base05 +c.colors.hints.bg = base02 +c.colors.hints.match.fg = base0A +c.colors.tabs.selected.odd.bg = "teal" +c.colors.tabs.selected.even.bg = "teal"