## Type: Int
# c.auto_save.interval = 15000
-## Always restore open sites when qutebrowser is reopened.
+## 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
## when a key is bound (via `bindings.default` or `bindings.commands`),
## the mapping is ignored.
## Type: Dict
-# c.bindings.key_mappings = {'<Ctrl-[>': '<Escape>', '<Ctrl-6>': '<Ctrl-^>', '<Ctrl-M>': '<Return>', '<Ctrl-J>': '<Return>', '<Shift-Return>': '<Return>', '<Enter>': '<Return>', '<Shift-Enter>': '<Return>', '<Ctrl-Enter>': '<Ctrl-Return>'}
+# c.bindings.key_mappings = {'<Ctrl-[>': '<Escape>', '<Ctrl-6>': '<Ctrl-^>', '<Ctrl-M>': '<Return>', '<Ctrl-J>': '<Return>', '<Ctrl-I>': '<Tab>', '<Shift-Return>': '<Return>', '<Enter>': '<Return>', '<Shift-Enter>': '<Return>', '<Ctrl-Enter>': '<Ctrl-Return>'}
## Background color of the completion widget category headers.
## Type: QssColor
## Type: QssColor
# c.colors.completion.scrollbar.fg = 'white'
+## Background color of disabled items in the context menu. If set to
+## null, the Qt default is used.
+## Type: QssColor
+# c.colors.contextmenu.disabled.bg = None
+
+## Foreground color of disabled items in the context menu. If set to
+## null, the Qt default is used.
+## Type: QssColor
+# c.colors.contextmenu.disabled.fg = None
+
## Background color of the context menu. If set to null, the Qt default
## is used.
## Type: QssColor
## Type: QtColor
# c.colors.webpage.bg = 'white'
+## Which algorithm to use for modifying how colors are rendered with
+## darkmode. The `lightness-cielab` value was added with QtWebEngine 5.14
+## and is treated like `lightness-hsl` with older QtWebEngine versions.
+## Type: String
+## Valid values:
+## - lightness-cielab: Modify colors by converting them to CIELAB color space and inverting the L value. Not available with Qt < 5.14.
+## - lightness-hsl: Modify colors by converting them to the HSL color space and inverting the lightness (i.e. the "L" in HSL).
+## - brightness-rgb: Modify colors by subtracting each of r, g, and b from their maximum value.
+# c.colors.webpage.darkmode.algorithm = 'lightness-cielab'
+
+## Contrast for dark mode. This only has an effect when
+## `colors.webpage.darkmode.algorithm` is set to `lightness-hsl` or
+## `brightness-rgb`.
+## Type: Float
+# c.colors.webpage.darkmode.contrast = 0.0
+
+## 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 = False
+
+## Render all colors as grayscale. This only has an effect when
+## `colors.webpage.darkmode.algorithm` is set to `lightness-hsl` or
+## `brightness-rgb`.
+## Type: Bool
+# c.colors.webpage.darkmode.grayscale.all = False
+
+## Desaturation factor for images in dark mode. If set to 0, images are
+## left as-is. If set to 1, images are completely grayscale. Values
+## between 0 and 1 desaturate the colors accordingly.
+## Type: Float
+# c.colors.webpage.darkmode.grayscale.images = 0.0
+
+## Which images to apply dark mode to. With QtWebEngine 5.15.0, this
+## setting can cause frequent renderer process crashes due to a
+## https://codereview.qt-project.org/c/qt/qtwebengine-
+## chromium/+/304211[bug in Qt].
+## Type: String
+## Valid values:
+## - always: Apply dark mode filter to all images.
+## - never: Never apply dark mode filter to any images.
+## - smart: Apply dark mode based on image content. Not available with Qt 5.15.0.
+# c.colors.webpage.darkmode.policy.images = 'smart'
+
+## Which pages to apply dark mode to.
+## Type: String
+## Valid values:
+## - always: Apply dark mode filter to all frames, regardless of content.
+## - smart: Apply dark mode filter to frames based on background color.
+# c.colors.webpage.darkmode.policy.page = 'smart'
+
+## Threshold for inverting background elements with dark mode. Background
+## elements with brightness above this threshold will be inverted, and
+## below it will be left as in the original, non-dark-mode page. Set to
+## 256 to never invert the color or to 0 to always invert it. Note: This
+## behavior is the opposite of `colors.webpage.darkmode.threshold.text`!
+## Type: Int
+# c.colors.webpage.darkmode.threshold.background = 0
+
+## Threshold for inverting text with dark mode. Text colors with
+## brightness below this threshold will be inverted, and above it will be
+## left as in the original, non-dark-mode page. Set to 256 to always
+## invert text color or to 0 to never invert text color.
+## Type: Int
+# c.colors.webpage.darkmode.threshold.text = 256
+
## Force `prefers-color-scheme: dark` colors for websites.
## Type: Bool
c.colors.webpage.prefers_color_scheme_dark = True
## Type: Int
# c.completion.delay = 0
+## Default filesystem autocomplete suggestions for :open. The elements of
+## this list show up in the completion window under the Filesystem
+## category when the command line contains `:open` but no argument.
+## Type: List of String
+# c.completion.favorite_paths = []
+
## Height (in pixels or as percentage of the window) of the completion.
## Type: PercOrInt
c.completion.height = 150
## - quickmarks
## - bookmarks
## - history
-# c.completion.open_categories = ['searchengines', 'quickmarks', 'bookmarks', 'history']
+## - filesystem
+# c.completion.open_categories = ['searchengines', 'quickmarks', 'bookmarks', 'history', 'filesystem']
## Move on to the next part when there's only one possible completion
## left.
c.completion.shrink = True
## Format of timestamps (e.g. for the history completion). See
-## https://sqlite.org/lang_datefunc.html for allowed substitutions.
+## https://sqlite.org/lang_datefunc.html and
+## https://docs.python.org/3/library/datetime.html#strftime-strptime-
+## behavior for allowed substitutions, qutebrowser uses both sqlite and
+## Python to format its timestamps.
## Type: String
-# c.completion.timestamp_format = '%Y-%m-%d'
+# c.completion.timestamp_format = '%Y-%m-%d %H:%M'
## Execute the best-matching command on a partial match.
## Type: Bool
## - never: Never show a confirmation.
c.confirm_quit = ['downloads']
-## Automatically start playing `<video>` elements. Note: On Qt < 5.11,
-## this option needs a restart and does not support URL patterns.
+## Automatically start playing `<video>` elements.
## Type: Bool
# c.content.autoplay = True
+## List of URLs to ABP-style adblocking rulesets. Only used when Brave's
+## ABP-style adblocker is used (see `content.blocking.method`). You can
+## find an overview of available lists here:
+## https://adblockplus.org/en/subscriptions - note that the special
+## `subscribe.adblockplus.org` links aren't handled by qutebrowser, you
+## will instead need to find the link to the raw `.txt` file (e.g. by
+## extracting it from the `location` parameter of the subscribe URL and
+## URL-decoding it).
+## Type: List of Url
+# c.content.blocking.adblock.lists = ['https://easylist.to/easylist/easylist.txt', 'https://easylist.to/easylist/easyprivacy.txt']
+
+## Enable the ad/host blocker
+## Type: Bool
+# c.content.blocking.enabled = True
+
+## List of URLs to host blocklists for the host blocker. Only used when
+## the simple host-blocker is used (see `content.blocking.method`). The
+## file can be in one of the following formats: - An `/etc/hosts`-like
+## file - One host per line - A zip-file of any of the above, with either
+## only one file, or a file named `hosts` (with any extension). It's
+## also possible to add a local file or directory via a `file://` URL. In
+## case of a directory, all files in the directory are read as adblock
+## lists. The file `~/.config/qutebrowser/blocked-hosts` is always read
+## if it exists.
+## Type: List of Url
+# c.content.blocking.hosts.lists = ['https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts']
+
+## Which method of blocking ads should be used. Support for Adblock Plus
+## (ABP) syntax blocklists using Brave's Rust library requires the
+## `adblock` Python package to be installed, which is an optional
+## dependency of qutebrowser. It is required when either `adblock` or
+## `both` are selected.
+## Type: String
+## Valid values:
+## - auto: Use Brave's ABP-style adblocker if available, host blocking otherwise
+## - adblock: Use Brave's ABP-style adblocker
+## - hosts: Use hosts blocking
+## - both: Use both hosts blocking and Brave's ABP-style adblocker
+# c.content.blocking.method = 'auto'
+
+## A list of patterns that should always be loaded, despite being blocked
+## by the ad-/host-blocker. Local domains are always exempt from
+## adblocking. Note this whitelists otherwise blocked requests, not
+## first-party URLs. As an example, if `example.org` loads an ad from
+## `ads.example.org`, the whitelist entry could be
+## `https://ads.example.org/*`. If you want to disable the adblocker on a
+## given page, use the `content.blocking.enabled` setting with a URL
+## pattern instead.
+## Type: List of UrlPattern
+# c.content.blocking.whitelist = []
+
## Enable support for the HTML 5 web application cache feature. An
## application cache acts like an HTTP cache in some sense. For documents
## that use the application cache via JavaScript, the loader engine will
## Type: Bool
# c.content.canvas_reading = True
-## Which cookies to accept. 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`.
+## 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.
## Type: String
## Valid values:
## - all: Accept all cookies.
## - never: Don't accept cookies at all.
c.content.cookies.accept = 'never'
-## Store cookies. Note this option needs a restart with QtWebEngine on Qt
-## < 5.9.
+## Store cookies.
## Type: Bool
# c.content.cookies.store = True
## Type: String
# c.content.default_encoding = 'iso-8859-1'
-## Allow websites to share screen content. On Qt < 5.10, a dialog box is
-## always displayed, even if this is set to "true".
+## Allow websites to share screen content.
## Type: BoolAsk
## Valid values:
## - true
## 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.
+## 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
# c.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}'
## Type: Bool
# c.content.local_storage = True
-## Allow websites to record audio/video.
+## Allow websites to record audio.
+## Type: BoolAsk
+## Valid values:
+## - true
+## - false
+## - ask
+# c.content.media.audio_capture = 'ask'
+
+## Allow websites to record audio and video.
## Type: BoolAsk
## Valid values:
## - true
## - false
## - ask
-# c.content.media_capture = 'ask'
+# c.content.media.audio_video_capture = 'ask'
+
+## Allow websites to record video.
+## Type: BoolAsk
+## Valid values:
+## - true
+## - false
+## - ask
+# c.content.media.video_capture = 'ask'
## Allow websites to lock your mouse pointer.
## Type: BoolAsk
# c.content.private_browsing = False
## Proxy to use. In addition to the listed values, you can use a
-## `socks://...` or `http://...` URL.
+## `socks://...` or `http://...` URL. Note that with QtWebEngine, it will
+## take a couple of seconds until the change is applied, if this value is
+## changed at runtime.
## Type: Proxy
## Valid values:
## - system: Use the system wide proxy.
## Type: Bool
# c.content.webgl = True
-## Which interfaces to expose via WebRTC. On Qt 5.10, this option doesn't
-## work because of a Qt bug.
+## Which interfaces to expose via WebRTC.
## Type: String
## Valid values:
## - all-interfaces: WebRTC has the right to enumerate all interfaces and bind them to discover public interfaces.
# c.content.webrtc_ip_handling_policy = 'all-interfaces'
## Monitor load requests for cross-site scripting attempts. Suspicious
-## scripts will be blocked and reported in the inspector's JavaScript
+## scripts will be blocked and reported in the devtools JavaScript
## console. Note that bypasses for the XSS auditor are widely known and
## it can be abused for cross-site info leaks in some scenarios, see:
## https://www.chromium.org/developers/design-documents/xss-auditor
## Type: Int
# c.downloads.remove_finished = -1
-## Editor (and arguments) to use for the `open-editor` command. 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. *
+## 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
## Type: Encoding
# c.editor.encoding = 'utf-8'
+## Handler for selecting file(s) in forms. If `external`, then the
+## commands specified by `fileselect.single_file.command` and
+## `fileselect.multiple_files.command` are used to select one or multiple
+## files respectively.
+## Type: String
+## Valid values:
+## - default: Use the default file selector.
+## - external: Use an external command.
+# c.fileselect.handler = 'default'
+
+## Command (and arguments) to use for selecting multiple files in forms.
+## The command should write the selected file paths to the specified
+## file, separated by newlines. The following placeholders are defined: *
+## `{}`: Filename of the file to be written to.
+## Type: ShellCommand
+# c.fileselect.multiple_files.command = ['xterm', '-e', 'ranger', '--choosefiles={}']
+
+## Command (and arguments) to use for selecting a single file in forms.
+## The command should write the selected file path to the specified file.
+## The following placeholders are defined: * `{}`: Filename of the file
+## to be written to.
+## Type: ShellCommand
+# c.fileselect.single_file.command = ['xterm', '-e', 'ranger', '--choosefile={}']
+
## Font used in the completion categories.
## Type: Font
# c.fonts.completion.category = 'bold default_size default_family'
# c.fonts.contextmenu = None
## Font used for the debugging console.
-## Type: QtFont
+## Type: Font
# c.fonts.debug_console = 'default_size default_family'
## Default font families to use. Whenever "default_family" is used in a
## Type: Font
# c.fonts.statusbar = 'default_size default_family'
-## Font used in the tab bar.
-## Type: QtFont
-# c.fonts.tabs = 'default_size default_family'
+## Font used for selected tabs.
+## Type: Font
+# c.fonts.tabs.selected = 'default_size default_family'
+
+## Font used for unselected tabs.
+## Type: Font
+# c.fonts.tabs.unselected = 'default_size default_family'
## Font family for cursive fonts.
## Type: FontFamily
## CSS selectors used to determine which elements on a page should have
## hints.
## Type: Dict
-# c.hints.selectors = {'all': ['a', 'area', 'textarea', 'select', 'input:not([type="hidden"])', 'button', 'frame', 'iframe', 'img', 'link', 'summary', '[onclick]', '[onmousedown]', '[role="link"]', '[role="option"]', '[role="button"]', '[ng-click]', '[ngClick]', '[data-ng-click]', '[x-ng-click]', '[tabindex]'], 'links': ['a[href]', 'area[href]', 'link[href]', '[role="link"][href]'], 'images': ['img'], 'media': ['audio', 'img', 'video'], 'url': ['[src]', '[href]'], 'inputs': ['input[type="text"]', 'input[type="date"]', 'input[type="datetime-local"]', 'input[type="email"]', 'input[type="month"]', 'input[type="number"]', 'input[type="password"]', 'input[type="search"]', 'input[type="tel"]', 'input[type="time"]', 'input[type="url"]', 'input[type="week"]', 'input:not([type])', 'textarea']}
+# c.hints.selectors = {'all': ['a', 'area', 'textarea', 'select', 'input:not([type="hidden"])', 'button', 'frame', 'iframe', 'img', 'link', 'summary', '[contenteditable]:not([contenteditable="false"])', '[onclick]', '[onmousedown]', '[role="link"]', '[role="option"]', '[role="button"]', '[ng-click]', '[ngClick]', '[data-ng-click]', '[x-ng-click]', '[tabindex]'], 'links': ['a[href]', 'area[href]', 'link[href]', '[role="link"][href]'], 'images': ['img'], 'media': ['audio', 'img', 'video'], 'url': ['[src]', '[href]'], 'inputs': ['input[type="text"]', 'input[type="date"]', 'input[type="datetime-local"]', 'input[type="email"]', 'input[type="month"]', 'input[type="number"]', 'input[type="password"]', 'input[type="search"]', 'input[type="tel"]', 'input[type="time"]', 'input[type="url"]', 'input[type="week"]', 'input:not([type])', '[contenteditable]:not([contenteditable="false"])', 'textarea']}
## Make characters in hint strings uppercase.
## Type: Bool
## unreliable on this setting, and they may match the url you are
## navigating to, or the URL you are navigating from.
## Type: Bool
-# c.input.insert_mode.leave_on_load = True
+# c.input.insert_mode.leave_on_load = False
## Switch to insert mode when clicking flash and other plugins.
## Type: Bool
## Type: Bool
# c.input.links_included_in_focus_chain = True
-## Timeout (in milliseconds) for partially typed key bindings. If the
-## current input forms only partial matches, the keystring will be
-## cleared after this time.
-## Type: Int
-# c.input.partial_timeout = 5000
+## Enable back and forward buttons on the mouse.
+## Type: Bool
+# c.input.mouse.back_forward_buttons = True
## Enable Opera-like mouse rocker gestures. This disables the context
## menu.
## Type: Bool
-# c.input.rocker_gestures = False
+# c.input.mouse.rocker_gestures = False
+
+## Timeout (in milliseconds) for partially typed key bindings. If the
+## current input forms only partial matches, the keystring will be
+## cleared after this time. If set to 0, partially typed bindings are
+## never cleared.
+## Type: Int
+c.input.partial_timeout = 5000
## Enable spatial navigation. Spatial navigation consists in the ability
## to navigate between focusable elements in a Web page, such as
## Type: Int
# c.keyhint.radius = 6
+## Level for console (stdout/stderr) logs. Ignored if the `--loglevel` or
+## `--debug` CLI flags are used.
+## Type: LogLevel
+## Valid values:
+## - vdebug
+## - debug
+## - info
+## - warning
+## - error
+## - critical
+# c.logging.level.console = 'info'
+
+## Level for in-memory logs.
+## Type: LogLevel
+## Valid values:
+## - vdebug
+## - debug
+## - info
+## - warning
+## - error
+## - critical
+# c.logging.level.ram = 'debug'
+
## Duration (in milliseconds) to show messages in the statusbar for. Set
## to 0 to never clear messages.
## Type: Int
## - 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'
## Which window to choose when opening links as new tabs. When
## Type: List of String
# c.qt.args = []
+## Additional environment variables to set. Setting an environment
+## variable to null/None will unset it.
+## Type: Dict
+# c.qt.environ = {}
+
## Force a Qt platform to use. This sets the `QT_QPA_PLATFORM`
## environment variable and is useful to force using the XCB plugin when
## running QtWebEngine on Wayland.
## - single-process: Run all tabs in a single process. This should be used for debugging purposes only, and it disables `:open --private`.
# c.qt.process_model = 'process-per-site-instance'
-## When to show the scrollbar.
+## When/how to show the scrollbar.
## Type: String
## Valid values:
## - always: Always show the scrollbar.
## - never: Never show the scrollbar.
## - when-searching: Show the scrollbar when searching for text in the webpage. With the QtWebKit backend, this is equal to `never`.
-c.scrolling.bar = 'when-searching'
+## - overlay: Show an overlay scrollbar. On macOS, this is unavailable and equal to `when-searching`; with the QtWebKit backend, this is equal to `never`. Enabling/disabling overlay scrollbars requires a restart.
+# c.scrolling.bar = 'overlay'
## Enable smooth scrolling for web pages. Note smooth scrolling does not
## work with the `:scroll-px` command.
## Type: Bool
c.session.lazy_restore = True
+## Whether to automatically save a session when it is closed.
+## Type: Bool
+# c.session.save_when_close = True
+
+## Which sessions to load on startup. None will load the last saved
+## sessions from the sate file, if you want to not load any sessions,
+## pass an empty list.
+## Type: List of String
+# c.session.startup_sessions = None
+
## Languages to use for spell checking. You can check for available
## languages and install dictionaries using scripts/dictcli.py. Run the
## script with -h/--help for instructions.
## - vi-VN: Vietnamese (Viet Nam)
c.spellcheck.languages = ['en-GB']
-## Hide the statusbar unless a message is shown.
-## Type: Bool
-# c.statusbar.hide = False
-
## Padding (in pixels) for the statusbar.
## Type: Padding
# c.statusbar.padding = {'top': 1, 'bottom': 1, 'left': 0, 'right': 0}
## - bottom
# c.statusbar.position = 'bottom'
+## When to show the statusbar.
+## Type: String
+## Valid values:
+## - always: Always show the statusbar.
+## - never: Always hide the statusbar.
+## - in-mode: Show the statusbar when in modes other than normal mode.
+# c.statusbar.show = 'always'
+
## List of widgets displayed in the statusbar.
## Type: List of String
## Valid values:
## Open new tabs (middleclick/ctrl+click) in the background.
## Type: Bool
-# c.tabs.background = False
+# c.tabs.background = True
## Mouse button with which to close tabs.
## Type: String
## Type: Float
# c.tabs.favicons.scale = 1.0
-## When to show favicons in the tab bar.
+## When to show favicons in the tab bar. When switching this from never
+## to always/pinned, note that favicons might not be loaded yet, thus
+## tabs might require a reload to display them.
## Type: String
## Valid values:
## - always: Always show favicons.
## Type: Int
# c.tabs.indicator.width = 3
-## How to behave when the last tab is closed.
+## How to behave when the last tab is closed. If the
+## `tabs.tabs_are_windows` setting is set, this is ignored and the
+## behavior is always identical to the `close` value.
## Type: String
## Valid values:
## - ignore: Don't do anything.
## * `{perc}`: Percentage as a string like `[10%]`.
## * `{perc_raw}`: Raw percentage, e.g. `10`.
## * `{current_title}`: Title of the current web page.
-## * `{title_sep}`: The string ` - ` if a title is set, empty otherwise.
+## * `{title_sep}`: The string `" - "` if a title is set, empty otherwise.
## * `{index}`: Index of this tab.
+## * `{aligned_index}`: Index of this tab padded with spaces to have the same width.
## * `{id}`: Internal tab ID of this tab.
## * `{scroll_pos}`: Page scroll position.
## * `{host}`: Host of the current web page.
-## * `{backend}`: Either ''webkit'' or ''webengine''
+## * `{backend}`: Either `webkit` or `webengine`
## * `{private}`: Indicates when private mode is enabled.
## * `{current_url}`: URL of the current web page.
## * `{protocol}`: Protocol (http/https/...) of the current web page.
## Type: Bool
# c.tabs.tooltips = True
-## Number of close tab actions to remember, per window (-1 for no
-## maximum).
+## Number of closed tabs (per window) and closed windows to remember for
+## :undo (-1 for no maximum).
## Type: Int
# c.tabs.undo_stack_size = 100
## Width (in pixels or as percentage of the window) of the tab bar if
## it's vertical.
## Type: PercOrInt
-# c.tabs.width = '20%'
+# c.tabs.width = '15%'
## Wrap when changing tabs.
## Type: Bool
## - 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`
## placeholder expands to `slash%2Fand%26amp`).
## * `{unquoted}` quotes nothing (for `slash/and&` this placeholder
## expands to `slash/and&`).
-## The search engine named `DEFAULT` is used when
+## * `{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
+## the search engine name to the search term, e.g. `:open google
## qutebrowser`.
## Type: Dict
c.url.searchengines = {'DEFAULT': 'https://duckduckgo.com/?t=chakra&q={}',
## Type: FormatString
# c.window.title_format = '{perc}{current_title}{title_sep}qutebrowser'
+## Set the main window background to transparent. This allows having a
+## transparent tab- or statusbar (might require a compositor such as
+## picom). However, it breaks some functionality such as dmenu embedding
+## via its `-w` option. On some systems, it was additionally reported
+## that main window transparency negatively affects performance. Note
+## this setting only affects windows opened after setting it.
+## Type: Bool
+# c.window.transparent = False
+
## Default zoom level.
## Type: Perc
# c.zoom.default = '100%'
# c.zoom.text_only = False
## Bindings for normal mode
-# config.bind("'", 'enter-mode jump_mark')
+# config.bind("'", 'mode-enter jump_mark')
# config.bind('+', 'zoom-in')
# config.bind('-', 'zoom-out')
# config.bind('.', 'repeat-command')
# config.bind('<Ctrl-PgDown>', 'tab-next')
# config.bind('<Ctrl-PgUp>', 'tab-prev')
# config.bind('<Ctrl-Q>', 'quit')
-# config.bind('<Ctrl-Return>', 'follow-selected -t')
+# 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-T>', 'open -t')
# config.bind('<Ctrl-Tab>', 'tab-focus last')
# config.bind('<Ctrl-U>', 'scroll-page 0 -0.5')
-# config.bind('<Ctrl-V>', 'enter-mode passthrough')
+# 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('<Escape>', 'clear-keychain ;; search ;; fullscreen --leave ;; fake-key <Escape>')
# config.bind('<F11>', 'fullscreen')
# config.bind('<F5>', 'reload')
-# config.bind('<Return>', 'follow-selected')
+# config.bind('<Return>', 'selection-follow')
# config.bind('<back>', 'back')
# config.bind('<forward>', 'forward')
# config.bind('=', 'zoom')
# config.bind('?', 'set-cmd-text ?')
-# config.bind('@', 'run-macro')
+# 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('Sq', 'open qute://bookmarks')
# config.bind('Ss', 'open qute://settings')
# config.bind('T', 'tab-focus')
+# config.bind('U', 'undo -w')
+# config.bind('V', 'mode-enter caret ;; selection-toggle --line')
# config.bind('ZQ', 'quit')
# config.bind('ZZ', 'quit --save')
# config.bind('[[', 'navigate prev')
# config.bind(']]', 'navigate next')
-# config.bind('`', 'enter-mode set_mark')
+# 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('gB', 'set-cmd-text -s :bookmark-load -t')
# config.bind('gC', 'tab-clone')
# config.bind('gD', 'tab-give')
+# config.bind('gJ', 'tab-move +')
+# config.bind('gK', 'tab-move -')
# 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('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', 'enter-mode insert')
+# config.bind('i', 'mode-enter insert')
# config.bind('j', 'scroll down')
# config.bind('k', 'scroll up')
# config.bind('l', 'scroll right')
# config.bind('o', 'set-cmd-text -s :open')
# config.bind('pP', 'open -- {primary}')
# config.bind('pp', 'open -- {clipboard}')
-# config.bind('q', 'record-macro')
+# config.bind('q', 'macro-record')
# config.bind('r', 'reload')
# config.bind('sf', 'save')
# config.bind('sk', 'set-cmd-text -s :bind')
# 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', 'enter-mode caret')
+# config.bind('v', 'mode-enter caret')
# config.bind('wB', 'set-cmd-text -s :bookmark-load -w')
+# config.bind('wIf', 'devtools-focus')
+# config.bind('wIh', 'devtools left')
+# config.bind('wIj', 'devtools bottom')
+# config.bind('wIk', 'devtools top')
+# config.bind('wIl', 'devtools right')
+# config.bind('wIw', 'devtools window')
# 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('wi', 'devtools')
# config.bind('wl', 'forward -w')
# config.bind('wo', 'set-cmd-text -s :open -w')
# config.bind('wp', 'open -w -- {clipboard}')
## 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>', 'leave-mode', mode='caret')
+# config.bind('<Ctrl-Space>', 'selection-drop', mode='caret')
+# config.bind('<Escape>', 'mode-leave', mode='caret')
# config.bind('<Return>', 'yank selection', mode='caret')
-# config.bind('<Space>', 'toggle-selection', mode='caret')
+# config.bind('<Space>', 'selection-toggle', 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('V', 'selection-toggle --line', 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', 'enter-mode normal', 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('o', 'selection-reverse', mode='caret')
+# config.bind('v', 'selection-toggle', 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('<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>', 'leave-mode', mode='command')
+# config.bind('<Escape>', 'mode-leave', mode='command')
+# config.bind('<PgDown>', 'completion-item-focus next-page', mode='command')
+# config.bind('<PgUp>', 'completion-item-focus prev-page', 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('<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>', 'leave-mode', mode='hint')
-# config.bind('<Return>', 'follow-hint', mode='hint')
+# config.bind('<Escape>', 'mode-leave', mode='hint')
+# config.bind('<Return>', 'hint-follow', mode='hint')
## Bindings for insert mode
-# config.bind('<Ctrl-E>', 'open-editor', mode='insert')
-# config.bind('<Escape>', 'leave-mode', mode='insert')
+# config.bind('<Ctrl-E>', 'edit-text', mode='insert')
+# config.bind('<Escape>', 'mode-leave', mode='insert')
# config.bind('<Shift-Ins>', 'insert-text -- {primary}', mode='insert')
## Bindings for passthrough mode
-# config.bind('<Shift-Escape>', 'leave-mode', mode='passthrough')
+# config.bind('<Shift-Escape>', 'mode-leave', mode='passthrough')
## Bindings for prompt mode
# config.bind('<Alt-B>', 'rl-backward-word', 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>', 'leave-mode', mode='prompt')
+# config.bind('<Escape>', 'mode-leave', 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>', 'leave-mode', mode='register')
+# config.bind('<Escape>', 'mode-leave', 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>', 'leave-mode', mode='yesno')
+# config.bind('<Escape>', 'mode-leave', 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')