qutebrowser’s Template config.py
Updated  by  nm  2025-January-21

Page contents

News

Ongoing  According to Repology, the latest packaged qutebrowser is version latest packaged version of qutebrowser. To keep up with qutebrowser releases, see github.com/qutebrowser/qutebrowser/releases, listi.jpberlin.de/pipermail/qutebrowser/, or old.reddit.com/r/qutebrowser/. To learn about upcoming qutebrowser releases, see github.com/qutebrowser/qutebrowser/milestones.

2019-August-31  Published this evolving⁠[1] article.

 

Prerequisites

This article assumes you know the basics about the qutebrowser web browser. To learn about qutebrowser, see Infinite Ink’s #qutebrowser Portal.

 

:config-write-py --defaults

Within qutebrowser you can create a template config.py by running one of the following colon commands.

:config-write-py --defaults
:config-write-py -d

These equivalent commands create a file named config.py in your qutebrowser config[2] directory that contains most of qutebrowser’s default settings. For more about this, see…

Uncommented default configuration settings

The template config.py that qutebrowser v3.4.0 creates is 2514 lines of comments. Below are these 2514 lines with each default configuration setting uncommented. I removed the leading from these lines so they are displayed with Python syntax highlighting.

 

Starting with qutebrowser v2.0.0, which was released 2021-⁠January-⁠28, if you use a config.py file, you must explicitly specify one of the following in it.

  • config.load_autoconfig(False)

  • config.load_autoconfig(True), which is equivalent to config.load_autoconfig()

The second setting (True) is emphasized in line 15 below.

 

💡

In your config.py, leave most default settings commented out because there is no need for qutebrowser to read and process default settings.

qutebrowser’s default key bindings are specified starting at line 2204. To learn about key bindings, see Infinite Ink’s qutebrowser Key Bindings.

 

   1## Autogenerated config.py
   2##
   3## NOTE: config.py is intended for advanced users who are comfortable
   4## with manually migrating the config file on qutebrowser upgrades. If
   5## you prefer, you can also configure qutebrowser using the
   6## :set/:bind/:config-* commands without having to write a config.py
   7## file.
   8##
   9## Documentation:
  10##   qute://help/configuring.html
  11##   qute://help/settings.html
  12
  13## This is here so configs done via the GUI are still loaded.
  14## Remove it to not load settings done via the GUI.
  15config.load_autoconfig(True)
  16
  17## Aliases for commands. The keys of the given dictionary are the
  18## aliases, while the values are the commands they map to.
  19## Type: Dict
  20c.aliases = {'w': 'session-save', 'q': 'close', 'qa': 'quit', 'wq': 'quit --save', 'wqa': 'quit --save'}
  21
  22## Time interval (in milliseconds) between auto-saves of
  23## config/cookies/etc.
  24## Type: Int
  25c.auto_save.interval = 15000
  26
  27## Always restore open sites when qutebrowser is reopened. Without this
  28## option set, `:wq` (`:quit --save`) needs to be used to save open tabs
  29## (and restore them), while quitting qutebrowser in any other way will
  30## not save/restore the session. By default, this will save to the
  31## session which was last loaded. This behavior can be customized via the
  32## `session.default_name` setting.
  33## Type: Bool
  34c.auto_save.session = False
  35
  36## Backend to use to display websites. qutebrowser supports two different
  37## web rendering engines / backends, QtWebEngine and QtWebKit (not
  38## recommended). QtWebEngine is Qt's official successor to QtWebKit, and
  39## both the default/recommended backend. It's based on a stripped-down
  40## Chromium and regularly updated with security fixes and new features by
  41## the Qt project: https://wiki.qt.io/QtWebEngine QtWebKit was
  42## qutebrowser's original backend when the project was started. However,
  43## support for QtWebKit was discontinued by the Qt project with Qt 5.6 in
  44## 2016. The development of QtWebKit was picked up in an official fork:
  45## https://github.com/qtwebkit/qtwebkit - however, the project seems to
  46## have stalled again. The latest release (5.212.0 Alpha 4) from March
  47## 2020 is based on a WebKit version from 2016, with many known security
  48## vulnerabilities. Additionally, there is no process isolation and
  49## sandboxing. Due to all those issues, while support for QtWebKit is
  50## still available in qutebrowser for now, using it is strongly
  51## discouraged.
  52## Type: String
  53## Valid values:
  54##   - webengine: Use QtWebEngine (based on Chromium - recommended).
  55##   - webkit: Use QtWebKit (based on WebKit, similar to Safari - many known security issues!).
  56c.backend = 'webengine'
  57
  58## Map keys to other keys, so that they are equivalent in all modes. When
  59## the key used as dictionary-key is pressed, the binding for the key
  60## used as dictionary-value is invoked instead. This is useful for global
  61## remappings of keys, for example to map <Ctrl-[> to <Escape>. NOTE:
  62## This should only be used if two keys should always be equivalent, i.e.
  63## for things like <Enter> (keypad) and <Return> (non-keypad). For normal
  64## command bindings, qutebrowser works differently to vim: You always
  65## bind keys to commands, usually via `:bind` or `config.bind()`. Instead
  66## of using this setting, consider finding the command a key is bound to
  67## (e.g. via `:bind gg`) and then binding the same command to the desired
  68## key. Note that when a key is bound (via `bindings.default` or
  69## `bindings.commands`), the mapping is ignored.
  70## Type: Dict
  71c.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>'}
  72
  73## When to show a changelog after qutebrowser was upgraded.
  74## Type: String
  75## Valid values:
  76##   - major: Show changelog for major upgrades (e.g. v2.0.0 -> v3.0.0).
  77##   - minor: Show changelog for major and minor upgrades (e.g. v2.0.0 -> v2.1.0).
  78##   - patch: Show changelog for major, minor and patch upgrades (e.g. v2.0.0 -> v2.0.1).
  79##   - never: Never show changelog after upgrades.
  80c.changelog_after_upgrade = 'minor'
  81
  82## Background color of the completion widget category headers.
  83## Type: QssColor
  84c.colors.completion.category.bg = 'qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #888888, stop:1 #505050)'
  85
  86## Bottom border color of the completion widget category headers.
  87## Type: QssColor
  88c.colors.completion.category.border.bottom = 'black'
  89
  90## Top border color of the completion widget category headers.
  91## Type: QssColor
  92c.colors.completion.category.border.top = 'black'
  93
  94## Foreground color of completion widget category headers.
  95## Type: QtColor
  96c.colors.completion.category.fg = 'white'
  97
  98## Background color of the completion widget for even rows.
  99## Type: QssColor
 100c.colors.completion.even.bg = '#333333'
 101
 102## Text color of the completion widget. May be a single color to use for
 103## all columns or a list of three colors, one for each column.
 104## Type: List of QtColor, or QtColor
 105c.colors.completion.fg = ['white', 'white', 'white']
 106
 107## Background color of the selected completion item.
 108## Type: QssColor
 109c.colors.completion.item.selected.bg = '#e8c000'
 110
 111## Bottom border color of the selected completion item.
 112## Type: QssColor
 113c.colors.completion.item.selected.border.bottom = '#bbbb00'
 114
 115## Top border color of the selected completion item.
 116## Type: QssColor
 117c.colors.completion.item.selected.border.top = '#bbbb00'
 118
 119## Foreground color of the selected completion item.
 120## Type: QtColor
 121c.colors.completion.item.selected.fg = 'black'
 122
 123## Foreground color of the matched text in the selected completion item.
 124## Type: QtColor
 125c.colors.completion.item.selected.match.fg = '#ff4444'
 126
 127## Foreground color of the matched text in the completion.
 128## Type: QtColor
 129c.colors.completion.match.fg = '#ff4444'
 130
 131## Background color of the completion widget for odd rows.
 132## Type: QssColor
 133c.colors.completion.odd.bg = '#444444'
 134
 135## Color of the scrollbar in the completion view.
 136## Type: QssColor
 137c.colors.completion.scrollbar.bg = '#333333'
 138
 139## Color of the scrollbar handle in the completion view.
 140## Type: QssColor
 141c.colors.completion.scrollbar.fg = 'white'
 142
 143## Background color of disabled items in the context menu. If set to
 144## null, the Qt default is used.
 145## Type: QssColor
 146c.colors.contextmenu.disabled.bg = None
 147
 148## Foreground color of disabled items in the context menu. If set to
 149## null, the Qt default is used.
 150## Type: QssColor
 151c.colors.contextmenu.disabled.fg = None
 152
 153## Background color of the context menu. If set to null, the Qt default
 154## is used.
 155## Type: QssColor
 156c.colors.contextmenu.menu.bg = None
 157
 158## Foreground color of the context menu. If set to null, the Qt default
 159## is used.
 160## Type: QssColor
 161c.colors.contextmenu.menu.fg = None
 162
 163## Background color of the context menu's selected item. If set to null,
 164## the Qt default is used.
 165## Type: QssColor
 166c.colors.contextmenu.selected.bg = None
 167
 168## Foreground color of the context menu's selected item. If set to null,
 169## the Qt default is used.
 170## Type: QssColor
 171c.colors.contextmenu.selected.fg = None
 172
 173## Background color for the download bar.
 174## Type: QssColor
 175c.colors.downloads.bar.bg = 'black'
 176
 177## Background color for downloads with errors.
 178## Type: QtColor
 179c.colors.downloads.error.bg = 'red'
 180
 181## Foreground color for downloads with errors.
 182## Type: QtColor
 183c.colors.downloads.error.fg = 'white'
 184
 185## Color gradient start for download backgrounds.
 186## Type: QtColor
 187c.colors.downloads.start.bg = '#0000aa'
 188
 189## Color gradient start for download text.
 190## Type: QtColor
 191c.colors.downloads.start.fg = 'white'
 192
 193## Color gradient stop for download backgrounds.
 194## Type: QtColor
 195c.colors.downloads.stop.bg = '#00aa00'
 196
 197## Color gradient end for download text.
 198## Type: QtColor
 199c.colors.downloads.stop.fg = 'white'
 200
 201## Color gradient interpolation system for download backgrounds.
 202## Type: ColorSystem
 203## Valid values:
 204##   - rgb: Interpolate in the RGB color system.
 205##   - hsv: Interpolate in the HSV color system.
 206##   - hsl: Interpolate in the HSL color system.
 207##   - none: Don't show a gradient.
 208c.colors.downloads.system.bg = 'rgb'
 209
 210## Color gradient interpolation system for download text.
 211## Type: ColorSystem
 212## Valid values:
 213##   - rgb: Interpolate in the RGB color system.
 214##   - hsv: Interpolate in the HSV color system.
 215##   - hsl: Interpolate in the HSL color system.
 216##   - none: Don't show a gradient.
 217c.colors.downloads.system.fg = 'rgb'
 218
 219## Background color for hints. Note that you can use a `rgba(...)` value
 220## for transparency.
 221## Type: QssColor
 222c.colors.hints.bg = 'qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 247, 133, 0.8), stop:1 rgba(255, 197, 66, 0.8))'
 223
 224## Font color for hints.
 225## Type: QssColor
 226c.colors.hints.fg = 'black'
 227
 228## Font color for the matched part of hints.
 229## Type: QtColor
 230c.colors.hints.match.fg = 'green'
 231
 232## Background color of the keyhint widget.
 233## Type: QssColor
 234c.colors.keyhint.bg = 'rgba(0, 0, 0, 80%)'
 235
 236## Text color for the keyhint widget.
 237## Type: QssColor
 238c.colors.keyhint.fg = '#FFFFFF'
 239
 240## Highlight color for keys to complete the current keychain.
 241## Type: QssColor
 242c.colors.keyhint.suffix.fg = '#FFFF00'
 243
 244## Background color of an error message.
 245## Type: QssColor
 246c.colors.messages.error.bg = 'red'
 247
 248## Border color of an error message.
 249## Type: QssColor
 250c.colors.messages.error.border = '#bb0000'
 251
 252## Foreground color of an error message.
 253## Type: QssColor
 254c.colors.messages.error.fg = 'white'
 255
 256## Background color of an info message.
 257## Type: QssColor
 258c.colors.messages.info.bg = 'black'
 259
 260## Border color of an info message.
 261## Type: QssColor
 262c.colors.messages.info.border = '#333333'
 263
 264## Foreground color of an info message.
 265## Type: QssColor
 266c.colors.messages.info.fg = 'white'
 267
 268## Background color of a warning message.
 269## Type: QssColor
 270c.colors.messages.warning.bg = 'darkorange'
 271
 272## Border color of a warning message.
 273## Type: QssColor
 274c.colors.messages.warning.border = '#d47300'
 275
 276## Foreground color of a warning message.
 277## Type: QssColor
 278c.colors.messages.warning.fg = 'black'
 279
 280## Background color for prompts.
 281## Type: QssColor
 282c.colors.prompts.bg = '#444444'
 283
 284## Border used around UI elements in prompts.
 285## Type: String
 286c.colors.prompts.border = '1px solid gray'
 287
 288## Foreground color for prompts.
 289## Type: QssColor
 290c.colors.prompts.fg = 'white'
 291
 292## Background color for the selected item in filename prompts.
 293## Type: QssColor
 294c.colors.prompts.selected.bg = 'grey'
 295
 296## Foreground color for the selected item in filename prompts.
 297## Type: QssColor
 298c.colors.prompts.selected.fg = 'white'
 299
 300## Background color of the statusbar in caret mode.
 301## Type: QssColor
 302c.colors.statusbar.caret.bg = 'purple'
 303
 304## Foreground color of the statusbar in caret mode.
 305## Type: QssColor
 306c.colors.statusbar.caret.fg = 'white'
 307
 308## Background color of the statusbar in caret mode with a selection.
 309## Type: QssColor
 310c.colors.statusbar.caret.selection.bg = '#a12dff'
 311
 312## Foreground color of the statusbar in caret mode with a selection.
 313## Type: QssColor
 314c.colors.statusbar.caret.selection.fg = 'white'
 315
 316## Background color of the statusbar in command mode.
 317## Type: QssColor
 318c.colors.statusbar.command.bg = 'black'
 319
 320## Foreground color of the statusbar in command mode.
 321## Type: QssColor
 322c.colors.statusbar.command.fg = 'white'
 323
 324## Background color of the statusbar in private browsing + command mode.
 325## Type: QssColor
 326c.colors.statusbar.command.private.bg = 'darkslategray'
 327
 328## Foreground color of the statusbar in private browsing + command mode.
 329## Type: QssColor
 330c.colors.statusbar.command.private.fg = 'white'
 331
 332## Background color of the statusbar in insert mode.
 333## Type: QssColor
 334c.colors.statusbar.insert.bg = 'darkgreen'
 335
 336## Foreground color of the statusbar in insert mode.
 337## Type: QssColor
 338c.colors.statusbar.insert.fg = 'white'
 339
 340## Background color of the statusbar.
 341## Type: QssColor
 342c.colors.statusbar.normal.bg = 'black'
 343
 344## Foreground color of the statusbar.
 345## Type: QssColor
 346c.colors.statusbar.normal.fg = 'white'
 347
 348## Background color of the statusbar in passthrough mode.
 349## Type: QssColor
 350c.colors.statusbar.passthrough.bg = 'darkblue'
 351
 352## Foreground color of the statusbar in passthrough mode.
 353## Type: QssColor
 354c.colors.statusbar.passthrough.fg = 'white'
 355
 356## Background color of the statusbar in private browsing mode.
 357## Type: QssColor
 358c.colors.statusbar.private.bg = '#666666'
 359
 360## Foreground color of the statusbar in private browsing mode.
 361## Type: QssColor
 362c.colors.statusbar.private.fg = 'white'
 363
 364## Background color of the progress bar.
 365## Type: QssColor
 366c.colors.statusbar.progress.bg = 'white'
 367
 368## Foreground color of the URL in the statusbar on error.
 369## Type: QssColor
 370c.colors.statusbar.url.error.fg = 'orange'
 371
 372## Default foreground color of the URL in the statusbar.
 373## Type: QssColor
 374c.colors.statusbar.url.fg = 'white'
 375
 376## Foreground color of the URL in the statusbar for hovered links.
 377## Type: QssColor
 378c.colors.statusbar.url.hover.fg = 'aqua'
 379
 380## Foreground color of the URL in the statusbar on successful load
 381## (http).
 382## Type: QssColor
 383c.colors.statusbar.url.success.http.fg = 'white'
 384
 385## Foreground color of the URL in the statusbar on successful load
 386## (https).
 387## Type: QssColor
 388c.colors.statusbar.url.success.https.fg = 'lime'
 389
 390## Foreground color of the URL in the statusbar when there's a warning.
 391## Type: QssColor
 392c.colors.statusbar.url.warn.fg = 'yellow'
 393
 394## Background color of the tab bar.
 395## Type: QssColor
 396c.colors.tabs.bar.bg = '#555555'
 397
 398## Background color of unselected even tabs.
 399## Type: QtColor
 400c.colors.tabs.even.bg = 'darkgrey'
 401
 402## Foreground color of unselected even tabs.
 403## Type: QtColor
 404c.colors.tabs.even.fg = 'white'
 405
 406## Color for the tab indicator on errors.
 407## Type: QtColor
 408c.colors.tabs.indicator.error = '#ff0000'
 409
 410## Color gradient start for the tab indicator.
 411## Type: QtColor
 412c.colors.tabs.indicator.start = '#0000aa'
 413
 414## Color gradient end for the tab indicator.
 415## Type: QtColor
 416c.colors.tabs.indicator.stop = '#00aa00'
 417
 418## Color gradient interpolation system for the tab indicator.
 419## Type: ColorSystem
 420## Valid values:
 421##   - rgb: Interpolate in the RGB color system.
 422##   - hsv: Interpolate in the HSV color system.
 423##   - hsl: Interpolate in the HSL color system.
 424##   - none: Don't show a gradient.
 425c.colors.tabs.indicator.system = 'rgb'
 426
 427## Background color of unselected odd tabs.
 428## Type: QtColor
 429c.colors.tabs.odd.bg = 'grey'
 430
 431## Foreground color of unselected odd tabs.
 432## Type: QtColor
 433c.colors.tabs.odd.fg = 'white'
 434
 435## Background color of pinned unselected even tabs.
 436## Type: QtColor
 437c.colors.tabs.pinned.even.bg = 'darkseagreen'
 438
 439## Foreground color of pinned unselected even tabs.
 440## Type: QtColor
 441c.colors.tabs.pinned.even.fg = 'white'
 442
 443## Background color of pinned unselected odd tabs.
 444## Type: QtColor
 445c.colors.tabs.pinned.odd.bg = 'seagreen'
 446
 447## Foreground color of pinned unselected odd tabs.
 448## Type: QtColor
 449c.colors.tabs.pinned.odd.fg = 'white'
 450
 451## Background color of pinned selected even tabs.
 452## Type: QtColor
 453c.colors.tabs.pinned.selected.even.bg = 'black'
 454
 455## Foreground color of pinned selected even tabs.
 456## Type: QtColor
 457c.colors.tabs.pinned.selected.even.fg = 'white'
 458
 459## Background color of pinned selected odd tabs.
 460## Type: QtColor
 461c.colors.tabs.pinned.selected.odd.bg = 'black'
 462
 463## Foreground color of pinned selected odd tabs.
 464## Type: QtColor
 465c.colors.tabs.pinned.selected.odd.fg = 'white'
 466
 467## Background color of selected even tabs.
 468## Type: QtColor
 469c.colors.tabs.selected.even.bg = 'black'
 470
 471## Foreground color of selected even tabs.
 472## Type: QtColor
 473c.colors.tabs.selected.even.fg = 'white'
 474
 475## Background color of selected odd tabs.
 476## Type: QtColor
 477c.colors.tabs.selected.odd.bg = 'black'
 478
 479## Foreground color of selected odd tabs.
 480## Type: QtColor
 481c.colors.tabs.selected.odd.fg = 'white'
 482
 483## Background color of tooltips. If set to null, the Qt default is used.
 484## Type: QssColor
 485c.colors.tooltip.bg = None
 486
 487## Foreground color of tooltips. If set to null, the Qt default is used.
 488## Type: QssColor
 489c.colors.tooltip.fg = None
 490
 491## Background color for webpages if unset (or empty to use the theme's
 492## color).
 493## Type: QtColor
 494c.colors.webpage.bg = 'white'
 495
 496## Which algorithm to use for modifying how colors are rendered with dark
 497## mode. The `lightness-cielab` value was added with QtWebEngine 5.14 and
 498## is treated like `lightness-hsl` with older QtWebEngine versions.
 499## Type: String
 500## Valid values:
 501##   - lightness-cielab: Modify colors by converting them to CIELAB color space and inverting the L value. Not available with Qt < 5.14.
 502##   - lightness-hsl: Modify colors by converting them to the HSL color space and inverting the lightness (i.e. the "L" in HSL).
 503##   - brightness-rgb: Modify colors by subtracting each of r, g, and b from their maximum value.
 504c.colors.webpage.darkmode.algorithm = 'lightness-cielab'
 505
 506## Contrast for dark mode. This only has an effect when
 507## `colors.webpage.darkmode.algorithm` is set to `lightness-hsl` or
 508## `brightness-rgb`.
 509## Type: Float
 510c.colors.webpage.darkmode.contrast = 0.0
 511
 512## Render all web contents using a dark theme. On QtWebEngine < 6.7, this
 513## setting requires a restart and does not support URL patterns, only the
 514## global setting is applied. Example configurations from Chromium's
 515## `chrome://flags`: - "With simple HSL/CIELAB/RGB-based inversion": Set
 516## `colors.webpage.darkmode.algorithm` accordingly, and   set
 517## `colors.webpage.darkmode.policy.images` to `never`.  - "With selective
 518## image inversion": qutebrowser default settings.
 519## Type: Bool
 520c.colors.webpage.darkmode.enabled = False
 521
 522## Which images to apply dark mode to.
 523## Type: String
 524## Valid values:
 525##   - always: Apply dark mode filter to all images.
 526##   - never: Never apply dark mode filter to any images.
 527##   - smart: Apply dark mode based on image content. Not available with Qt 5.15.0.
 528##   - smart-simple: On QtWebEngine 6.6, use a simpler algorithm for smart mode (based on numbers of colors and transparency), rather than an ML-based model. Same as 'smart' on older QtWebEnigne versions.
 529c.colors.webpage.darkmode.policy.images = 'smart'
 530
 531## Which pages to apply dark mode to. The underlying Chromium setting has
 532## been removed in QtWebEngine 5.15.3, thus this setting is ignored
 533## there. Instead, every element is now classified individually.
 534## Type: String
 535## Valid values:
 536##   - always: Apply dark mode filter to all frames, regardless of content.
 537##   - smart: Apply dark mode filter to frames based on background color.
 538c.colors.webpage.darkmode.policy.page = 'smart'
 539
 540## Threshold for inverting background elements with dark mode. Background
 541## elements with brightness above this threshold will be inverted, and
 542## below it will be left as in the original, non-dark-mode page. Set to
 543## 256 to never invert the color or to 0 to always invert it. Note: This
 544## behavior is the opposite of
 545## `colors.webpage.darkmode.threshold.foreground`!
 546## Type: Int
 547c.colors.webpage.darkmode.threshold.background = 0
 548
 549## Threshold for inverting text with dark mode. Text colors with
 550## brightness below this threshold will be inverted, and above it will be
 551## left as in the original, non-dark-mode page. Set to 256 to always
 552## invert text color or to 0 to never invert text color.
 553## Type: Int
 554c.colors.webpage.darkmode.threshold.foreground = 256
 555
 556## Value to use for `prefers-color-scheme:` for websites. The "light"
 557## value is only available with QtWebEngine 5.15.2+. On older versions,
 558## it is the same as "auto". The "auto" value is broken on QtWebEngine
 559## 5.15.2 due to a Qt bug. There, it will fall back to "light"
 560## unconditionally.
 561## Type: String
 562## Valid values:
 563##   - auto: Use the system-wide color scheme setting.
 564##   - light: Force a light theme.
 565##   - dark: Force a dark theme.
 566c.colors.webpage.preferred_color_scheme = 'auto'
 567
 568## Number of commands to save in the command history. 0: no history / -1:
 569## unlimited
 570## Type: Int
 571c.completion.cmd_history_max_items = 100
 572
 573## Delay (in milliseconds) before updating completions after typing a
 574## character.
 575## Type: Int
 576c.completion.delay = 0
 577
 578## Default filesystem autocomplete suggestions for :open. The elements of
 579## this list show up in the completion window under the Filesystem
 580## category when the command line contains `:open` but no argument.
 581## Type: List of String
 582c.completion.favorite_paths = []
 583
 584## Height (in pixels or as percentage of the window) of the completion.
 585## Type: PercOrInt
 586c.completion.height = '50%'
 587
 588## Minimum amount of characters needed to update completions.
 589## Type: Int
 590c.completion.min_chars = 1
 591
 592## Which categories to show (in which order) in the :open completion.
 593## Type: FlagList
 594## Valid values:
 595##   - searchengines
 596##   - quickmarks
 597##   - bookmarks
 598##   - history
 599##   - filesystem
 600c.completion.open_categories = ['searchengines', 'quickmarks', 'bookmarks', 'history', 'filesystem']
 601
 602## Move on to the next part when there's only one possible completion
 603## left.
 604## Type: Bool
 605c.completion.quick = True
 606
 607## Padding (in pixels) of the scrollbar handle in the completion window.
 608## Type: Int
 609c.completion.scrollbar.padding = 2
 610
 611## Width (in pixels) of the scrollbar in the completion window.
 612## Type: Int
 613c.completion.scrollbar.width = 12
 614
 615## When to show the autocompletion window.
 616## Type: String
 617## Valid values:
 618##   - always: Whenever a completion is available.
 619##   - auto: Whenever a completion is requested.
 620##   - never: Never.
 621c.completion.show = 'always'
 622
 623## Shrink the completion to be smaller than the configured size if there
 624## are no scrollbars.
 625## Type: Bool
 626c.completion.shrink = False
 627
 628## Format of timestamps (e.g. for the history completion). See
 629## https://sqlite.org/lang_datefunc.html and
 630## https://docs.python.org/3/library/datetime.html#strftime-strptime-
 631## behavior for allowed substitutions, qutebrowser uses both sqlite and
 632## Python to format its timestamps.
 633## Type: String
 634c.completion.timestamp_format = '%Y-%m-%d %H:%M'
 635
 636## Execute the best-matching command on a partial match.
 637## Type: Bool
 638c.completion.use_best_match = False
 639
 640## A list of patterns which should not be shown in the history. This only
 641## affects the completion. Matching URLs are still saved in the history
 642## (and visible on the `:history` page), but hidden in the completion.
 643## Changing this setting will cause the completion history to be
 644## regenerated on the next start, which will take a short while.
 645## Type: List of UrlPattern
 646c.completion.web_history.exclude = []
 647
 648## Number of URLs to show in the web history. 0: no history / -1:
 649## unlimited
 650## Type: Int
 651c.completion.web_history.max_items = -1
 652
 653## Require a confirmation before quitting the application.
 654## Type: ConfirmQuit
 655## Valid values:
 656##   - always: Always show a confirmation.
 657##   - multiple-tabs: Show a confirmation if multiple tabs are opened.
 658##   - downloads: Show a confirmation if downloads are running
 659##   - never: Never show a confirmation.
 660c.confirm_quit = ['never']
 661
 662## Automatically start playing `<video>` elements.
 663## Type: Bool
 664c.content.autoplay = True
 665
 666## List of URLs to ABP-style adblocking rulesets.  Only used when Brave's
 667## ABP-style adblocker is used (see `content.blocking.method`).  You can
 668## find an overview of available lists here:
 669## https://adblockplus.org/en/subscriptions - note that the special
 670## `subscribe.adblockplus.org` links aren't handled by qutebrowser, you
 671## will instead need to find the link to the raw `.txt` file (e.g. by
 672## extracting it from the `location` parameter of the subscribe URL and
 673## URL-decoding it).
 674## Type: List of Url
 675c.content.blocking.adblock.lists = ['https://easylist.to/easylist/easylist.txt', 'https://easylist.to/easylist/easyprivacy.txt']
 676
 677## Enable the ad/host blocker
 678## Type: Bool
 679c.content.blocking.enabled = True
 680
 681## Block subdomains of blocked hosts. Note: If only a single subdomain is
 682## blocked but should be allowed, consider using
 683## `content.blocking.whitelist` instead.
 684## Type: Bool
 685c.content.blocking.hosts.block_subdomains = True
 686
 687## List of URLs to host blocklists for the host blocker.  Only used when
 688## the simple host-blocker is used (see `content.blocking.method`).  The
 689## file can be in one of the following formats:  - An `/etc/hosts`-like
 690## file - One host per line - A zip-file of any of the above, with either
 691## only one file, or a file   named `hosts` (with any extension).  It's
 692## also possible to add a local file or directory via a `file://` URL. In
 693## case of a directory, all files in the directory are read as adblock
 694## lists.  The file `~/.config/qutebrowser/blocked-hosts` is always read
 695## if it exists.
 696## Type: List of Url
 697c.content.blocking.hosts.lists = ['https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts']
 698
 699## Which method of blocking ads should be used.  Support for Adblock Plus
 700## (ABP) syntax blocklists using Brave's Rust library requires the
 701## `adblock` Python package to be installed, which is an optional
 702## dependency of qutebrowser. It is required when either `adblock` or
 703## `both` are selected.
 704## Type: String
 705## Valid values:
 706##   - auto: Use Brave's ABP-style adblocker if available, host blocking otherwise
 707##   - adblock: Use Brave's ABP-style adblocker
 708##   - hosts: Use hosts blocking
 709##   - both: Use both hosts blocking and Brave's ABP-style adblocker
 710c.content.blocking.method = 'auto'
 711
 712## A list of patterns that should always be loaded, despite being blocked
 713## by the ad-/host-blocker. Local domains are always exempt from
 714## adblocking. Note this whitelists otherwise blocked requests, not
 715## first-party URLs. As an example, if `example.org` loads an ad from
 716## `ads.example.org`, the whitelist entry could be
 717## `https://ads.example.org/*`. If you want to disable the adblocker on a
 718## given page, use the `content.blocking.enabled` setting with a URL
 719## pattern instead.
 720## Type: List of UrlPattern
 721c.content.blocking.whitelist = []
 722
 723## Enable support for the HTML 5 web application cache feature. An
 724## application cache acts like an HTTP cache in some sense. For documents
 725## that use the application cache via JavaScript, the loader engine will
 726## first ask the application cache for the contents, before hitting the
 727## network.
 728## Type: Bool
 729c.content.cache.appcache = True
 730
 731## Maximum number of pages to hold in the global memory page cache. The
 732## page cache allows for a nicer user experience when navigating forth or
 733## back to pages in the forward/back history, by pausing and resuming up
 734## to _n_ pages. For more information about the feature, please refer to:
 735## https://webkit.org/blog/427/webkit-page-cache-i-the-basics/
 736## Type: Int
 737c.content.cache.maximum_pages = 0
 738
 739## Size (in bytes) of the HTTP network cache. Null to use the default
 740## value. With QtWebEngine, the maximum supported value is 2147483647 (~2
 741## GB).
 742## Type: Int
 743c.content.cache.size = None
 744
 745## Allow websites to read canvas elements. Note this is needed for some
 746## websites to work properly. On QtWebEngine < 6.6, this setting requires
 747## a restart and does not support URL patterns, only the global setting
 748## is applied.
 749## Type: Bool
 750c.content.canvas_reading = True
 751
 752## Which cookies to accept. With QtWebEngine, this setting also controls
 753## other features with tracking capabilities similar to those of cookies;
 754## including IndexedDB, DOM storage, filesystem API, service workers, and
 755## AppCache. Note that with QtWebKit, only `all` and `never` are
 756## supported as per-domain values. Setting `no-3rdparty` or `no-
 757## unknown-3rdparty` per-domain on QtWebKit will have the same effect as
 758## `all`. If this setting is used with URL patterns, the pattern gets
 759## applied to the origin/first party URL of the page making the request,
 760## not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
 761## from URLs, so URL patterns using paths will not match. With
 762## QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
 763## you will typically need to set this setting for `example.com` when the
 764## cookie is set on `somesubdomain.example.com` for it to work properly.
 765## To debug issues with this setting, start qutebrowser with `--debug
 766## --logfilter network --debug-flag log-cookies` which will show all
 767## cookies being set.
 768## Type: String
 769## Valid values:
 770##   - all: Accept all cookies.
 771##   - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
 772##   - 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.
 773##   - never: Don't accept cookies at all.
 774c.content.cookies.accept = 'all'
 775
 776## Store cookies.
 777## Type: Bool
 778c.content.cookies.store = True
 779
 780## Default encoding to use for websites. The encoding must be a string
 781## describing an encoding such as _utf-8_, _iso-8859-1_, etc.
 782## Type: String
 783c.content.default_encoding = 'iso-8859-1'
 784
 785## Allow websites to share screen content.
 786## Type: BoolAsk
 787## Valid values:
 788##   - true
 789##   - false
 790##   - ask
 791c.content.desktop_capture = 'ask'
 792
 793## Try to pre-fetch DNS entries to speed up browsing.
 794## Type: Bool
 795c.content.dns_prefetch = True
 796
 797## Expand each subframe to its contents. This will flatten all the frames
 798## to become one scrollable page.
 799## Type: Bool
 800c.content.frame_flattening = False
 801
 802## Set fullscreen notification overlay timeout in milliseconds. If set to
 803## 0, no overlay will be displayed.
 804## Type: Int
 805c.content.fullscreen.overlay_timeout = 3000
 806
 807## Limit fullscreen to the browser window (does not expand to fill the
 808## screen).
 809## Type: Bool
 810c.content.fullscreen.window = False
 811
 812## Allow websites to request geolocations.
 813## Type: BoolAsk
 814## Valid values:
 815##   - true
 816##   - false
 817##   - ask
 818c.content.geolocation = 'ask'
 819
 820## Value to send in the `Accept-Language` header. Note that the value
 821## read from JavaScript is always the global value.
 822## Type: String
 823c.content.headers.accept_language = 'en-US,en;q=0.9'
 824
 825## Custom headers for qutebrowser HTTP requests.
 826## Type: Dict
 827c.content.headers.custom = {}
 828
 829## Value to send in the `DNT` header. When this is set to true,
 830## qutebrowser asks websites to not track your identity. If set to null,
 831## the DNT header is not sent at all.
 832## Type: Bool
 833c.content.headers.do_not_track = True
 834
 835## When to send the Referer header. The Referer header tells websites
 836## from which website you were coming from when visiting them. Note that
 837## with QtWebEngine, websites can override this preference by setting the
 838## `Referrer-Policy:` header, so that any websites visited from them get
 839## the full referer. No restart is needed with QtWebKit.
 840## Type: String
 841## Valid values:
 842##   - always: Always send the Referer. With QtWebEngine 6.2+, this value is unavailable and will act like `same-domain`.
 843##   - never: Never send the Referer. This is not recommended, as some sites may break.
 844##   - same-domain: Only send the Referer for the same domain. This will still protect your privacy, but shouldn't break any sites. With QtWebEngine, the referer will still be sent for other domains, but with stripped path information.
 845c.content.headers.referer = 'same-domain'
 846
 847## User agent to send.  The following placeholders are defined:  *
 848## `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
 849## The underlying WebKit version (set to a fixed value   with
 850## QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
 851## QtWebEngine. * `{qt_version}`: The underlying Qt version. *
 852## `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
 853## QtWebEngine. * `{upstream_browser_version}`: The corresponding
 854## Safari/Chrome version. * `{qutebrowser_version}`: The currently
 855## running qutebrowser version.  The default value is equal to the
 856## unchanged user agent of QtWebKit/QtWebEngine.  Note that the value
 857## read from JavaScript is always the global value. With QtWebEngine
 858## between 5.12 and 5.14 (inclusive), changing the value exposed to
 859## JavaScript requires a restart.
 860## Type: FormatString
 861c.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}'
 862
 863## Enable hyperlink auditing (`<a ping>`).
 864## Type: Bool
 865c.content.hyperlink_auditing = False
 866
 867## Load images automatically in web pages.
 868## Type: Bool
 869c.content.images = True
 870
 871## Show javascript alerts.
 872## Type: Bool
 873c.content.javascript.alert = True
 874
 875## Allow JavaScript to close tabs.
 876## Type: Bool
 877c.content.javascript.can_close_tabs = False
 878
 879## Allow JavaScript to open new tabs without user interaction.
 880## Type: Bool
 881c.content.javascript.can_open_tabs_automatically = False
 882
 883## Allow JavaScript to read from or write to the clipboard. With
 884## QtWebEngine, writing the clipboard as response to a user interaction
 885## is always allowed. On Qt < 6.8, the `ask` setting is equivalent to
 886## `none` and permission needs to be granted manually via this setting.
 887## Type: JSClipboardPermission
 888## Valid values:
 889##   - none: Disable access to clipboard.
 890##   - access: Allow reading from and writing to the clipboard.
 891##   - access-paste: Allow accessing the clipboard and pasting clipboard content.
 892##   - ask: Prompt when requested (grants 'access-paste' permission).
 893c.content.javascript.clipboard = 'ask'
 894
 895## Enable JavaScript.
 896## Type: Bool
 897c.content.javascript.enabled = True
 898
 899## Enables the legacy touch event feature. This affects JS APIs such as:
 900## - ontouch* members on window, document, Element -
 901## document.createTouch, document.createTouchList -
 902## document.createEvent("TouchEvent") Newer Chromium versions have those
 903## disabled by default:
 904## https://bugs.chromium.org/p/chromium/issues/detail?id=392584
 905## https://groups.google.com/a/chromium.org/g/blink-dev/c/KV6kqDJpYiE
 906## Type: String
 907## Valid values:
 908##   - always: Legacy touch events are always enabled. This might cause some websites to assume a mobile device.
 909##   - auto: Legacy touch events are only enabled if a touch screen was detected on startup.
 910##   - never: Legacy touch events are always disabled.
 911c.content.javascript.legacy_touch_events = 'never'
 912
 913## Log levels to use for JavaScript console logging messages. When a
 914## JavaScript message with the level given in the dictionary key is
 915## logged, the corresponding dictionary value selects the qutebrowser
 916## logger to use. On QtWebKit, the "unknown" setting is always used. The
 917## following levels are valid: `none`, `debug`, `info`, `warning`,
 918## `error`.
 919## Type: Dict
 920c.content.javascript.log = {'unknown': 'debug', 'info': 'debug', 'warning': 'debug', 'error': 'debug'}
 921
 922## Javascript messages to *not* show in the UI, despite a corresponding
 923## `content.javascript.log_message.levels` setting. Both keys and values
 924## are glob patterns, with the key matching the location of the error,
 925## and the value matching the error message. By default, the
 926## https://web.dev/csp/[Content security policy] violations triggered by
 927## qutebrowser's stylesheet handling are excluded, as those errors are to
 928## be expected and can't be easily handled by the underlying code.
 929## Type: Dict
 930c.content.javascript.log_message.excludes = {'userscript:_qute_stylesheet': ['*Refused to apply inline style because it violates the following Content Security Policy directive: *']}
 931
 932## Javascript message sources/levels to show in the qutebrowser UI. When
 933## a JavaScript message is logged from a location matching the glob
 934## pattern given in the key, and is from one of the levels listed as
 935## value, it's surfaced as a message in the qutebrowser UI. By default,
 936## errors happening in qutebrowser internally are shown to the user.
 937## Type: Dict
 938c.content.javascript.log_message.levels = {'qute:*': ['error'], 'userscript:GM-*': [], 'userscript:*': ['error']}
 939
 940## Use the standard JavaScript modal dialog for `alert()` and
 941## `confirm()`.
 942## Type: Bool
 943c.content.javascript.modal_dialog = False
 944
 945## Show javascript prompts.
 946## Type: Bool
 947c.content.javascript.prompt = True
 948
 949## Allow locally loaded documents to access other local URLs.
 950## Type: Bool
 951c.content.local_content_can_access_file_urls = True
 952
 953## Allow locally loaded documents to access remote URLs.
 954## Type: Bool
 955c.content.local_content_can_access_remote_urls = False
 956
 957## Enable support for HTML 5 local storage and Web SQL.
 958## Type: Bool
 959c.content.local_storage = True
 960
 961## Allow websites to record audio.
 962## Type: BoolAsk
 963## Valid values:
 964##   - true
 965##   - false
 966##   - ask
 967c.content.media.audio_capture = 'ask'
 968
 969## Allow websites to record audio and video.
 970## Type: BoolAsk
 971## Valid values:
 972##   - true
 973##   - false
 974##   - ask
 975c.content.media.audio_video_capture = 'ask'
 976
 977## Allow websites to record video.
 978## Type: BoolAsk
 979## Valid values:
 980##   - true
 981##   - false
 982##   - ask
 983c.content.media.video_capture = 'ask'
 984
 985## Allow websites to lock your mouse pointer.
 986## Type: BoolAsk
 987## Valid values:
 988##   - true
 989##   - false
 990##   - ask
 991c.content.mouse_lock = 'ask'
 992
 993## Automatically mute tabs. Note that if the `:tab-mute` command is used,
 994## the mute status for the affected tab is now controlled manually, and
 995## this setting doesn't have any effect.
 996## Type: Bool
 997c.content.mute = False
 998
 999## Netrc-file for HTTP authentication. If unset, `~/.netrc` is used.
1000## Type: File
1001c.content.netrc_file = None
1002
1003## Allow websites to show notifications.
1004## Type: BoolAsk
1005## Valid values:
1006##   - true
1007##   - false
1008##   - ask
1009c.content.notifications.enabled = 'ask'
1010
1011## What notification presenter to use for web notifications. Note that
1012## not all implementations support all features of notifications: - The
1013## `qt` and `systray` options only support showing one notification at
1014## the time   and ignore the `tag` option to replace existing
1015## notifications. - The `herbe` option only supports showing one
1016## notification at the time and doesn't   show icons. - The `messages`
1017## option doesn't show icons and doesn't support the `click` and
1018## `close` events.
1019## Type: String
1020## Valid values:
1021##   - auto: Tries `libnotify`, `systray` and `messages`, uses the first one available without showing error messages.
1022##   - qt: Use Qt's native notification presenter, based on a system tray icon. Switching from or to this value requires a restart of qutebrowser.
1023##   - libnotify: Shows messages via DBus in a libnotify-compatible way. If DBus isn't available, falls back to `systray` or `messages`, but shows an error message.
1024##   - systray: Use a notification presenter based on a systray icon. Falls back to `libnotify` or `messages` if not systray is available. This is a reimplementation of the `qt` setting value, but with the possibility to switch to it at runtime.
1025##   - messages: Show notifications as qutebrowser messages. Most notification features aren't available.
1026##   - herbe: (experimental!) Show notifications using herbe (github.com/dudik/herbe). Most notification features aren't available.
1027c.content.notifications.presenter = 'auto'
1028
1029## Whether to show the origin URL for notifications. Note that URL
1030## patterns with this setting only get matched against the origin part of
1031## the URL, so e.g. paths in patterns will never match. Note that with
1032## the `qt` presenter, origins are never shown.
1033## Type: Bool
1034c.content.notifications.show_origin = True
1035
1036## Display PDF files via PDF.js in the browser without showing a download
1037## prompt. Note that the files can still be downloaded by clicking the
1038## download button in the pdf.js viewer. With this set to `false`, the
1039## `:prompt-open-download --pdfjs` command (bound to `<Ctrl-p>` by
1040## default) can be used in the download prompt.
1041## Type: Bool
1042c.content.pdfjs = False
1043
1044## Allow websites to request persistent storage quota via
1045## `navigator.webkitPersistentStorage.requestQuota`.
1046## Type: BoolAsk
1047## Valid values:
1048##   - true
1049##   - false
1050##   - ask
1051c.content.persistent_storage = 'ask'
1052
1053## Enable plugins in Web pages.
1054## Type: Bool
1055c.content.plugins = False
1056
1057## Request websites to minimize non-essentials animations and motion.
1058## This results in the `prefers-reduced-motion` CSS media query to
1059## evaluate to `reduce` (rather than `no-preference`). On Windows, if
1060## this setting is set to False, the system-wide animation setting is
1061## considered.
1062## Type: Bool
1063c.content.prefers_reduced_motion = False
1064
1065## Draw the background color and images also when the page is printed.
1066## Type: Bool
1067c.content.print_element_backgrounds = True
1068
1069## Open new windows in private browsing mode which does not record
1070## visited pages.
1071## Type: Bool
1072c.content.private_browsing = False
1073
1074## Proxy to use. In addition to the listed values, you can use a
1075## `socks://...` or `http://...` URL. Note that with QtWebEngine, it will
1076## take a couple of seconds until the change is applied, if this value is
1077## changed at runtime. Authentication for SOCKS proxies isn't supported
1078## due to Chromium limitations.
1079## Type: Proxy
1080## Valid values:
1081##   - system: Use the system wide proxy.
1082##   - none: Don't use any proxy
1083c.content.proxy = 'system'
1084
1085## Send DNS requests over the configured proxy.
1086## Type: Bool
1087c.content.proxy_dns_requests = True
1088
1089## Allow websites to register protocol handlers via
1090## `navigator.registerProtocolHandler`.
1091## Type: BoolAsk
1092## Valid values:
1093##   - true
1094##   - false
1095##   - ask
1096c.content.register_protocol_handler = 'ask'
1097
1098## Enable quirks (such as faked user agent headers) needed to get
1099## specific sites to work properly.
1100## Type: Bool
1101c.content.site_specific_quirks.enabled = True
1102
1103## Disable a list of named quirks.
1104## Type: FlagList
1105## Valid values:
1106##   - ua-whatsapp
1107##   - ua-google
1108##   - ua-slack
1109##   - ua-googledocs
1110##   - js-whatsapp-web
1111##   - js-discord
1112##   - js-string-replaceall
1113##   - js-array-at
1114##   - misc-krunker
1115##   - misc-mathml-darkmode
1116c.content.site_specific_quirks.skip = []
1117
1118## How to proceed on TLS certificate errors.
1119## Type: String
1120## Valid values:
1121##   - ask: Ask how to proceed for every certificate error (unless non-overridable due to HSTS).
1122##   - ask-block-thirdparty: Ask how to proceed for normal page loads, but silently block resource loads.
1123##   - block: Automatically block loading on certificate errors.
1124##   - load-insecurely: Force loading pages despite certificate errors. This is *insecure* and should be avoided. Instead of using this, consider fixing the underlying issue or importing a self-signed certificate via `certutil` (or Chromium) instead.
1125c.content.tls.certificate_errors = 'ask'
1126
1127## How navigation requests to URLs with unknown schemes are handled.
1128## Type: String
1129## Valid values:
1130##   - disallow: Disallows all navigation requests to URLs with unknown schemes.
1131##   - allow-from-user-interaction: Allows navigation requests to URLs with unknown schemes that are issued from user-interaction (like a mouse-click), whereas other navigation requests (for example from JavaScript) are suppressed.
1132##   - allow-all: Allows all navigation requests to URLs with unknown schemes.
1133c.content.unknown_url_scheme_policy = 'allow-from-user-interaction'
1134
1135## List of user stylesheet filenames to use.
1136## Type: List of File, or File
1137c.content.user_stylesheets = []
1138
1139## Enable WebGL.
1140## Type: Bool
1141c.content.webgl = True
1142
1143## Which interfaces to expose via WebRTC.
1144## Type: String
1145## Valid values:
1146##   - all-interfaces: WebRTC has the right to enumerate all interfaces and bind them to discover public interfaces.
1147##   - default-public-and-private-interfaces: WebRTC should only use the default route used by http. This also exposes the associated default private address. Default route is the route chosen by the OS on a multi-homed endpoint.
1148##   - default-public-interface-only: WebRTC should only use the default route used by http. This doesn't expose any local addresses.
1149##   - disable-non-proxied-udp: WebRTC should only use TCP to contact peers or servers unless the proxy server supports UDP. This doesn't expose any local addresses either.
1150c.content.webrtc_ip_handling_policy = 'all-interfaces'
1151
1152## Monitor load requests for cross-site scripting attempts. Suspicious
1153## scripts will be blocked and reported in the devtools JavaScript
1154## console. Note that bypasses for the XSS auditor are widely known and
1155## it can be abused for cross-site info leaks in some scenarios, see:
1156## https://www.chromium.org/developers/design-documents/xss-auditor
1157## Type: Bool
1158c.content.xss_auditing = False
1159
1160## Directory to save downloads to. If unset, a sensible OS-specific
1161## default is used.
1162## Type: Directory
1163c.downloads.location.directory = None
1164
1165## Prompt the user for the download location. If set to false,
1166## `downloads.location.directory` will be used.
1167## Type: Bool
1168c.downloads.location.prompt = True
1169
1170## Remember the last used download directory.
1171## Type: Bool
1172c.downloads.location.remember = True
1173
1174## What to display in the download filename input.
1175## Type: String
1176## Valid values:
1177##   - path: Show only the download path.
1178##   - filename: Show only download filename.
1179##   - both: Show download path and filename.
1180c.downloads.location.suggestion = 'path'
1181
1182## Default program used to open downloads. If null, the default internal
1183## handler is used. Any `{}` in the string will be expanded to the
1184## filename, else the filename will be appended.
1185## Type: String
1186c.downloads.open_dispatcher = None
1187
1188## Where to show the downloaded files.
1189## Type: VerticalPosition
1190## Valid values:
1191##   - top
1192##   - bottom
1193c.downloads.position = 'top'
1194
1195## Automatically abort insecure (HTTP) downloads originating from secure
1196## (HTTPS) pages. For per-domain settings, the relevant URL is the URL
1197## initiating the download, not the URL the download itself is coming
1198## from. It's not recommended to set this setting to false globally.
1199## Type: Bool
1200c.downloads.prevent_mixed_content = True
1201
1202## Duration (in milliseconds) to wait before removing finished downloads.
1203## If set to -1, downloads are never removed.
1204## Type: Int
1205c.downloads.remove_finished = -1
1206
1207## Editor (and arguments) to use for the `edit-*` commands. The following
1208## placeholders are defined:  * `{file}`: Filename of the file to be
1209## edited. * `{line}`: Line in which the caret is found in the text. *
1210## `{column}`: Column in which the caret is found in the text. *
1211## `{line0}`: Same as `{line}`, but starting from index 0. * `{column0}`:
1212## Same as `{column}`, but starting from index 0.
1213## Type: ShellCommand
1214c.editor.command = ['gvim', '-f', '{file}', '-c', 'normal {line}G{column0}l']
1215
1216## Encoding to use for the editor.
1217## Type: Encoding
1218c.editor.encoding = 'utf-8'
1219
1220## Delete the temporary file upon closing the editor.
1221## Type: Bool
1222c.editor.remove_file = True
1223
1224## Command (and arguments) to use for selecting a single folder in forms.
1225## The command should write the selected folder path to the specified
1226## file or stdout. The following placeholders are defined: * `{}`:
1227## Filename of the file to be written to. If not contained in any
1228## argument, the   standard output of the command is read instead.
1229## Type: ShellCommand
1230c.fileselect.folder.command = ['xterm', '-e', 'ranger', '--choosedir={}']
1231
1232## Handler for selecting file(s) in forms. If `external`, then the
1233## commands specified by `fileselect.single_file.command`,
1234## `fileselect.multiple_files.command` and `fileselect.folder.command`
1235## are used to select one file, multiple files, and folders,
1236## respectively.
1237## Type: String
1238## Valid values:
1239##   - default: Use the default file selector.
1240##   - external: Use an external command.
1241c.fileselect.handler = 'default'
1242
1243## Command (and arguments) to use for selecting multiple files in forms.
1244## The command should write the selected file paths to the specified file
1245## or to stdout, separated by newlines. The following placeholders are
1246## defined: * `{}`: Filename of the file to be written to. If not
1247## contained in any argument, the   standard output of the command is
1248## read instead.
1249## Type: ShellCommand
1250c.fileselect.multiple_files.command = ['xterm', '-e', 'ranger', '--choosefiles={}']
1251
1252## Command (and arguments) to use for selecting a single file in forms.
1253## The command should write the selected file path to the specified file
1254## or stdout. The following placeholders are defined: * `{}`: Filename of
1255## the file to be written to. If not contained in any argument, the
1256## standard output of the command is read instead.
1257## Type: ShellCommand
1258c.fileselect.single_file.command = ['xterm', '-e', 'ranger', '--choosefile={}']
1259
1260## Font used in the completion categories.
1261## Type: Font
1262c.fonts.completion.category = 'bold default_size default_family'
1263
1264## Font used in the completion widget.
1265## Type: Font
1266c.fonts.completion.entry = 'default_size default_family'
1267
1268## Font used for the context menu. If set to null, the Qt default is
1269## used.
1270## Type: Font
1271c.fonts.contextmenu = None
1272
1273## Font used for the debugging console.
1274## Type: Font
1275c.fonts.debug_console = 'default_size default_family'
1276
1277## Default font families to use. Whenever "default_family" is used in a
1278## font setting, it's replaced with the fonts listed here. If set to an
1279## empty value, a system-specific monospace default is used.
1280## Type: List of Font, or Font
1281c.fonts.default_family = []
1282
1283## Default font size to use. Whenever "default_size" is used in a font
1284## setting, it's replaced with the size listed here. Valid values are
1285## either a float value with a "pt" suffix, or an integer value with a
1286## "px" suffix.
1287## Type: String
1288c.fonts.default_size = '10pt'
1289
1290## Font used for the downloadbar.
1291## Type: Font
1292c.fonts.downloads = 'default_size default_family'
1293
1294## Font used for the hints.
1295## Type: Font
1296c.fonts.hints = 'bold default_size default_family'
1297
1298## Font used in the keyhint widget.
1299## Type: Font
1300c.fonts.keyhint = 'default_size default_family'
1301
1302## Font used for error messages.
1303## Type: Font
1304c.fonts.messages.error = 'default_size default_family'
1305
1306## Font used for info messages.
1307## Type: Font
1308c.fonts.messages.info = 'default_size default_family'
1309
1310## Font used for warning messages.
1311## Type: Font
1312c.fonts.messages.warning = 'default_size default_family'
1313
1314## Font used for prompts.
1315## Type: Font
1316c.fonts.prompts = 'default_size sans-serif'
1317
1318## Font used in the statusbar.
1319## Type: Font
1320c.fonts.statusbar = 'default_size default_family'
1321
1322## Font used for selected tabs.
1323## Type: Font
1324c.fonts.tabs.selected = 'default_size default_family'
1325
1326## Font used for unselected tabs.
1327## Type: Font
1328c.fonts.tabs.unselected = 'default_size default_family'
1329
1330## Font used for tooltips. If set to null, the Qt default is used.
1331## Type: Font
1332c.fonts.tooltip = None
1333
1334## Font family for cursive fonts.
1335## Type: FontFamily
1336c.fonts.web.family.cursive = ''
1337
1338## Font family for fantasy fonts.
1339## Type: FontFamily
1340c.fonts.web.family.fantasy = ''
1341
1342## Font family for fixed fonts.
1343## Type: FontFamily
1344c.fonts.web.family.fixed = ''
1345
1346## Font family for sans-serif fonts.
1347## Type: FontFamily
1348c.fonts.web.family.sans_serif = ''
1349
1350## Font family for serif fonts.
1351## Type: FontFamily
1352c.fonts.web.family.serif = ''
1353
1354## Font family for standard fonts.
1355## Type: FontFamily
1356c.fonts.web.family.standard = ''
1357
1358## Default font size (in pixels) for regular text.
1359## Type: Int
1360c.fonts.web.size.default = 16
1361
1362## Default font size (in pixels) for fixed-pitch text.
1363## Type: Int
1364c.fonts.web.size.default_fixed = 13
1365
1366## Hard minimum font size (in pixels).
1367## Type: Int
1368c.fonts.web.size.minimum = 0
1369
1370## Minimum logical font size (in pixels) that is applied when zooming
1371## out.
1372## Type: Int
1373c.fonts.web.size.minimum_logical = 6
1374
1375## When a hint can be automatically followed without pressing Enter.
1376## Type: String
1377## Valid values:
1378##   - always: Auto-follow whenever there is only a single hint on a page.
1379##   - unique-match: Auto-follow whenever there is a unique non-empty match in either the hint string (word mode) or filter (number mode).
1380##   - full-match: Follow the hint when the user typed the whole hint (letter, word or number mode) or the element's text (only in number mode).
1381##   - never: The user will always need to press Enter to follow a hint.
1382c.hints.auto_follow = 'unique-match'
1383
1384## Duration (in milliseconds) to ignore normal-mode key bindings after a
1385## successful auto-follow.
1386## Type: Int
1387c.hints.auto_follow_timeout = 0
1388
1389## CSS border value for hints.
1390## Type: String
1391c.hints.border = '1px solid #E3BE23'
1392
1393## Characters used for hint strings.
1394## Type: UniqueCharString
1395c.hints.chars = 'asdfghjkl'
1396
1397## Dictionary file to be used by the word hints.
1398## Type: File
1399c.hints.dictionary = '/usr/share/dict/words'
1400
1401## Which implementation to use to find elements to hint.
1402## Type: String
1403## Valid values:
1404##   - javascript: Better but slower
1405##   - python: Slightly worse but faster
1406c.hints.find_implementation = 'python'
1407
1408## Hide unmatched hints in rapid mode.
1409## Type: Bool
1410c.hints.hide_unmatched_rapid_hints = True
1411
1412## Leave hint mode when starting a new page load.
1413## Type: Bool
1414c.hints.leave_on_load = False
1415
1416## Minimum number of characters used for hint strings.
1417## Type: Int
1418c.hints.min_chars = 1
1419
1420## Mode to use for hints.
1421## Type: String
1422## Valid values:
1423##   - number: Use numeric hints. (In this mode you can also type letters from the hinted element to filter and reduce the number of elements that are hinted.)
1424##   - letter: Use the characters in the `hints.chars` setting.
1425##   - word: Use hints words based on the html elements and the extra words.
1426c.hints.mode = 'letter'
1427
1428## Comma-separated list of regular expressions to use for 'next' links.
1429## Type: List of Regex
1430c.hints.next_regexes = ['\\bnext\\b', '\\bmore\\b', '\\bnewer\\b', '\\b[>→≫]\\b', '\\b(>>|»)\\b', '\\bcontinue\\b']
1431
1432## Padding (in pixels) for hints.
1433## Type: Padding
1434c.hints.padding = {'top': 0, 'bottom': 0, 'left': 3, 'right': 3}
1435
1436## Comma-separated list of regular expressions to use for 'prev' links.
1437## Type: List of Regex
1438c.hints.prev_regexes = ['\\bprev(ious)?\\b', '\\bback\\b', '\\bolder\\b', '\\b[<←≪]\\b', '\\b(<<|«)\\b']
1439
1440## Rounding radius (in pixels) for the edges of hints.
1441## Type: Int
1442c.hints.radius = 3
1443
1444## Scatter hint key chains (like Vimium) or not (like dwb). Ignored for
1445## number hints.
1446## Type: Bool
1447c.hints.scatter = True
1448
1449## CSS selectors used to determine which elements on a page should have
1450## hints.
1451## Type: Dict
1452c.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"]', '[role="tab"]', '[role="checkbox"]', '[role="switch"]', '[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]', '[role="treeitem"]', '[aria-haspopup]', '[ng-click]', '[ngClick]', '[data-ng-click]', '[x-ng-click]', '[tabindex]:not([tabindex="-1"])'], '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']}
1453
1454## Make characters in hint strings uppercase.
1455## Type: Bool
1456c.hints.uppercase = False
1457
1458## Maximum time (in minutes) between two history items for them to be
1459## considered being from the same browsing session. Items with less time
1460## between them are grouped when being displayed in `:history`. Use -1 to
1461## disable separation.
1462## Type: Int
1463c.history_gap_interval = 30
1464
1465## Allow Escape to quit the crash reporter.
1466## Type: Bool
1467c.input.escape_quits_reporter = True
1468
1469## Which unbound keys to forward to the webview in normal mode.
1470## Type: String
1471## Valid values:
1472##   - all: Forward all unbound keys.
1473##   - auto: Forward unbound non-alphanumeric keys.
1474##   - none: Don't forward any keys.
1475c.input.forward_unbound_keys = 'auto'
1476
1477## Enter insert mode if an editable element is clicked.
1478## Type: Bool
1479c.input.insert_mode.auto_enter = True
1480
1481## Leave insert mode if a non-editable element is clicked.
1482## Type: Bool
1483c.input.insert_mode.auto_leave = True
1484
1485## Automatically enter insert mode if an editable element is focused
1486## after loading the page.
1487## Type: Bool
1488c.input.insert_mode.auto_load = False
1489
1490## Leave insert mode when starting a new page load. Patterns may be
1491## unreliable on this setting, and they may match the url you are
1492## navigating to, or the URL you are navigating from.
1493## Type: Bool
1494c.input.insert_mode.leave_on_load = True
1495
1496## Switch to insert mode when clicking flash and other plugins.
1497## Type: Bool
1498c.input.insert_mode.plugins = False
1499
1500## Include hyperlinks in the keyboard focus chain when tabbing.
1501## Type: Bool
1502c.input.links_included_in_focus_chain = True
1503
1504## Interpret number prefixes as counts for bindings. This enables for vi-
1505## like bindings that can be prefixed with a number to indicate a count.
1506## Disabling it allows for emacs-like bindings where number keys are
1507## passed through (according to `input.forward_unbound_keys`) instead.
1508## Type: Bool
1509c.input.match_counts = True
1510
1511## Whether the underlying Chromium should handle media keys. On Linux,
1512## disabling this also disables Chromium's MPRIS integration.
1513## Type: Bool
1514c.input.media_keys = True
1515
1516## Mode to change to when focusing on a tab/URL changes.
1517## Type: String
1518## Valid values:
1519##   - normal
1520##   - insert
1521##   - passthrough
1522c.input.mode_override = None
1523
1524## Enable back and forward buttons on the mouse.
1525## Type: Bool
1526c.input.mouse.back_forward_buttons = True
1527
1528## Enable Opera-like mouse rocker gestures. This disables the context
1529## menu.
1530## Type: Bool
1531c.input.mouse.rocker_gestures = False
1532
1533## Timeout (in milliseconds) for partially typed key bindings. If the
1534## current input forms only partial matches, the keystring will be
1535## cleared after this time. If set to 0, partially typed bindings are
1536## never cleared.
1537## Type: Int
1538c.input.partial_timeout = 0
1539
1540## Enable spatial navigation. Spatial navigation consists in the ability
1541## to navigate between focusable elements, such as hyperlinks and form
1542## controls, on a web page by using the Left, Right, Up and Down arrow
1543## keys. For example, if a user presses the Right key, heuristics
1544## determine whether there is an element they might be trying to reach
1545## towards the right and which element they probably want.
1546## Type: Bool
1547c.input.spatial_navigation = False
1548
1549## Keychains that shouldn't be shown in the keyhint dialog. Globs are
1550## supported, so `;*` will blacklist all keychains starting with `;`. Use
1551## `*` to disable keyhints.
1552## Type: List of String
1553c.keyhint.blacklist = []
1554
1555## Time (in milliseconds) from pressing a key to seeing the keyhint
1556## dialog.
1557## Type: Int
1558c.keyhint.delay = 500
1559
1560## Rounding radius (in pixels) for the edges of the keyhint dialog.
1561## Type: Int
1562c.keyhint.radius = 6
1563
1564## Level for console (stdout/stderr) logs. Ignored if the `--loglevel` or
1565## `--debug` CLI flags are used.
1566## Type: LogLevel
1567## Valid values:
1568##   - vdebug
1569##   - debug
1570##   - info
1571##   - warning
1572##   - error
1573##   - critical
1574c.logging.level.console = 'info'
1575
1576## Level for in-memory logs.
1577## Type: LogLevel
1578## Valid values:
1579##   - vdebug
1580##   - debug
1581##   - info
1582##   - warning
1583##   - error
1584##   - critical
1585c.logging.level.ram = 'debug'
1586
1587## Duration (in milliseconds) to show messages in the statusbar for. Set
1588## to 0 to never clear messages.
1589## Type: Int
1590c.messages.timeout = 3000
1591
1592## How to open links in an existing instance if a new one is launched.
1593## This happens when e.g. opening a link from a terminal. See
1594## `new_instance_open_target_window` to customize in which window the
1595## link is opened in.
1596## Type: String
1597## Valid values:
1598##   - tab: Open a new tab in the existing window and activate the window.
1599##   - tab-bg: Open a new background tab in the existing window and activate the window.
1600##   - tab-silent: Open a new tab in the existing window without activating the window.
1601##   - tab-bg-silent: Open a new background tab in the existing window without activating the window.
1602##   - window: Open in a new window.
1603##   - private-window: Open in a new private window.
1604c.new_instance_open_target = 'tab'
1605
1606## Which window to choose when opening links as new tabs. When
1607## `new_instance_open_target` is set to `window`, this is ignored.
1608## Type: String
1609## Valid values:
1610##   - first-opened: Open new tabs in the first (oldest) opened window.
1611##   - last-opened: Open new tabs in the last (newest) opened window.
1612##   - last-focused: Open new tabs in the most recently focused window.
1613##   - last-visible: Open new tabs in the most recently visible window.
1614c.new_instance_open_target_window = 'last-focused'
1615
1616## Show a filebrowser in download prompts.
1617## Type: Bool
1618c.prompt.filebrowser = True
1619
1620## Rounding radius (in pixels) for the edges of prompts.
1621## Type: Int
1622c.prompt.radius = 8
1623
1624## Additional arguments to pass to Qt, without leading `--`. With
1625## QtWebEngine, some Chromium arguments (see
1626## https://peter.sh/experiments/chromium-command-line-switches/ for a
1627## list) will work.
1628## Type: List of String
1629c.qt.args = []
1630
1631## Enables Web Platform features that are in development. This passes the
1632## `--enable-experimental-web-platform-features` flag to Chromium. By
1633## default, this is enabled with Qt 5 to maximize compatibility despite
1634## an aging Chromium base.
1635## Type: String
1636## Valid values:
1637##   - always: Enable experimental web platform features.
1638##   - auto: Enable experimental web platform features when using Qt 5.
1639##   - never: Disable experimental web platform features.
1640c.qt.chromium.experimental_web_platform_features = 'auto'
1641
1642## When to use Chromium's low-end device mode. This improves the RAM
1643## usage of renderer processes, at the expense of performance.
1644## Type: String
1645## Valid values:
1646##   - always: Always use low-end device mode.
1647##   - auto: Decide automatically (uses low-end mode with < 1 GB available RAM).
1648##   - never: Never use low-end device mode.
1649c.qt.chromium.low_end_device_mode = 'auto'
1650
1651## Which Chromium process model to use. Alternative process models use
1652## less resources, but decrease security and robustness. See the
1653## following pages for more details:    -
1654## https://www.chromium.org/developers/design-documents/process-models
1655## - https://doc.qt.io/qt-6/qtwebengine-features.html#process-models
1656## Type: String
1657## Valid values:
1658##   - process-per-site-instance: Pages from separate sites are put into separate processes and separate visits to the same site are also isolated.
1659##   - process-per-site: Pages from separate sites are put into separate processes. Unlike Process per Site Instance, all visits to the same site will share an OS process. The benefit of this model is reduced memory consumption, because more web pages will share processes. The drawbacks include reduced security, robustness, and responsiveness.
1660##   - single-process: Run all tabs in a single process. This should be used for debugging purposes only, and it disables `:open --private`.
1661c.qt.chromium.process_model = 'process-per-site-instance'
1662
1663## What sandboxing mechanisms in Chromium to use. Chromium has various
1664## sandboxing layers, which should be enabled for normal browser usage.
1665## Mainly for testing and development, it's possible to disable
1666## individual sandboxing layers via this setting. Open `chrome://sandbox`
1667## to see the current sandbox status. Changing this setting is only
1668## recommended if you know what you're doing, as it **disables one of
1669## Chromium's security layers**. To avoid sandboxing being accidentally
1670## disabled persistently, this setting can only be set via `config.py`,
1671## not via `:set`. See the Chromium documentation for more details: - htt
1672## ps://chromium.googlesource.com/chromium/src/\+/HEAD/sandbox/linux/READ
1673## ME.md[Linux] - https://chromium.googlesource.com/chromium/src/\+/HEAD/
1674## docs/design/sandbox.md[Windows] - https://chromium.googlesource.com/ch
1675## romium/src/\+/HEAD/sandbox/mac/README.md[Mac] - https://chromium.googl
1676## esource.com/chromium/src/\+/HEAD/docs/design/sandbox_faq.md[FAQ
1677## (Windows-centric)]
1678## Type: String
1679## Valid values:
1680##   - enable-all: Enable all available sandboxing mechanisms.
1681##   - disable-seccomp-bpf: Disable the Seccomp BPF filter sandbox (Linux only).
1682##   - disable-all: Disable all sandboxing (**not recommended!**).
1683c.qt.chromium.sandboxing = 'enable-all'
1684
1685## Additional environment variables to set. Setting an environment
1686## variable to null/None will unset it.
1687## Type: Dict
1688c.qt.environ = {}
1689
1690## Force a Qt platform to use. This sets the `QT_QPA_PLATFORM`
1691## environment variable and is useful to force using the XCB plugin when
1692## running QtWebEngine on Wayland.
1693## Type: String
1694c.qt.force_platform = None
1695
1696## Force a Qt platformtheme to use. This sets the `QT_QPA_PLATFORMTHEME`
1697## environment variable which controls dialogs like the filepicker. By
1698## default, Qt determines the platform theme based on the desktop
1699## environment.
1700## Type: String
1701c.qt.force_platformtheme = None
1702
1703## Force software rendering for QtWebEngine. This is needed for
1704## QtWebEngine to work with Nouveau drivers and can be useful in other
1705## scenarios related to graphic issues.
1706## Type: String
1707## Valid values:
1708##   - software-opengl: Tell LibGL to use a software implementation of GL (`LIBGL_ALWAYS_SOFTWARE` / `QT_XCB_FORCE_SOFTWARE_OPENGL`)
1709##   - qt-quick: Tell Qt Quick to use a software renderer instead of OpenGL. (`QT_QUICK_BACKEND=software`)
1710##   - chromium: Tell Chromium to disable GPU support and use Skia software rendering instead. (`--disable-gpu`)
1711##   - none: Don't force software rendering.
1712c.qt.force_software_rendering = 'none'
1713
1714## Turn on Qt HighDPI scaling. This is equivalent to setting
1715## QT_ENABLE_HIGHDPI_SCALING=1 (Qt >= 5.14) in the environment. It's off
1716## by default as it can cause issues with some bitmap fonts. As an
1717## alternative to this, it's possible to set font sizes and the
1718## `zoom.default` setting.
1719## Type: Bool
1720c.qt.highdpi = False
1721
1722## Disable accelerated 2d canvas to avoid graphical glitches. On some
1723## setups graphical issues can occur on sites like Google sheets and
1724## PDF.js. These don't occur when accelerated 2d canvas is turned off, so
1725## we do that by default. So far these glitches only occur on some Intel
1726## graphics devices.
1727## Type: String
1728## Valid values:
1729##   - always: Disable accelerated 2d canvas
1730##   - auto: Disable on Qt6 < 6.6.0, enable otherwise
1731##   - never: Enable accelerated 2d canvas
1732c.qt.workarounds.disable_accelerated_2d_canvas = 'auto'
1733
1734## Disable the Hangouts extension. The Hangouts extension provides
1735## additional APIs for Google domains only. Hangouts has been replaced
1736## with Meet, which appears to work without this extension. Note this
1737## setting gets ignored and the Hangouts extension is always disabled to
1738## avoid crashes on Qt 6.5.0 to 6.5.3 if dark mode is enabled, as well as
1739## on Qt 6.6.0.
1740## Type: Bool
1741c.qt.workarounds.disable_hangouts_extension = False
1742
1743## Work around locale parsing issues in QtWebEngine 5.15.3. With some
1744## locales, QtWebEngine 5.15.3 is unusable without this workaround. In
1745## affected scenarios, QtWebEngine will log "Network service crashed,
1746## restarting service." and only display a blank page. However, It is
1747## expected that distributions shipping QtWebEngine 5.15.3 follow up with
1748## a proper fix soon, so it is disabled by default.
1749## Type: Bool
1750c.qt.workarounds.locale = False
1751
1752## Delete the QtWebEngine Service Worker directory on every start. This
1753## workaround can help with certain crashes caused by an unknown
1754## QtWebEngine bug related to Service Workers. Those crashes happen
1755## seemingly immediately on Windows; after one hour of operation on other
1756## systems. Note however that enabling this option *can lead to data
1757## loss* on some pages (as Service Worker data isn't persisted) and will
1758## negatively impact start-up time.
1759## Type: Bool
1760c.qt.workarounds.remove_service_workers = False
1761
1762## When/how to show the scrollbar.
1763## Type: String
1764## Valid values:
1765##   - always: Always show the scrollbar.
1766##   - never: Never show the scrollbar.
1767##   - when-searching: Show the scrollbar when searching for text in the webpage. With the QtWebKit backend, this is equal to `never`.
1768##   - 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.
1769c.scrolling.bar = 'overlay'
1770
1771## Enable smooth scrolling for web pages. Note smooth scrolling does not
1772## work with the `:scroll-px` command.
1773## Type: Bool
1774c.scrolling.smooth = False
1775
1776## When to find text on a page case-insensitively.
1777## Type: IgnoreCase
1778## Valid values:
1779##   - always: Search case-insensitively.
1780##   - never: Search case-sensitively.
1781##   - smart: Search case-sensitively if there are capital characters.
1782c.search.ignore_case = 'smart'
1783
1784## Find text on a page incrementally, renewing the search for each typed
1785## character.
1786## Type: Bool
1787c.search.incremental = True
1788
1789## Wrap around at the top and bottom of the page when advancing through
1790## text matches using `:search-next` and `:search-prev`.
1791## Type: Bool
1792c.search.wrap = True
1793
1794## Display messages when advancing through text matches at the top and
1795## bottom of the page, e.g. `Search hit TOP`.
1796## Type: Bool
1797c.search.wrap_messages = True
1798
1799## Name of the session to save by default. If this is set to null, the
1800## session which was last loaded is saved.
1801## Type: SessionName
1802c.session.default_name = None
1803
1804## Load a restored tab as soon as it takes focus.
1805## Type: Bool
1806c.session.lazy_restore = False
1807
1808## Languages to use for spell checking. You can check for available
1809## languages and install dictionaries using scripts/dictcli.py. Run the
1810## script with -h/--help for instructions.
1811## Type: List of String
1812## Valid values:
1813##   - af-ZA: Afrikaans (South Africa)
1814##   - bg-BG: Bulgarian (Bulgaria)
1815##   - ca-ES: Catalan (Spain)
1816##   - cs-CZ: Czech (Czech Republic)
1817##   - da-DK: Danish (Denmark)
1818##   - de-DE: German (Germany)
1819##   - el-GR: Greek (Greece)
1820##   - en-AU: English (Australia)
1821##   - en-CA: English (Canada)
1822##   - en-GB: English (United Kingdom)
1823##   - en-US: English (United States)
1824##   - es-ES: Spanish (Spain)
1825##   - et-EE: Estonian (Estonia)
1826##   - fa-IR: Farsi (Iran)
1827##   - fo-FO: Faroese (Faroe Islands)
1828##   - fr-FR: French (France)
1829##   - he-IL: Hebrew (Israel)
1830##   - hi-IN: Hindi (India)
1831##   - hr-HR: Croatian (Croatia)
1832##   - hu-HU: Hungarian (Hungary)
1833##   - id-ID: Indonesian (Indonesia)
1834##   - it-IT: Italian (Italy)
1835##   - ko: Korean
1836##   - lt-LT: Lithuanian (Lithuania)
1837##   - lv-LV: Latvian (Latvia)
1838##   - nb-NO: Norwegian (Norway)
1839##   - nl-NL: Dutch (Netherlands)
1840##   - pl-PL: Polish (Poland)
1841##   - pt-BR: Portuguese (Brazil)
1842##   - pt-PT: Portuguese (Portugal)
1843##   - ro-RO: Romanian (Romania)
1844##   - ru-RU: Russian (Russia)
1845##   - sh: Serbo-Croatian
1846##   - sk-SK: Slovak (Slovakia)
1847##   - sl-SI: Slovenian (Slovenia)
1848##   - sq: Albanian
1849##   - sr: Serbian
1850##   - sv-SE: Swedish (Sweden)
1851##   - ta-IN: Tamil (India)
1852##   - tg-TG: Tajik (Tajikistan)
1853##   - tr-TR: Turkish (Turkey)
1854##   - uk-UA: Ukrainian (Ukraine)
1855##   - vi-VN: Vietnamese (Viet Nam)
1856c.spellcheck.languages = []
1857
1858## Padding (in pixels) for the statusbar.
1859## Type: Padding
1860c.statusbar.padding = {'top': 1, 'bottom': 1, 'left': 0, 'right': 0}
1861
1862## Position of the status bar.
1863## Type: VerticalPosition
1864## Valid values:
1865##   - top
1866##   - bottom
1867c.statusbar.position = 'bottom'
1868
1869## When to show the statusbar.
1870## Type: String
1871## Valid values:
1872##   - always: Always show the statusbar.
1873##   - never: Always hide the statusbar.
1874##   - in-mode: Show the statusbar when in modes other than normal mode.
1875c.statusbar.show = 'always'
1876
1877## List of widgets displayed in the statusbar.
1878## Type: List of StatusbarWidget
1879## Valid values:
1880##   - url: Current page URL.
1881##   - scroll: Percentage of the current page position like `10%`.
1882##   - scroll_raw: Raw percentage of the current page position like `10`.
1883##   - history: Display an arrow when possible to go back/forward in history.
1884##   - search_match: A match count when searching, e.g. `Match [2/10]`.
1885##   - tabs: Current active tab, e.g. `2`.
1886##   - keypress: Display pressed keys when composing a vi command.
1887##   - progress: Progress bar for the current page loading.
1888##   - text:foo: Display the static text after the colon, `foo` in the example.
1889##   - clock: Display current time. The format can be changed by adding a format string via `clock:...`. For supported format strings, see https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes[the Python datetime documentation].
1890c.statusbar.widgets = ['keypress', 'search_match', 'url', 'scroll', 'history', 'tabs', 'progress']
1891
1892## Open new tabs (middleclick/ctrl+click) in the background.
1893## Type: Bool
1894c.tabs.background = True
1895
1896## Mouse button with which to close tabs.
1897## Type: String
1898## Valid values:
1899##   - right: Close tabs on right-click.
1900##   - middle: Close tabs on middle-click.
1901##   - none: Don't close tabs using the mouse.
1902c.tabs.close_mouse_button = 'middle'
1903
1904## How to behave when the close mouse button is pressed on the tab bar.
1905## Type: String
1906## Valid values:
1907##   - new-tab: Open a new tab.
1908##   - close-current: Close the current tab.
1909##   - close-last: Close the last tab.
1910##   - ignore: Don't do anything.
1911c.tabs.close_mouse_button_on_bar = 'new-tab'
1912
1913## Scaling factor for favicons in the tab bar. The tab size is unchanged,
1914## so big favicons also require extra `tabs.padding`.
1915## Type: Float
1916c.tabs.favicons.scale = 1.0
1917
1918## When to show favicons in the tab bar. When switching this from never
1919## to always/pinned, note that favicons might not be loaded yet, thus
1920## tabs might require a reload to display them.
1921## Type: String
1922## Valid values:
1923##   - always: Always show favicons.
1924##   - never: Always hide favicons.
1925##   - pinned: Show favicons only on pinned tabs.
1926c.tabs.favicons.show = 'always'
1927
1928## Maximum stack size to remember for tab switches (-1 for no maximum).
1929## Type: Int
1930c.tabs.focus_stack_size = 10
1931
1932## Padding (in pixels) for tab indicators.
1933## Type: Padding
1934c.tabs.indicator.padding = {'top': 2, 'bottom': 2, 'left': 0, 'right': 4}
1935
1936## Width (in pixels) of the progress indicator (0 to disable).
1937## Type: Int
1938c.tabs.indicator.width = 3
1939
1940## How to behave when the last tab is closed. If the
1941## `tabs.tabs_are_windows` setting is set, this is ignored and the
1942## behavior is always identical to the `close` value.
1943## Type: String
1944## Valid values:
1945##   - ignore: Don't do anything.
1946##   - blank: Load a blank page.
1947##   - startpage: Load the start page.
1948##   - default-page: Load the default page.
1949##   - close: Close the window.
1950c.tabs.last_close = 'ignore'
1951
1952## Maximum width (in pixels) of tabs (-1 for no maximum). This setting
1953## only applies when tabs are horizontal. This setting does not apply to
1954## pinned tabs, unless `tabs.pinned.shrink` is False. This setting may
1955## not apply properly if max_width is smaller than the minimum size of
1956## tab contents, or smaller than tabs.min_width.
1957## Type: Int
1958c.tabs.max_width = -1
1959
1960## Minimum width (in pixels) of tabs (-1 for the default minimum size
1961## behavior). This setting only applies when tabs are horizontal. This
1962## setting does not apply to pinned tabs, unless `tabs.pinned.shrink` is
1963## False.
1964## Type: Int
1965c.tabs.min_width = -1
1966
1967## When switching tabs, what input mode is applied.
1968## Type: String
1969## Valid values:
1970##   - persist: Retain the current mode.
1971##   - restore: Restore previously saved mode.
1972##   - normal: Always revert to normal mode.
1973c.tabs.mode_on_change = 'normal'
1974
1975## Switch between tabs using the mouse wheel.
1976## Type: Bool
1977c.tabs.mousewheel_switching = True
1978
1979## Position of new tabs opened from another tab. See
1980## `tabs.new_position.stacking` for controlling stacking behavior.
1981## Type: NewTabPosition
1982## Valid values:
1983##   - prev: Before the current tab.
1984##   - next: After the current tab.
1985##   - first: At the beginning.
1986##   - last: At the end.
1987c.tabs.new_position.related = 'next'
1988
1989## Stack related tabs on top of each other when opened consecutively.
1990## Only applies for `next` and `prev` values of
1991## `tabs.new_position.related` and `tabs.new_position.unrelated`.
1992## Type: Bool
1993c.tabs.new_position.stacking = True
1994
1995## Position of new tabs which are not opened from another tab. See
1996## `tabs.new_position.stacking` for controlling stacking behavior.
1997## Type: NewTabPosition
1998## Valid values:
1999##   - prev: Before the current tab.
2000##   - next: After the current tab.
2001##   - first: At the beginning.
2002##   - last: At the end.
2003c.tabs.new_position.unrelated = 'last'
2004
2005## Padding (in pixels) around text for tabs.
2006## Type: Padding
2007c.tabs.padding = {'top': 0, 'bottom': 0, 'left': 5, 'right': 5}
2008
2009## Force pinned tabs to stay at fixed URL.
2010## Type: Bool
2011c.tabs.pinned.frozen = True
2012
2013## Shrink pinned tabs down to their contents.
2014## Type: Bool
2015c.tabs.pinned.shrink = True
2016
2017## Position of the tab bar.
2018## Type: Position
2019## Valid values:
2020##   - top
2021##   - bottom
2022##   - left
2023##   - right
2024c.tabs.position = 'top'
2025
2026## Which tab to select when the focused tab is removed.
2027## Type: SelectOnRemove
2028## Valid values:
2029##   - prev: Select the tab which came before the closed one (left in horizontal, above in vertical).
2030##   - next: Select the tab which came after the closed one (right in horizontal, below in vertical).
2031##   - last-used: Select the previously selected tab.
2032c.tabs.select_on_remove = 'next'
2033
2034## When to show the tab bar.
2035## Type: String
2036## Valid values:
2037##   - always: Always show the tab bar.
2038##   - never: Always hide the tab bar.
2039##   - multiple: Hide the tab bar if only one tab is open.
2040##   - switching: Show the tab bar when switching tabs.
2041c.tabs.show = 'always'
2042
2043## Duration (in milliseconds) to show the tab bar before hiding it when
2044## tabs.show is set to 'switching'.
2045## Type: Int
2046c.tabs.show_switching_delay = 800
2047
2048## Open a new window for every tab.
2049## Type: Bool
2050c.tabs.tabs_are_windows = False
2051
2052## Alignment of the text inside of tabs.
2053## Type: TextAlignment
2054## Valid values:
2055##   - left
2056##   - right
2057##   - center
2058c.tabs.title.alignment = 'left'
2059
2060## Position of ellipsis in truncated title of tabs.
2061## Type: ElidePosition
2062## Valid values:
2063##   - left
2064##   - right
2065##   - middle
2066##   - none
2067c.tabs.title.elide = 'right'
2068
2069## Format to use for the tab title. The following placeholders are
2070## defined:  * `{perc}`: Percentage as a string like `[10%]`. *
2071## `{perc_raw}`: Raw percentage, e.g. `10`. * `{current_title}`: Title of
2072## the current web page. * `{title_sep}`: The string `" - "` if a title
2073## is set, empty otherwise. * `{index}`: Index of this tab. *
2074## `{aligned_index}`: Index of this tab padded with spaces to have the
2075## same   width. * `{relative_index}`: Index of this tab relative to the
2076## current tab. * `{id}`: Internal tab ID of this tab. * `{scroll_pos}`:
2077## Page scroll position. * `{host}`: Host of the current web page. *
2078## `{backend}`: Either `webkit` or `webengine` * `{private}`: Indicates
2079## when private mode is enabled. * `{current_url}`: URL of the current
2080## web page. * `{protocol}`: Protocol (http/https/...) of the current web
2081## page. * `{audio}`: Indicator for audio/mute status.
2082## Type: FormatString
2083c.tabs.title.format = '{audio}{index}: {current_title}'
2084
2085## Format to use for the tab title for pinned tabs. The same placeholders
2086## like for `tabs.title.format` are defined.
2087## Type: FormatString
2088c.tabs.title.format_pinned = '{index}'
2089
2090## Show tooltips on tabs. Note this setting only affects windows opened
2091## after it has been set.
2092## Type: Bool
2093c.tabs.tooltips = True
2094
2095## Number of closed tabs (per window) and closed windows to remember for
2096## :undo (-1 for no maximum).
2097## Type: Int
2098c.tabs.undo_stack_size = 100
2099
2100## Width (in pixels or as percentage of the window) of the tab bar if
2101## it's vertical.
2102## Type: PercOrInt
2103c.tabs.width = '15%'
2104
2105## Wrap when changing tabs.
2106## Type: Bool
2107c.tabs.wrap = True
2108
2109## What search to start when something else than a URL is entered.
2110## Type: String
2111## Valid values:
2112##   - naive: Use simple/naive check.
2113##   - dns: Use DNS requests (might be slow!).
2114##   - never: Never search automatically.
2115##   - schemeless: Always search automatically unless URL explicitly contains a scheme.
2116c.url.auto_search = 'naive'
2117
2118## Page to open if :open -t/-b/-w is used without URL. Use `about:blank`
2119## for a blank page.
2120## Type: FuzzyUrl
2121c.url.default_page = 'https://start.duckduckgo.com/'
2122
2123## URL segments where `:navigate increment/decrement` will search for a
2124## number.
2125## Type: FlagList
2126## Valid values:
2127##   - host
2128##   - port
2129##   - path
2130##   - query
2131##   - anchor
2132c.url.incdec_segments = ['path', 'query']
2133
2134## Open base URL of the searchengine if a searchengine shortcut is
2135## invoked without parameters.
2136## Type: Bool
2137c.url.open_base_url = False
2138
2139## Search engines which can be used via the address bar.  Maps a search
2140## engine name (such as `DEFAULT`, or `ddg`) to a URL with a `{}`
2141## placeholder. The placeholder will be replaced by the search term, use
2142## `{{` and `}}` for literal `{`/`}` braces.  The following further
2143## placeholds are defined to configure how special characters in the
2144## search terms are replaced by safe characters (called 'quoting'):  *
2145## `{}` and `{semiquoted}` quote everything except slashes; this is the
2146## most   sensible choice for almost all search engines (for the search
2147## term   `slash/and&` this placeholder expands to `slash/and%26amp`).
2148## * `{quoted}` quotes all characters (for `slash/and&` this
2149## placeholder   expands to `slash%2Fand%26amp`). * `{unquoted}` quotes
2150## nothing (for `slash/and&` this placeholder   expands to
2151## `slash/and&`). * `{0}` means the same as `{}`, but can be used
2152## multiple times.  The search engine named `DEFAULT` is used when
2153## `url.auto_search` is turned on and something else than a URL was
2154## entered to be opened. Other search engines can be used by prepending
2155## the search engine name to the search term, e.g. `:open google
2156## qutebrowser`.
2157## Type: Dict
2158c.url.searchengines = {'DEFAULT': 'https://duckduckgo.com/?q={}'}
2159
2160## Page(s) to open at the start.
2161## Type: List of FuzzyUrl, or FuzzyUrl
2162c.url.start_pages = ['https://start.duckduckgo.com']
2163
2164## URL parameters to strip when yanking a URL.
2165## Type: List of String
2166c.url.yank_ignored_parameters = ['ref', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'utm_name']
2167
2168## Hide the window decoration.  This setting requires a restart on
2169## Wayland.
2170## Type: Bool
2171c.window.hide_decoration = False
2172
2173## Format to use for the window title. The same placeholders like for
2174## `tabs.title.format` are defined.
2175## Type: FormatString
2176c.window.title_format = '{perc}{current_title}{title_sep}qutebrowser'
2177
2178## Set the main window background to transparent.  This allows having a
2179## transparent tab- or statusbar (might require a compositor such as
2180## picom). However, it breaks some functionality such as dmenu embedding
2181## via its `-w` option. On some systems, it was additionally reported
2182## that main window transparency negatively affects performance.  Note
2183## this setting only affects windows opened after setting it.
2184## Type: Bool
2185c.window.transparent = False
2186
2187## Default zoom level.
2188## Type: Perc
2189c.zoom.default = '100%'
2190
2191## Available zoom levels.
2192## Type: List of Perc
2193c.zoom.levels = ['25%', '33%', '50%', '67%', '75%', '90%', '100%', '110%', '125%', '150%', '175%', '200%', '250%', '300%', '400%', '500%']
2194
2195## Number of zoom increments to divide the mouse wheel movements to.
2196## Type: Int
2197c.zoom.mouse_divider = 512
2198
2199## Apply the zoom factor on a frame only to the text or to all content.
2200## Type: Bool
2201c.zoom.text_only = False
2202
2203## Bindings for normal mode
2204config.bind("'", 'mode-enter jump_mark')
2205config.bind('+', 'zoom-in')
2206config.bind('-', 'zoom-out')
2207config.bind('.', 'cmd-repeat-last')
2208config.bind('/', 'cmd-set-text /')
2209config.bind(':', 'cmd-set-text :')
2210config.bind(';I', 'hint images tab')
2211config.bind(';O', 'hint links fill :open -t -r {hint-url}')
2212config.bind(';R', 'hint --rapid links window')
2213config.bind(';Y', 'hint links yank-primary')
2214config.bind(';b', 'hint all tab-bg')
2215config.bind(';d', 'hint links download')
2216config.bind(';f', 'hint all tab-fg')
2217config.bind(';h', 'hint all hover')
2218config.bind(';i', 'hint images')
2219config.bind(';o', 'hint links fill :open {hint-url}')
2220config.bind(';r', 'hint --rapid links tab-bg')
2221config.bind(';t', 'hint inputs')
2222config.bind(';y', 'hint links yank')
2223config.bind('<Alt-1>', 'tab-focus 1')
2224config.bind('<Alt-2>', 'tab-focus 2')
2225config.bind('<Alt-3>', 'tab-focus 3')
2226config.bind('<Alt-4>', 'tab-focus 4')
2227config.bind('<Alt-5>', 'tab-focus 5')
2228config.bind('<Alt-6>', 'tab-focus 6')
2229config.bind('<Alt-7>', 'tab-focus 7')
2230config.bind('<Alt-8>', 'tab-focus 8')
2231config.bind('<Alt-9>', 'tab-focus -1')
2232config.bind('<Alt-m>', 'tab-mute')
2233config.bind('<Ctrl-A>', 'navigate increment')
2234config.bind('<Ctrl-Alt-p>', 'print')
2235config.bind('<Ctrl-B>', 'scroll-page 0 -1')
2236config.bind('<Ctrl-D>', 'scroll-page 0 0.5')
2237config.bind('<Ctrl-F5>', 'reload -f')
2238config.bind('<Ctrl-F>', 'scroll-page 0 1')
2239config.bind('<Ctrl-N>', 'open -w')
2240config.bind('<Ctrl-PgDown>', 'tab-next')
2241config.bind('<Ctrl-PgUp>', 'tab-prev')
2242config.bind('<Ctrl-Q>', 'quit')
2243config.bind('<Ctrl-Return>', 'selection-follow -t')
2244config.bind('<Ctrl-Shift-N>', 'open -p')
2245config.bind('<Ctrl-Shift-T>', 'undo')
2246config.bind('<Ctrl-Shift-Tab>', 'nop')
2247config.bind('<Ctrl-Shift-W>', 'close')
2248config.bind('<Ctrl-T>', 'open -t')
2249config.bind('<Ctrl-Tab>', 'tab-focus last')
2250config.bind('<Ctrl-U>', 'scroll-page 0 -0.5')
2251config.bind('<Ctrl-V>', 'mode-enter passthrough')
2252config.bind('<Ctrl-W>', 'tab-close')
2253config.bind('<Ctrl-X>', 'navigate decrement')
2254config.bind('<Ctrl-^>', 'tab-focus last')
2255config.bind('<Ctrl-h>', 'home')
2256config.bind('<Ctrl-p>', 'tab-pin')
2257config.bind('<Ctrl-s>', 'stop')
2258config.bind('<Escape>', 'clear-keychain ;; search ;; fullscreen --leave')
2259config.bind('<F11>', 'fullscreen')
2260config.bind('<F5>', 'reload')
2261config.bind('<Return>', 'selection-follow')
2262config.bind('<back>', 'back')
2263config.bind('<forward>', 'forward')
2264config.bind('=', 'zoom')
2265config.bind('?', 'cmd-set-text ?')
2266config.bind('@', 'macro-run')
2267config.bind('B', 'cmd-set-text -s :quickmark-load -t')
2268config.bind('D', 'tab-close -o')
2269config.bind('F', 'hint all tab')
2270config.bind('G', 'scroll-to-perc')
2271config.bind('H', 'back')
2272config.bind('J', 'tab-next')
2273config.bind('K', 'tab-prev')
2274config.bind('L', 'forward')
2275config.bind('M', 'bookmark-add')
2276config.bind('N', 'search-prev')
2277config.bind('O', 'cmd-set-text -s :open -t')
2278config.bind('PP', 'open -t -- {primary}')
2279config.bind('Pp', 'open -t -- {clipboard}')
2280config.bind('R', 'reload -f')
2281config.bind('Sb', 'bookmark-list --jump')
2282config.bind('Sh', 'history')
2283config.bind('Sq', 'bookmark-list')
2284config.bind('Ss', 'set')
2285config.bind('T', 'cmd-set-text -sr :tab-focus')
2286config.bind('U', 'undo -w')
2287config.bind('V', 'mode-enter caret ;; selection-toggle --line')
2288config.bind('ZQ', 'quit')
2289config.bind('ZZ', 'quit --save')
2290config.bind('[[', 'navigate prev')
2291config.bind(']]', 'navigate next')
2292config.bind('`', 'mode-enter set_mark')
2293config.bind('ad', 'download-cancel')
2294config.bind('b', 'cmd-set-text -s :quickmark-load')
2295config.bind('cd', 'download-clear')
2296config.bind('co', 'tab-only')
2297config.bind('d', 'tab-close')
2298config.bind('f', 'hint')
2299config.bind('g$', 'tab-focus -1')
2300config.bind('g0', 'tab-focus 1')
2301config.bind('gB', 'cmd-set-text -s :bookmark-load -t')
2302config.bind('gC', 'tab-clone')
2303config.bind('gD', 'tab-give')
2304config.bind('gJ', 'tab-move +')
2305config.bind('gK', 'tab-move -')
2306config.bind('gO', 'cmd-set-text :open -t -r {url:pretty}')
2307config.bind('gU', 'navigate up -t')
2308config.bind('g^', 'tab-focus 1')
2309config.bind('ga', 'open -t')
2310config.bind('gb', 'cmd-set-text -s :bookmark-load')
2311config.bind('gd', 'download')
2312config.bind('gf', 'view-source')
2313config.bind('gg', 'scroll-to-perc 0')
2314config.bind('gi', 'hint inputs --first')
2315config.bind('gm', 'tab-move')
2316config.bind('go', 'cmd-set-text :open {url:pretty}')
2317config.bind('gt', 'cmd-set-text -s :tab-select')
2318config.bind('gu', 'navigate up')
2319config.bind('h', 'scroll left')
2320config.bind('i', 'mode-enter insert')
2321config.bind('j', 'scroll down')
2322config.bind('k', 'scroll up')
2323config.bind('l', 'scroll right')
2324config.bind('m', 'quickmark-save')
2325config.bind('n', 'search-next')
2326config.bind('o', 'cmd-set-text -s :open')
2327config.bind('pP', 'open -- {primary}')
2328config.bind('pp', 'open -- {clipboard}')
2329config.bind('q', 'macro-record')
2330config.bind('r', 'reload')
2331config.bind('sf', 'save')
2332config.bind('sk', 'cmd-set-text -s :bind')
2333config.bind('sl', 'cmd-set-text -s :set -t')
2334config.bind('ss', 'cmd-set-text -s :set')
2335config.bind('tCH', 'config-cycle -p -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
2336config.bind('tCh', 'config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
2337config.bind('tCu', 'config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; reload')
2338config.bind('tIH', 'config-cycle -p -u *://*.{url:host}/* content.images ;; reload')
2339config.bind('tIh', 'config-cycle -p -u *://{url:host}/* content.images ;; reload')
2340config.bind('tIu', 'config-cycle -p -u {url} content.images ;; reload')
2341config.bind('tPH', 'config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload')
2342config.bind('tPh', 'config-cycle -p -u *://{url:host}/* content.plugins ;; reload')
2343config.bind('tPu', 'config-cycle -p -u {url} content.plugins ;; reload')
2344config.bind('tSH', 'config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload')
2345config.bind('tSh', 'config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload')
2346config.bind('tSu', 'config-cycle -p -u {url} content.javascript.enabled ;; reload')
2347config.bind('tcH', 'config-cycle -p -t -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
2348config.bind('tch', 'config-cycle -p -t -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
2349config.bind('tcu', 'config-cycle -p -t -u {url} content.cookies.accept all no-3rdparty never ;; reload')
2350config.bind('th', 'back -t')
2351config.bind('tiH', 'config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload')
2352config.bind('tih', 'config-cycle -p -t -u *://{url:host}/* content.images ;; reload')
2353config.bind('tiu', 'config-cycle -p -t -u {url} content.images ;; reload')
2354config.bind('tl', 'forward -t')
2355config.bind('tpH', 'config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload')
2356config.bind('tph', 'config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload')
2357config.bind('tpu', 'config-cycle -p -t -u {url} content.plugins ;; reload')
2358config.bind('tsH', 'config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload')
2359config.bind('tsh', 'config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload')
2360config.bind('tsu', 'config-cycle -p -t -u {url} content.javascript.enabled ;; reload')
2361config.bind('u', 'undo')
2362config.bind('v', 'mode-enter caret')
2363config.bind('wB', 'cmd-set-text -s :bookmark-load -w')
2364config.bind('wIf', 'devtools-focus')
2365config.bind('wIh', 'devtools left')
2366config.bind('wIj', 'devtools bottom')
2367config.bind('wIk', 'devtools top')
2368config.bind('wIl', 'devtools right')
2369config.bind('wIw', 'devtools window')
2370config.bind('wO', 'cmd-set-text :open -w {url:pretty}')
2371config.bind('wP', 'open -w -- {primary}')
2372config.bind('wb', 'cmd-set-text -s :quickmark-load -w')
2373config.bind('wf', 'hint all window')
2374config.bind('wh', 'back -w')
2375config.bind('wi', 'devtools')
2376config.bind('wl', 'forward -w')
2377config.bind('wo', 'cmd-set-text -s :open -w')
2378config.bind('wp', 'open -w -- {clipboard}')
2379config.bind('xO', 'cmd-set-text :open -b -r {url:pretty}')
2380config.bind('xo', 'cmd-set-text -s :open -b')
2381config.bind('yD', 'yank domain -s')
2382config.bind('yM', 'yank inline [{title}]({url:yank}) -s')
2383config.bind('yP', 'yank pretty-url -s')
2384config.bind('yT', 'yank title -s')
2385config.bind('yY', 'yank -s')
2386config.bind('yd', 'yank domain')
2387config.bind('ym', 'yank inline [{title}]({url:yank})')
2388config.bind('yp', 'yank pretty-url')
2389config.bind('yt', 'yank title')
2390config.bind('yy', 'yank')
2391config.bind('{{', 'navigate prev -t')
2392config.bind('}}', 'navigate next -t')
2393
2394## Bindings for caret mode
2395config.bind('$', 'move-to-end-of-line', mode='caret')
2396config.bind('0', 'move-to-start-of-line', mode='caret')
2397config.bind('<Ctrl-Space>', 'selection-drop', mode='caret')
2398config.bind('<Escape>', 'mode-leave', mode='caret')
2399config.bind('<Return>', 'yank selection', mode='caret')
2400config.bind('<Space>', 'selection-toggle', mode='caret')
2401config.bind('G', 'move-to-end-of-document', mode='caret')
2402config.bind('H', 'scroll left', mode='caret')
2403config.bind('J', 'scroll down', mode='caret')
2404config.bind('K', 'scroll up', mode='caret')
2405config.bind('L', 'scroll right', mode='caret')
2406config.bind('V', 'selection-toggle --line', mode='caret')
2407config.bind('Y', 'yank selection -s', mode='caret')
2408config.bind('[', 'move-to-start-of-prev-block', mode='caret')
2409config.bind(']', 'move-to-start-of-next-block', mode='caret')
2410config.bind('b', 'move-to-prev-word', mode='caret')
2411config.bind('c', 'mode-enter normal', mode='caret')
2412config.bind('e', 'move-to-end-of-word', mode='caret')
2413config.bind('gg', 'move-to-start-of-document', mode='caret')
2414config.bind('h', 'move-to-prev-char', mode='caret')
2415config.bind('j', 'move-to-next-line', mode='caret')
2416config.bind('k', 'move-to-prev-line', mode='caret')
2417config.bind('l', 'move-to-next-char', mode='caret')
2418config.bind('o', 'selection-reverse', mode='caret')
2419config.bind('v', 'selection-toggle', mode='caret')
2420config.bind('w', 'move-to-next-word', mode='caret')
2421config.bind('y', 'yank selection', mode='caret')
2422config.bind('{', 'move-to-end-of-prev-block', mode='caret')
2423config.bind('}', 'move-to-end-of-next-block', mode='caret')
2424
2425## Bindings for command mode
2426config.bind('<Alt-B>', 'rl-backward-word', mode='command')
2427config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='command')
2428config.bind('<Alt-D>', 'rl-kill-word', mode='command')
2429config.bind('<Alt-F>', 'rl-forward-word', mode='command')
2430config.bind('<Ctrl-?>', 'rl-delete-char', mode='command')
2431config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='command')
2432config.bind('<Ctrl-B>', 'rl-backward-char', mode='command')
2433config.bind('<Ctrl-C>', 'completion-item-yank', mode='command')
2434config.bind('<Ctrl-D>', 'completion-item-del', mode='command')
2435config.bind('<Ctrl-E>', 'rl-end-of-line', mode='command')
2436config.bind('<Ctrl-F>', 'rl-forward-char', mode='command')
2437config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='command')
2438config.bind('<Ctrl-K>', 'rl-kill-line', mode='command')
2439config.bind('<Ctrl-N>', 'command-history-next', mode='command')
2440config.bind('<Ctrl-P>', 'command-history-prev', mode='command')
2441config.bind('<Ctrl-Return>', 'command-accept --rapid', mode='command')
2442config.bind('<Ctrl-Shift-C>', 'completion-item-yank --sel', mode='command')
2443config.bind('<Ctrl-Shift-Tab>', 'completion-item-focus prev-category', mode='command')
2444config.bind('<Ctrl-Shift-W>', 'rl-filename-rubout', mode='command')
2445config.bind('<Ctrl-Tab>', 'completion-item-focus next-category', mode='command')
2446config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='command')
2447config.bind('<Ctrl-W>', 'rl-rubout " "', mode='command')
2448config.bind('<Ctrl-Y>', 'rl-yank', mode='command')
2449config.bind('<Down>', 'completion-item-focus --history next', mode='command')
2450config.bind('<Escape>', 'mode-leave', mode='command')
2451config.bind('<PgDown>', 'completion-item-focus next-page', mode='command')
2452config.bind('<PgUp>', 'completion-item-focus prev-page', mode='command')
2453config.bind('<Return>', 'command-accept', mode='command')
2454config.bind('<Shift-Delete>', 'completion-item-del', mode='command')
2455config.bind('<Shift-Tab>', 'completion-item-focus prev', mode='command')
2456config.bind('<Tab>', 'completion-item-focus next', mode='command')
2457config.bind('<Up>', 'completion-item-focus --history prev', mode='command')
2458
2459## Bindings for hint mode
2460config.bind('<Ctrl-B>', 'hint all tab-bg', mode='hint')
2461config.bind('<Ctrl-F>', 'hint links', mode='hint')
2462config.bind('<Ctrl-R>', 'hint --rapid links tab-bg', mode='hint')
2463config.bind('<Escape>', 'mode-leave', mode='hint')
2464config.bind('<Return>', 'hint-follow', mode='hint')
2465
2466## Bindings for insert mode
2467config.bind('<Ctrl-E>', 'edit-text', mode='insert')
2468config.bind('<Escape>', 'mode-leave', mode='insert')
2469config.bind('<Shift-Escape>', 'fake-key <Escape>', mode='insert')
2470config.bind('<Shift-Ins>', 'insert-text -- {primary}', mode='insert')
2471
2472## Bindings for passthrough mode
2473config.bind('<Shift-Escape>', 'mode-leave', mode='passthrough')
2474
2475## Bindings for prompt mode
2476config.bind('<Alt-B>', 'rl-backward-word', mode='prompt')
2477config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='prompt')
2478config.bind('<Alt-D>', 'rl-kill-word', mode='prompt')
2479config.bind('<Alt-E>', 'prompt-fileselect-external', mode='prompt')
2480config.bind('<Alt-F>', 'rl-forward-word', mode='prompt')
2481config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='prompt')
2482config.bind('<Alt-Y>', 'prompt-yank', mode='prompt')
2483config.bind('<Ctrl-?>', 'rl-delete-char', mode='prompt')
2484config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='prompt')
2485config.bind('<Ctrl-B>', 'rl-backward-char', mode='prompt')
2486config.bind('<Ctrl-E>', 'rl-end-of-line', mode='prompt')
2487config.bind('<Ctrl-F>', 'rl-forward-char', mode='prompt')
2488config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='prompt')
2489config.bind('<Ctrl-K>', 'rl-kill-line', mode='prompt')
2490config.bind('<Ctrl-P>', 'prompt-open-download --pdfjs', mode='prompt')
2491config.bind('<Ctrl-Shift-W>', 'rl-filename-rubout', mode='prompt')
2492config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='prompt')
2493config.bind('<Ctrl-W>', 'rl-rubout " "', mode='prompt')
2494config.bind('<Ctrl-X>', 'prompt-open-download', mode='prompt')
2495config.bind('<Ctrl-Y>', 'rl-yank', mode='prompt')
2496config.bind('<Down>', 'prompt-item-focus next', mode='prompt')
2497config.bind('<Escape>', 'mode-leave', mode='prompt')
2498config.bind('<Return>', 'prompt-accept', mode='prompt')
2499config.bind('<Shift-Tab>', 'prompt-item-focus prev', mode='prompt')
2500config.bind('<Tab>', 'prompt-item-focus next', mode='prompt')
2501config.bind('<Up>', 'prompt-item-focus prev', mode='prompt')
2502
2503## Bindings for register mode
2504config.bind('<Escape>', 'mode-leave', mode='register')
2505
2506## Bindings for yesno mode
2507config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='yesno')
2508config.bind('<Alt-Y>', 'prompt-yank', mode='yesno')
2509config.bind('<Escape>', 'mode-leave', mode='yesno')
2510config.bind('<Return>', 'prompt-accept', mode='yesno')
2511config.bind('N', 'prompt-accept --save no', mode='yesno')
2512config.bind('Y', 'prompt-accept --save yes', mode='yesno')
2513config.bind('n', 'prompt-accept no', mode='yesno')
2514config.bind('y', 'prompt-accept yes', mode='yesno')

 

See also

Endnotes


1. Many Infinite Ink pages, including this one, are evergreen 🌲 and regularly updated.
2. To find out your qutebrowser config and data directories, run the :version command from within qutebrowser.

Please share & discuss 📝 👎 👍 📯