:config-write-py --defaults :config-write-py -d
Ongoing
According to
Repology,
the latest
packaged
qutebrowser
is
.
2019-August-31 Published this evolving[1] article.
This article assumes you know the basics about the qutebrowser web browser. To learn about qutebrowser, see Infinite Ink’s #qutebrowser Portal.
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…
qutebrowser.org’s:
ii.com’s:
qutebrowser Fragments and Tips💡️, especially the Some of my config.py settings section
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
#
‼ | Starting with qutebrowser v2.0.0,
which was released
2021-January-28,
if you use a
The second setting (True) is emphasized in line 15 below. |
💡 | In your 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')
For more about qutebrowser, see Infinite Ink’s…
@nm@mathstodon.xyz
or
#InfiniteInk
in it.