# Autogenerated config.py # # NOTE: config.py is intended for advanced users who are comfortable # with manually migrating the config file on qutebrowser upgrades. If # you prefer, you can also configure qutebrowser using the # :set/:bind/:config-* commands without having to write a config.py # file. # # try: # import qutebrowser.config as config # from qutebrowser.config import (config as c, configfiles) # c.load_autoconfig(False) # except ImportError: # pass from qutebrowser.config.configfiles import ConfigAPI from qutebrowser.config.config import ConfigContainer config: ConfigAPI = config c: ConfigContainer = c config.load_autoconfig(False) # Documentation: # qute://help/configuring.html # qute://help/settings.html # Change the argument to True to still load settings configured via # autoconfig.yml # c.load_autoconfig(False) # How to open links in an existing instance if a new one is launched. # This happens when e.g. opening a link from a terminal. See # `new_instance_open_target_window` to customize in which window the # link is opened in. # Type: String # Valid values: # - tab: Open a new tab in the existing window and activate the window. # - tab-bg: Open a new background tab in the existing window and activate the # window. # - tab-silent: Open a new tab in the existing window without activating the # window. # - tab-bg-silent: Open a new background tab in the existing window without # activating the window. # - window: Open in a new window. # - private-window: Open in a new private window. c.new_instance_open_target = 'tab' # Backend to use to display websites. qutebrowser supports two different # web rendering engines / backends, QtWebEngine and QtWebKit (not # recommended). QtWebEngine is Qt's official successor to QtWebKit, and # both the default/recommended backend. It's based on a stripped-down # Chromium and regularly updated with security fixes and new features by # the Qt project: https://wiki.qt.io/QtWebEngine QtWebKit was # qutebrowser's original backend when the project was started. However, # support for QtWebKit was discontinued by the Qt project with Qt 5.6 in # 2016. The development of QtWebKit was picked up in an official fork: # https://github.com/qtwebkit/qtwebkit - however, the project seems to # have stalled again. The latest release (5.212.0 Alpha 4) from March # 2020 is based on a WebKit version from 2016, with many known security # vulnerabilities. Additionally, there is no process isolation and # sandboxing. Due to all those issues, while support for QtWebKit is # still available in qutebrowser for now, using it is strongly # discouraged. # Type: String # Valid values: # - webengine: Use QtWebEngine (based on Chromium - recommended). # - webkit: Use QtWebKit (based on WebKit, similar to Safari - many known # security issues!). c.backend = 'webengine' # Always restore open sites when qutebrowser is reopened. Without this # option set, `:wq` (`:quit --save`) needs to be used to save open tabs # (and restore them), while quitting qutebrowser in any other way will # not save/restore the session. By default, this will save to the # session which was last loaded. This behavior can be customized via the # `session.default_name` setting. # Type: Bool c.auto_save.session = True # Which cookies to accept. With QtWebEngine, this setting also controls # other features with tracking capabilities similar to those of cookies; # including IndexedDB, DOM storage, filesystem API, service workers, and # AppCache. Note that with QtWebKit, only `all` and `never` are # supported as per-domain values. Setting `no-3rdparty` or `no- # unknown-3rdparty` per-domain on QtWebKit will have the same effect as # `all`. If this setting is used with URL patterns, the pattern gets # applied to the origin/first party URL of the page making the request, # not the request URL. With QtWebEngine 5.15.0+, paths will be stripped # from URLs, so URL patterns using paths will not match. With # QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so # you will typically need to set this setting for `example.com` when the # cookie is set on `somesubdomain.example.com` for it to work properly. # To debug issues with this setting, start qutebrowser with `--debug # --logfilter network --debug-flag log-cookies` which will show all # cookies being set. # Type: String # Valid values: # - all: Accept all cookies. # - no-3rdparty: Accept cookies from the same origin only. This is known to # break some sites, such as GMail. # - no-unknown-3rdparty: Accept cookies from the same origin only, unless a # cookie is already set for the domain. On QtWebEngine, this is the same # as no-3rdparty. # - never: Don't accept cookies at all. config.set('content.cookies.accept', 'all', 'chrome-devtools://*') # Which cookies to accept. With QtWebEngine, this setting also controls # other features with tracking capabilities similar to those of cookies; # including IndexedDB, DOM storage, filesystem API, service workers, and # AppCache. Note that with QtWebKit, only `all` and `never` are # supported as per-domain values. Setting `no-3rdparty` or `no- # unknown-3rdparty` per-domain on QtWebKit will have the same effect as # `all`. If this setting is used with URL patterns, the pattern gets # applied to the origin/first party URL of the page making the request, # not the request URL. With QtWebEngine 5.15.0+, paths will be stripped # from URLs, so URL patterns using paths will not match. With # QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so # you will typically need to set this setting for `example.com` when the # cookie is set on `somesubdomain.example.com` for it to work properly. # To debug issues with this setting, start qutebrowser with `--debug # --logfilter network --debug-flag log-cookies` which will show all # cookies being set. # Type: String # Valid values: # - all: Accept all cookies. # - no-3rdparty: Accept cookies from the same origin only. This is known to # break some sites, such as GMail. # - no-unknown-3rdparty: Accept cookies from the same origin only, unless a # cookie is already set for the domain. On QtWebEngine, this is the same # as no-3rdparty. # - never: Don't accept cookies at all. config.set('content.cookies.accept', 'all', 'devtools://*') # Allow websites to request geolocations. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.geolocation', True, 'https://order.firehousesubs.com') config.set('content.geolocation', True, 'https://www.aetna.com') # Allow websites to request geolocations. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.geolocation', True, 'https://www.google.com') # Allow websites to request geolocations. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.geolocation', False, 'https://www.neworleanssaints.com') # Allow websites to request geolocations. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.geolocation', False, 'https://www.tracfone.com') # Value to send in the `Accept-Language` header. Note that the value # read from JavaScript is always the global value. # Type: String config.set('content.headers.accept_language', '', 'https://matchmaker.krunker.io/*') # fix for instacart config.set('content.blocking.enabled', False, 'https://*.instacart.com/*') # fix for Rocket Mortgage config.set('content.blocking.enabled', False, 'https://*.rocketaccount.com/*') config.set('content.blocking.enabled', False, 'https://*.rocketmortgage.com/*') c.content.blocking.whitelist = [ 'https://cdn.eu1.exponea.com/zagg-us-production-2/*', 'https://*.apple.com/*', 'https://network.bazaarvoice.com/*' ] # User agent to send. The following placeholders are defined: * # `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`: # The underlying WebKit version (set to a fixed value with # QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for # QtWebEngine. * `{qt_version}`: The underlying Qt version. * # `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for # QtWebEngine. * `{upstream_browser_version}`: The corresponding # Safari/Chrome version. * `{qutebrowser_version}`: The currently # running qutebrowser version. The default value is equal to the # unchanged user agent of QtWebKit/QtWebEngine. Note that the value # read from JavaScript is always the global value. With QtWebEngine # between 5.12 and 5.14 (inclusive), changing the value exposed to # JavaScript requires a restart. # Type: FormatString # 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/') # User agent to send. The following placeholders are defined: * # `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`: # The underlying WebKit version (set to a fixed value with # QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for # QtWebEngine. * `{qt_version}`: The underlying Qt version. * # `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for # QtWebEngine. * `{upstream_browser_version}`: The corresponding # Safari/Chrome version. * `{qutebrowser_version}`: The currently # running qutebrowser version. The default value is equal to the # unchanged user agent of QtWebKit/QtWebEngine. Note that the value # read from JavaScript is always the global value. With QtWebEngine # between 5.12 and 5.14 (inclusive), changing the value exposed to # JavaScript requires a restart. # Type: FormatString # config.set('content.headers.user_agent', # 'Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0', # 'https://accounts.google.com/*') # # User agent to send. The following placeholders are defined: * # `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`: # The underlying WebKit version (set to a fixed value with # QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for # QtWebEngine. * `{qt_version}`: The underlying Qt version. * # `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for # QtWebEngine. * `{upstream_browser_version}`: The corresponding # Safari/Chrome version. * `{qutebrowser_version}`: The currently # running qutebrowser version. The default value is equal to the # unchanged user agent of QtWebKit/QtWebEngine. Note that the value # read from JavaScript is always the global value. With QtWebEngine # between 5.12 and 5.14 (inclusive), changing the value exposed to # JavaScript requires a restart. # Type: FormatString 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 (X11; Linux x86_64) AppleWebKit/537.36' + '(KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36', 'https://forum.ghost.org') # config.set('content.headers.user_agent', # 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36' # + '(KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36', # 'https://*.instacart.com/*') config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} ' + '(KHTML, like Gecko) {qt_key}/{qt_version} ' + '{upstream_browser_key}/{upstream_browser_version} ' + 'Safari/{webkit_version}', '*') # Load images automatically in web pages. # Type: Bool config.set('content.images', True, 'chrome-devtools://*') # Load images automatically in web pages. # Type: Bool config.set('content.images', True, 'devtools://*') # Enable JavaScript. # Type: Bool config.set('content.javascript.enabled', True, 'chrome-devtools://*') # Enable JavaScript. # Type: Bool config.set('content.javascript.enabled', True, 'devtools://*') # Enable JavaScript. # Type: Bool config.set('content.javascript.enabled', True, 'chrome://*/*') # Enable JavaScript. # Type: Bool config.set('content.javascript.enabled', True, 'qute://*/*') # Allow websites to show notifications. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.notifications.enabled', True, 'https://calendar.google.com') # Allow websites to show notifications. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.notifications.enabled', True, 'https://messages.google.com') # Allow websites to show notifications. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.notifications.enabled', False, 'https://www.youtube.com') config.set('content.notifications.enabled', False, 'https://mail.google.com') # Allow websites to register protocol handlers via # `navigator.registerProtocolHandler`. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.register_protocol_handler', True, 'https://calendar.google.com?cid=%25s') # Allow websites to register protocol handlers via # `navigator.registerProtocolHandler`. # Type: BoolAsk # Valid values: # - true # - false # - ask config.set('content.register_protocol_handler', False, 'https://mail.google.com?extsrc=mailto&url=%25s') # Number of commands to save in the command history. 0: no history / -1: # unlimited # Type: Int c.completion.cmd_history_max_items = -1 # Move on to the next part when there's only one possible completion # left. # Type: Bool c.completion.quick = True # Which categories to show (in which order) in the :open completion. # Type: FlagList # Valid values: # - searchengines # - quickmarks # - bookmarks # - history # - filesystem c.completion.open_categories = [ 'searchengines', 'quickmarks', 'bookmarks', 'history', 'filesystem'] # Editor (and arguments) to use for the `edit-*` commands. The following # placeholders are defined: * `{file}`: Filename of the file to be # edited. * `{line}`: Line in which the caret is found in the text. * # `{column}`: Column in which the caret is found in the text. * # `{line0}`: Same as `{line}`, but starting from index 0. * `{column0}`: # Same as `{column}`, but starting from index 0. # Type: ShellCommand c.editor.command = [ 'alacritty', '--command', 'vim', '{file}', '-c', 'normal {line0}G{column0}l'] # What search to start when something else than a URL is entered. # Type: String # Valid values: # - naive: Use simple/naive check. # - dns: Use DNS requests (might be slow!). # - never: Never search automatically. # - schemeless: Always search automatically unless URL explicitly contains a # scheme. c.url.auto_search = 'naive' # Page to open if :open -t/-b/-w is used without URL. Use `about:blank` # for a blank page. # Type: FuzzyUrl c.url.default_page = 'about:blank' # Search engines which can be used via the address bar. Maps a search # engine name (such as `DEFAULT`, or `ddg`) to a URL with a `{}` # placeholder. The placeholder will be replaced by the search term, use # `{{` and `}}` for literal `{`/`}` braces. The following further # placeholds are defined to configure how special characters in the # search terms are replaced by safe characters (called 'quoting'): * # `{}` and `{semiquoted}` quote everything except slashes; this is the # most sensible choice for almost all search engines (for the search # term `slash/and&` this placeholder expands to `slash/and%26amp`). # * `{quoted}` quotes all characters (for `slash/and&` this # placeholder expands to `slash%2Fand%26amp`). * `{unquoted}` quotes # nothing (for `slash/and&` this placeholder expands to # `slash/and&`). * `{0}` means the same as `{}`, but can be used # multiple times. The search engine named `DEFAULT` is used when # `url.auto_search` is turned on and something else than a URL was # entered to be opened. Other search engines can be used by prepending # the search engine name to the search term, e.g. `:open google # qutebrowser`. # Type: Dict c.url.searchengines = {'DEFAULT': 'https://google.com/search?q={semiquoted}'} # Page(s) to open at the start. # Type: List of FuzzyUrl, or FuzzyUrl c.url.start_pages = 'about:blank' # tab configs c.tabs.position = 'left' c.tabs.new_position.related = 'last' c.tabs.pinned.shrink = False c.tabs.title.format = '{audio}{aligned_index}: {current_title}' c.tabs.title.format_pinned = '{audio}{aligned_index}: {current_title}' # Foreground color of the statusbar. # Type: QssColor c.colors.statusbar.normal.fg = '#ffd7af' # Background color of the statusbar. # Type: QssColor c.colors.statusbar.normal.bg = '#282828' # Default foreground color of the URL in the statusbar. # Type: QssColor c.colors.statusbar.url.fg = '#ffd7af' # Foreground color of the URL in the statusbar on successful load # (http). # Type: QssColor c.colors.statusbar.url.success.http.fg = '#ffd7af' # Background color of the tab bar. # Type: QssColor c.colors.tabs.bar.bg = '#282828' # Foreground color of unselected odd tabs. # Type: QtColor c.colors.tabs.odd.fg = '#ffd7af' # Background color of unselected odd tabs. # Type: QtColor c.colors.tabs.odd.bg = '#444444' # Foreground color of unselected even tabs. # Type: QtColor c.colors.tabs.even.fg = '#ffd7af' # Background color of unselected even tabs. # Type: QtColor c.colors.tabs.even.bg = '#333333' # Foreground color of selected odd tabs. # Type: QtColor c.colors.tabs.selected.odd.fg = '#000000' c.colors.tabs.selected.odd.bg = '#cccccc' # Foreground color of selected even tabs. # Type: QtColor c.colors.tabs.selected.even.fg = '#000000' c.colors.tabs.selected.even.bg = '#cccccc' # Foreground color of pinned unselected odd tabs. # Type: QtColor c.colors.tabs.pinned.odd.fg = '#ffd7af' # Background color of pinned unselected odd tabs. # Type: QtColor c.colors.tabs.pinned.odd.bg = '#282828' # Foreground color of pinned unselected even tabs. # Type: QtColor c.colors.tabs.pinned.even.fg = '#ffd7af' # Background color of pinned unselected even tabs. # Type: QtColor c.colors.tabs.pinned.even.bg = '#333333' # Foreground color of pinned selected odd tabs. # Type: QtColor c.colors.tabs.pinned.selected.odd.fg = '#000000' c.colors.tabs.pinned.selected.odd.bg = '#cccccc' # Foreground color of pinned selected even tabs. # Type: QtColor c.colors.tabs.pinned.selected.even.fg = '#000000' c.colors.tabs.pinned.selected.even.bg = '#cccccc' # Render all web contents using a dark theme. Example configurations # from Chromium's `chrome://flags`: - "With simple HSL/CIELAB/RGB-based # inversion": Set `colors.webpage.darkmode.algorithm` accordingly. - # "With selective image inversion": Set # `colors.webpage.darkmode.policy.images` to `smart`. - "With selective # inversion of non-image elements": Set # `colors.webpage.darkmode.threshold.text` to 150 and # `colors.webpage.darkmode.threshold.background` to 205. - "With # selective inversion of everything": Combines the two variants above. # Type: Bool c.colors.webpage.darkmode.enabled = True c.colors.webpage.darkmode.policy.images = 'smart' c.colors.webpage.darkmode.threshold.foreground = 150 c.colors.webpage.darkmode.threshold.background = 205 c.colors.webpage.preferred_color_scheme = 'dark' c.colors.webpage.darkmode.algorithm = "lightness-cielab" # c.qt.workarounds.disable_accelerated_2d_canvas = "always" # c.colors.webpage.darkmode.algorithm = "lightness-hsl" # c.colors.webpage.darkmode.algorithm = "brightness-rgb" # c.fonts.default_family = 'Iosevka Term' c.fonts.default_family = 'IntelOne Mono Light' c.fonts.default_size = "10pt" c.colors.hints.bg = 'qlineargradient(x1:0, y1:0, x2:0, y2:1, ' + \ 'stop:0 rgba(0, 0, 133, 0.8),' + \ 'stop:1 rgba(0, 0, 66, 0.8))' c.colors.hints.fg = 'white' c.content.cookies.accept = 'all' c.zoom.default = "100%" # c.content.blocking.whitelist = ['https://www.amazon.com'] # Allow Javascript access to clipboard config.set('content.javascript.clipboard', 'access') # BitWarden stuff bitwarden = """spawn --userscript qute-bitwarden """ invocation = """--password-prompt-invocation """ script = """/home/trey/bin/qutebrowser-bitwarden-prompt.sh """ lock = """--auto-lock """ # Bindings for normal mode config.unbind('r', mode='normal') config.unbind('R', mode='normal') config.bind('', 'reload') config.bind('', 'reload --force') config.bind('gl', bitwarden + invocation + script + lock + "86400") config.bind('gp', bitwarden + invocation + script + "-w " + lock + "86400") config.bind('gP', bitwarden + invocation + script + "-w " + lock + "0") config.bind('gc', bitwarden + invocation + script + lock + "0") config.bind('', 'tab-focus')