def apply(config: ConfigAPI): config.set("content.notifications.enabled", "ask") for host in allowed: config.set("content.notifications.enabled", True, "*://%s" % host) config.set("content.notifications.enabled", True, "*://*.%s" % host) for host in blocked: config.set("content.notifications.enabled", False, "*://%s" % host) config.set("content.notifications.enabled", False, "*://*.%s" % host)
def apply(config: ConfigAPI, c: ConfigContainer): config.set("content.images", True, "chrome-devtools://*") config.set("content.images", True, "devtools://*") config.set("content.javascript.enabled", True, "chrome-devtools://*") config.set("content.javascript.enabled", True, "devtools://*") config.set("content.javascript.enabled", True, "chrome://*/*") config.set("content.javascript.enabled", True, "qute://*/*") c.content.cookies.accept = "all" c.content.dns_prefetch = True c.content.headers.do_not_track = True c.content.local_content_can_access_file_urls = True c.content.local_content_can_access_remote_urls = False c.content.local_storage = True c.content.pdfjs = True c.content.proxy = "none" c.content.default_encoding = "utf-8" c.content.geolocation = "ask"
def apply(config: ConfigAPI): config.set( "content.headers.user_agent", "Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}", "https://web.whatsapp.com/") config.set("content.headers.user_agent", "Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0", "https://accounts.google.com/*") config.set( "content.headers.user_agent", "Mozilla/5.0 ({os_info}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99 Safari/537.36", "https://*.slack.com/*") config.set("content.headers.user_agent", "Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0", "https://docs.google.com/*")
def apply_default(config: ConfigAPI): config.bind('"', "mode-enter jump_mark") config.bind("+", "zoom-in") config.bind("-", "zoom-out") config.bind(".", "repeat-command") config.bind("/", "set-cmd-text /") config.bind(":", "set-cmd-text :") config.bind(";I", "hint images tab") config.bind(";O", "hint links fill :open -t -r {hint-url}") config.bind(";R", "hint --rapid links window") config.bind(";Y", "hint links yank-primary") config.bind(";b", "hint all tab-bg") config.bind(";d", "hint links download") config.bind(";f", "hint all tab-fg") config.bind(";h", "hint all hover") config.bind(";i", "hint images") config.bind(";o", "hint links fill :open {hint-url}") config.bind(";r", "hint --rapid links tab-bg") config.bind(";t", "hint inputs") config.bind(";y", "hint links yank") config.bind("<Alt-1>", "tab-focus 1") config.bind("<Alt-2>", "tab-focus 2") config.bind("<Alt-3>", "tab-focus 3") config.bind("<Alt-4>", "tab-focus 4") config.bind("<Alt-5>", "tab-focus 5") config.bind("<Alt-6>", "tab-focus 6") config.bind("<Alt-7>", "tab-focus 7") config.bind("<Alt-8>", "tab-focus 8") config.bind("<Alt-9>", "tab-focus -1") config.bind("<Alt-m>", "tab-mute") config.bind("<Ctrl-A>", "navigate increment") config.bind("<Ctrl-Alt-p>", "print") config.bind("<Ctrl-B>", "scroll-page 0 -1") config.bind("<Ctrl-D>", "scroll-page 0 0.5") config.bind("<Ctrl-F5>", "reload -f") config.bind("<Ctrl-F>", "scroll-page 0 1") config.bind("<Ctrl-N>", "open -w") config.bind("<Ctrl-PgDown>", "tab-next") config.bind("<Ctrl-PgUp>", "tab-prev") config.bind("<Ctrl-Q>", "quit") config.bind("<Ctrl-Return>", "selection-follow -t") config.bind("<Ctrl-Shift-N>", "open -p") config.bind("<Ctrl-Shift-T>", "undo") config.bind("<Ctrl-Shift-Tab>", "nop") config.bind("<Ctrl-Shift-W>", "close") config.bind("<Ctrl-T>", "open -t") config.bind("<Ctrl-Tab>", "tab-focus last") config.bind("<Ctrl-U>", "scroll-page 0 -0.5") config.bind("<Ctrl-V>", "mode-enter passthrough") config.bind("<Ctrl-W>", "tab-close") config.bind("<Ctrl-X>", "navigate decrement") config.bind("<Ctrl-^>", "tab-focus last") config.bind("<Ctrl-h>", "home") config.bind("<Ctrl-p>", "tab-pin") config.bind("<Ctrl-s>", "stop") config.bind("<Escape>", "clear-keychain ;; search ;; fullscreen --leave") config.bind("<F11>", "fullscreen") config.bind("<F5>", "reload") config.bind("<Return>", "selection-follow") config.bind("<back>", "back") config.bind("<forward>", "forward") config.bind("=", "zoom") config.bind("?", "set-cmd-text ?") config.bind("@", "macro-run") config.bind("B", "set-cmd-text -s :quickmark-load -t") config.bind("D", "tab-close -o") config.bind("F", "hint all tab") config.bind("G", "scroll-to-perc") config.bind("H", "back") config.bind("J", "tab-next") config.bind("K", "tab-prev") config.bind("L", "forward") config.bind("M", "bookmark-add") config.bind("N", "search-prev") config.bind("O", "set-cmd-text -s :open -t") config.bind("PP", "open -t -- {primary}") config.bind("Pp", "open -t -- {clipboard}") config.bind("R", "reload -f") config.bind("Sb", "open qute://bookmarks#bookmarks") config.bind("Sh", "open qute://history") config.bind("Sq", "open qute://bookmarks") config.bind("Ss", "open qute://settings") config.bind("T", "tab-focus") config.bind("ZQ", "quit") config.bind("ZZ", "quit --save") config.bind("[[", "navigate prev") config.bind("]]", "navigate next") config.bind("`", "mode-enter set_mark") config.bind("ad", "download-cancel") config.bind("b", "set-cmd-text -s :quickmark-load") config.bind("cd", "download-clear") config.bind("co", "tab-only") config.bind("d", "tab-close") config.bind("f", "hint") config.bind("g$", "tab-focus -1") config.bind("g0", "tab-focus 1") config.bind("gB", "set-cmd-text -s :bookmark-load -t") config.bind("gC", "tab-clone") config.bind("gD", "tab-give") config.bind("gO", "set-cmd-text :open -t -r {url:pretty}") config.bind("gU", "navigate up -t") config.bind("g^", "tab-focus 1") config.bind("ga", "open -t") config.bind("gb", "set-cmd-text -s :bookmark-load") config.bind("gd", "download") config.bind("gf", "view-source") config.bind("gg", "scroll-to-perc 0") config.bind("gi", "hint inputs --first") config.bind("gl", "tab-move -") config.bind("gm", "tab-move") config.bind("go", "set-cmd-text :open {url:pretty}") config.bind("gr", "tab-move +") config.bind("gt", "set-cmd-text -s :buffer") config.bind("gu", "navigate up") config.bind("h", "scroll left") config.bind("i", "mode-enter insert") config.bind("j", "scroll down") config.bind("k", "scroll up") config.bind("l", "scroll right") config.bind("m", "quickmark-save") config.bind("n", "search-next") config.bind("o", "set-cmd-text -s :open") config.bind("pP", "open -- {primary}") config.bind("pp", "open -- {clipboard}") config.bind("q", "macro-record") config.bind("r", "reload") config.bind("sf", "save") config.bind("sk", "set-cmd-text -s :bind") config.bind("sl", "set-cmd-text -s :set -t") config.bind("ss", "set-cmd-text -s :set") config.bind( "tIH", "config-cycle -p -u *://*.{url:host}/* content.images ;; reload") config.bind( "tIh", "config-cycle -p -u *://{url:host}/* content.images ;; reload") config.bind("tIu", "config-cycle -p -u {url} content.images ;; reload") config.bind( "tPH", "config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload") config.bind( "tPh", "config-cycle -p -u *://{url:host}/* content.plugins ;; reload") config.bind("tPu", "config-cycle -p -u {url} content.plugins ;; reload") config.bind( "tSH", "config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload", ) config.bind( "tSh", "config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload", ) config.bind( "tSu", "config-cycle -p -u {url} content.javascript.enabled ;; reload") config.bind("th", "back -t") config.bind( "tiH", "config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload") config.bind( "tih", "config-cycle -p -t -u *://{url:host}/* content.images ;; reload") config.bind("tiu", "config-cycle -p -t -u {url} content.images ;; reload") config.bind("tl", "forward -t") config.bind( "tpH", "config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload") config.bind( "tph", "config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload") config.bind("tpu", "config-cycle -p -t -u {url} content.plugins ;; reload") config.bind( "tsH", "config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload", ) config.bind( "tsh", "config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload", ) config.bind( "tsu", "config-cycle -p -t -u {url} content.javascript.enabled ;; reload") config.bind("u", "undo") config.bind("v", "mode-enter caret") config.bind("wB", "set-cmd-text -s :bookmark-load -w") config.bind("wO", "set-cmd-text :open -w {url:pretty}") config.bind("wP", "open -w -- {primary}") config.bind("wb", "set-cmd-text -s :quickmark-load -w") config.bind("wf", "hint all window") config.bind("wh", "back -w") config.bind("wi", "inspector") config.bind("wl", "forward -w") config.bind("wo", "set-cmd-text -s :open -w") config.bind("wp", "open -w -- {clipboard}") config.bind("xO", "set-cmd-text :open -b -r {url:pretty}") config.bind("xo", "set-cmd-text -s :open -b") config.bind("yD", "yank domain -s") config.bind("yM", "yank inline [{title}]({url}) -s") config.bind("yP", "yank pretty-url -s") config.bind("yT", "yank title -s") config.bind("yY", "yank -s") config.bind("yd", "yank domain") config.bind("ym", "yank inline [{title}]({url})") config.bind("yp", "yank pretty-url") config.bind("yt", "yank title") config.bind("yy", "yank") config.bind("{{", "navigate prev -t") config.bind("}}", "navigate next -t") # Bindings for caret mode config.bind("$", "move-to-end-of-line", mode="caret") config.bind("0", "move-to-start-of-line", mode="caret") config.bind("<Ctrl-Space>", "drop-selection", mode="caret") config.bind("<Escape>", "mode-enter normal", mode="caret") config.bind("<Return>", "yank selection", mode="caret") config.bind("<Space>", "toggle-selection", mode="caret") config.bind("G", "move-to-end-of-document", mode="caret") config.bind("H", "scroll left", mode="caret") config.bind("J", "scroll down", mode="caret") config.bind("K", "scroll up", mode="caret") config.bind("L", "scroll right", mode="caret") config.bind("Y", "yank selection -s", mode="caret") config.bind("[", "move-to-start-of-prev-block", mode="caret") config.bind("]", "move-to-start-of-next-block", mode="caret") config.bind("b", "move-to-prev-word", mode="caret") config.bind("c", "mode-enter normal", mode="caret") config.bind("e", "move-to-end-of-word", mode="caret") config.bind("gg", "move-to-start-of-document", mode="caret") config.bind("h", "move-to-prev-char", mode="caret") config.bind("j", "move-to-next-line", mode="caret") config.bind("k", "move-to-prev-line", mode="caret") config.bind("l", "move-to-next-char", mode="caret") config.bind("o", "reverse-selection", mode="caret") config.bind("v", "toggle-selection", mode="caret") config.bind("w", "move-to-next-word", mode="caret") config.bind("y", "yank selection", mode="caret") config.bind("{", "move-to-end-of-prev-block", mode="caret") config.bind("}", "move-to-end-of-next-block", mode="caret") # Bindings for command mode config.bind("<Alt-B>", "rl-backward-word", mode="command") config.bind("<Alt-Backspace>", "rl-backward-kill-word", mode="command") config.bind("<Alt-D>", "rl-kill-word", mode="command") config.bind("<Alt-F>", "rl-forward-word", mode="command") config.bind("<Ctrl-?>", "rl-delete-char", mode="command") config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="command") config.bind("<Ctrl-B>", "rl-backward-char", mode="command") config.bind("<Ctrl-C>", "completion-item-yank", mode="command") config.bind("<Ctrl-D>", "completion-item-del", mode="command") config.bind("<Ctrl-E>", "rl-end-of-line", mode="command") config.bind("<Ctrl-F>", "rl-forward-char", mode="command") config.bind("<Ctrl-H>", "rl-backward-delete-char", mode="command") config.bind("<Ctrl-K>", "rl-kill-line", mode="command") config.bind("<Ctrl-N>", "command-history-next", mode="command") config.bind("<Ctrl-P>", "command-history-prev", mode="command") config.bind("<Ctrl-Return>", "command-accept --rapid", mode="command") config.bind("<Ctrl-Shift-C>", "completion-item-yank --sel", mode="command") config.bind("<Ctrl-Shift-Tab>", "completion-item-focus prev-category", mode="command") config.bind("<Ctrl-Tab>", "completion-item-focus next-category", mode="command") config.bind("<Ctrl-U>", "rl-unix-line-discard", mode="command") config.bind("<Ctrl-W>", "rl-unix-word-rubout", mode="command") config.bind("<Ctrl-Y>", "rl-yank", mode="command") config.bind("<Down>", "completion-item-focus --history next", mode="command") config.bind("<Escape>", "mode-enter normal", mode="command") config.bind("<Return>", "command-accept", mode="command") config.bind("<Shift-Delete>", "completion-item-del", mode="command") config.bind("<Shift-Tab>", "completion-item-focus prev", mode="command") config.bind("<Tab>", "completion-item-focus next", mode="command") config.bind("<Up>", "completion-item-focus --history prev", mode="command") # Bindings for hint mode config.bind("<Ctrl-B>", "hint all tab-bg", mode="hint") config.bind("<Ctrl-F>", "hint links", mode="hint") config.bind("<Ctrl-R>", "hint --rapid links tab-bg", mode="hint") config.bind("<Escape>", "mode-enter normal", mode="hint") config.bind("<Return>", "follow-hint", mode="hint") # Bindings for insert mode config.bind("<Ctrl-E>", "open-editor", mode="insert") config.bind("<Escape>", "mode-enter normal", mode="insert") config.bind("<Shift-Ins>", "insert-text -- {primary}", mode="insert") # Bindings for passthrough mode config.bind("<Shift-Escape>", "mode-enter normal", mode="passthrough") # Bindings for prompt mode config.bind("<Alt-B>", "rl-backward-word", mode="prompt") config.bind("<Alt-Backspace>", "rl-backward-kill-word", mode="prompt") config.bind("<Alt-D>", "rl-kill-word", mode="prompt") config.bind("<Alt-F>", "rl-forward-word", mode="prompt") config.bind("<Alt-Shift-Y>", "prompt-yank --sel", mode="prompt") config.bind("<Alt-Y>", "prompt-yank", mode="prompt") config.bind("<Ctrl-?>", "rl-delete-char", mode="prompt") config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="prompt") config.bind("<Ctrl-B>", "rl-backward-char", mode="prompt") config.bind("<Ctrl-E>", "rl-end-of-line", mode="prompt") config.bind("<Ctrl-F>", "rl-forward-char", mode="prompt") config.bind("<Ctrl-H>", "rl-backward-delete-char", mode="prompt") config.bind("<Ctrl-K>", "rl-kill-line", mode="prompt") config.bind("<Ctrl-P>", "prompt-open-download --pdfjs", mode="prompt") config.bind("<Ctrl-U>", "rl-unix-line-discard", mode="prompt") config.bind("<Ctrl-W>", "rl-unix-word-rubout", mode="prompt") config.bind("<Ctrl-X>", "prompt-open-download", mode="prompt") config.bind("<Ctrl-Y>", "rl-yank", mode="prompt") config.bind("<Down>", "prompt-item-focus next", mode="prompt") config.bind("<Escape>", "mode-enter normal", mode="prompt") config.bind("<Return>", "prompt-accept", mode="prompt") config.bind("<Shift-Tab>", "prompt-item-focus prev", mode="prompt") config.bind("<Tab>", "prompt-item-focus next", mode="prompt") config.bind("<Up>", "prompt-item-focus prev", mode="prompt") # Bindings for register mode config.bind("<Escape>", "mode-enter normal", mode="register") # Bindings for yesno mode config.bind("<Alt-Shift-Y>", "prompt-yank --sel", mode="yesno") config.bind("<Alt-Y>", "prompt-yank", mode="yesno") config.bind("<Escape>", "mode-enter normal", mode="yesno") config.bind("<Return>", "prompt-accept", mode="yesno") config.bind("N", "prompt-accept --save no", mode="yesno") config.bind("Y", "prompt-accept --save yes", mode="yesno") config.bind("n", "prompt-accept no", mode="yesno") config.bind("y", "prompt-accept yes", mode="yesno")
def apply_custom(config: ConfigAPI): config.bind("yp", "spawn mpv --force-window yes {url}") config.bind( "ya", "spawn --userscript ~/.local/bin/scripts/stream_audio_from_youtube") config.bind( "y-", "hint links spawn --userscript ~/.local/bin/scripts/stream_audio_from_youtube", ) config.bind("yh", "hint links spawn mpv --force-window yes {hint-url}") config.bind("<Ctrl-s>", "download") config.bind("<Ctrl-i>", "inspector") config.bind(".", "tab-next") config.bind(",", "tab-prev") config.bind( "<Ctrl-Shift-p>", "spawn --userscript ~/.local/bin/scripts/qute-bitwarden", mode="insert", ) config.bind(" z", "spawn --userscript ~/.scripts/qute-goyo") config.bind("e", "edit-url") config.bind("po", "proxy-off") config.bind("pz", "proxy-zscaler-on") config.bind("pt", "proxy-tor-on")
def configure(config: ConfigAPI, c: ConfigContainer): if qutebrowser_version >= (2, 0, 0): config.load_autoconfig(False) if qutebrowser_version >= (2, 0, 2): mode_enter = "mode-enter" else: mode_enter = "enter-mode" # Configure ctrl-p to open a fuzzy search prompt for currently open tabs. config.bind("<Ctrl-p>", "set-cmd-text -s :tab-select") # Configure m to launch `qmpvl`. config.bind( "m", "hint links spawn " + os.path.join(dotfile_dir, "bin", "i3", "qmpvl") + " {hint-url}") config.bind( "M", "spawn " + os.path.join(dotfile_dir, "bin", "i3", "qmpvl") + " {url}") # Use Shift-Escape to enter passthrough mode instead of Ctrl-V. config.bind("<Shift-Escape>", f"{mode_enter} passthrough", mode="normal") config.unbind("<Ctrl-V>") # Use Ctrl-Shift-J and Ctrl-Shift-K to move tabs down or up, respectively. config.bind("<Ctrl-Shift-J>", "tab-move +") config.bind("<Ctrl-Shift-K>", "tab-move -") # Don't automatically leave insert mode. qutebrowser will leave insert mode automatically # if you click off of a textbox element (and under some other conditions) which is kinda # annoying. config.set("input.insert_mode.auto_leave", False) # Don't show history items in completion menu. config.set("completion.web_history.max_items", 0) config.set("tabs.position", "left") config.set("tabs.width", "15%") config.set("downloads.position", "bottom") # Set default search engine = DuckDuckGo. c.url.searchengines["DEFAULT"] = "https://www.duckduckgo.com/?q={}" c.url.searchengines["google"] = "https://www.google.com/search?q={}" c.url.searchengines[ "tfawsr"] = "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/{}" c.url.searchengines[ "tfawsd"] = "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/{}" c.url.searchengines[ "amod"] = "https://docs.ansible.com/ansible/latest/modules/{}_module.html" c.url.start_pages = ["about:blank"] # On Wayland, setting qt.highdpi does nothing. # Additionally, Wayland scaling causes qutebrowser to have an insanely large mouse pointer. if display_profile == "UHD": if os.environ.get("WAYLAND_DISPLAY", None) is None: config.set("qt.highdpi", True) else: set_ui_fonts(c, 24) config.set("zoom.default", 200) else: set_ui_fonts(c, 10) # Fullscreen only fills the qutebrowser window. If we want true fullscreen, # we can pair it with the fullscreen offered by i3. fullscreen_windowed = True if qutebrowser_version < (1, 11, 0): # This option was renamed to content.fullscreen.window in qutebrowser v1.11.0. config.set("content.windowed_fullscreen", fullscreen_windowed) else: config.set("content.fullscreen.window", fullscreen_windowed) # Per-domain settings. Since qutebrowser currently does not save permission requests # for these, we need to include them in our configuration. # # See https://github.com/qutebrowser/qutebrowser/issues/832. for scope, permission_list in url_permissions.items(): for permission, domains in permission_list.items(): for d in domains: config.set(scope, permission, d) for d in url_permissions_media: if qutebrowser_version < (1, 14, 0): # This option was split into several options for selective audio, video capture in qutebrowser v1.14.0. config.set("content.media_capture", True, d) else: config.set("content.media.audio_capture", True, d) config.set("content.media.video_capture", True, d) config.set("content.media.audio_video_capture", True, d) config.set(content_notifications_enabled, True, d) config.set("content.blocking.whitelist", adblock_whitelist_urls) config_colors(c)
def apply_custom(config: ConfigAPI): config.bind("yp", "spawn mpv --force-window yes {url}") config.bind("yh", "hint links spawn mpv --force-window yes {hint-url}") config.bind(";", "set-cmd-text :") config.bind("<Ctrl-s>", "download") config.bind("<Ctrl-i>", "inspector") config.bind(".", "tab-next") config.bind(",", "tab-prev") config.bind("<Ctrl-Shift-p>", "spawn --userscript ~/.scripts/qute-bitwarden") config.bind(" z", "spawn --userscript ~/.scripts/qute-goyo") config.bind("e", "edit-url")