# Documentation:
# qute://help/configuring.html
# qute://help/settings.html
# Load GUI Settings
config.load_autoconfig()
# bindings.commands and bindings.default will not be overwitten by aliases and key_mappings
c.aliases = {
'w': 'session-save',
'q': 'close',
'qa': 'quit',
'wq': 'quit --save',
'wqa': 'quit --save',
'lp': 'spawn --userscript qute-lastpass',
'o': 'open'
}
c.auto_save.interval = 15000
c.auto_save.session = False
c.backend = 'webengine'
c.bindings.key_mappings = {
'': '',
'': '',
'': '',
'': '',
'': '',
'': '',
'': '',
'': '',
'': '',
# Vim keybinds
'': '',
'': '',
'': '',
'': ''
}
# ░█▀▀░█▀█░█░░░█▀█░█▀▄░█▀▀
# ░█░░░█░█░█░░░█░█░█▀▄░▀▀█
# ░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀
# colors
# TODO: Draw directly from Xresources
myColors = {
'foreground': '#f8f8f2',
'background': '#272822',
'black': ['#272822', '#75715e'],
'red': '#f92672',
'green': '#a6e22e',
'yellow': '#f4bf75',
'blue': '#66d9ef',
'magenta': '#ae81ff',
'cyan': '#a1efe4',
'white': '#f8f8f2'
}
# Default color settings
# If set to null, the Qt default is used.
# Type: QssColor
c.colors.completion.category.bg = 'qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #888888, stop:1 #505050)'
c.colors.completion.category.border.bottom = myColors['background']
c.colors.completion.category.border.top = myColors['background']
c.colors.completion.category.fg = myColors['foreground']
c.colors.completion.even.bg = '#333333'
c.colors.completion.fg = ['white', 'white', 'white']
c.colors.completion.item.selected.bg = '#e8c000'
c.colors.completion.item.selected.border.bottom = '#bbbb00'
c.colors.completion.item.selected.border.top = '#bbbb00'
c.colors.completion.item.selected.fg = 'black'
c.colors.completion.item.selected.match.fg = myColors['red']
c.colors.completion.match.fg = myColors['red']
c.colors.completion.odd.bg = myColors['black'][0]
c.colors.completion.scrollbar.bg = myColors['black'][0]
c.colors.completion.scrollbar.fg = myColors['white']
c.colors.contextmenu.disabled.bg = None
c.colors.contextmenu.disabled.fg = None
c.colors.contextmenu.menu.bg = None
c.colors.contextmenu.menu.fg = None
c.colors.contextmenu.selected.bg = None
c.colors.contextmenu.selected.fg = None
c.colors.downloads.bar.bg = 'black'
c.colors.downloads.error.bg = 'red'
c.colors.downloads.error.fg = 'white'
c.colors.downloads.start.bg = '#0000aa'
c.colors.downloads.start.fg = 'white'
c.colors.downloads.stop.bg = '#00aa00'
c.colors.downloads.stop.fg = 'white'
# Color gradient interpolation system for download backgrounds.
# Type: ColorSystem
# Valid values:
# - rgb: Interpolate in the RGB color system.
# - hsv: Interpolate in the HSV color system.
# - hsl: Interpolate in the HSL color system.
# - none: Don't show a gradient.
c.colors.downloads.system.bg = 'rgb'
# Color gradient interpolation system for download text.
# Type: ColorSystem
# Valid values:
# - rgb: Interpolate in the RGB color system.
# - hsv: Interpolate in the HSV color system.
# - hsl: Interpolate in the HSL color system.
# - none: Don't show a gradient.
c.colors.downloads.system.fg = 'rgb'
def hex_to_RGBA(hex):
return 'rgba({}, {}, {}, {})'.format(
*[int(hex[a:a+2], 16) for a in (1,3,5,7)])
stop0 = f'stop:0 {hex_to_RGBA("#00ff0044")}'
stop1 = f'stop:1 {hex_to_RGBA("#00660044")}'
c.colors.hints.bg = f'qlineargradient(x1:0, y1:0, x2:0, y2:1, {stop0}, {stop1})'
c.colors.hints.fg = 'black'
c.colors.hints.match.fg = 'green'
c.colors.keyhint.bg = 'rgba(0, 0, 0, 80%)'
c.colors.keyhint.fg = '#FFFFFF'
c.colors.keyhint.suffix.fg = '#FFFF00'
c.colors.messages.error.bg = 'red'
c.colors.messages.error.border = '#bb0000'
c.colors.messages.error.fg = 'white'
c.colors.messages.info.bg = 'black'
c.colors.messages.info.border = '#333333'
c.colors.messages.info.fg = 'white'
c.colors.messages.warning.bg = 'darkorange'
c.colors.messages.warning.border = '#d47300'
c.colors.messages.warning.fg = 'white'
c.colors.prompts.bg = '#444444'
c.colors.prompts.border = '3px solid gray' # Border used around UI elements in prompts.
c.colors.prompts.fg = 'white'
c.colors.prompts.selected.bg = 'grey'
c.colors.statusbar.caret.bg = 'purple'
c.colors.statusbar.caret.fg = 'white'
c.colors.statusbar.caret.selection.bg = '#a12dff'
c.colors.statusbar.caret.selection.fg = 'white'
c.colors.statusbar.command.bg = myColors['background']
c.colors.statusbar.command.fg = 'white'
c.colors.statusbar.command.private.bg = 'darkslategray'
c.colors.statusbar.command.private.fg = 'white'
c.colors.statusbar.insert.bg = 'darkgreen'
c.colors.statusbar.insert.fg = 'white'
c.colors.statusbar.normal.bg = myColors['background']
c.colors.statusbar.normal.fg = myColors['foreground']
c.colors.statusbar.passthrough.bg = 'darkblue'
c.colors.statusbar.passthrough.fg = 'white'
c.colors.statusbar.private.bg = '#666666'
c.colors.statusbar.private.fg = 'white'
c.colors.statusbar.progress.bg = 'white'
c.colors.statusbar.url.error.fg = 'orange'
c.colors.statusbar.url.fg = 'white'
c.colors.statusbar.url.hover.fg = 'aqua'
c.colors.statusbar.url.success.http.fg = 'white'
c.colors.statusbar.url.success.https.fg = 'lime'
c.colors.statusbar.url.warn.fg = 'yellow'
c.colors.tabs.bar.bg = '#555555'
c.colors.tabs.even.bg = myColors['background']
c.colors.tabs.even.fg = myColors['foreground']
c.colors.tabs.indicator.error = '#ff0000'
c.colors.tabs.indicator.start = '#0000aa'
c.colors.tabs.indicator.stop = '#00aa00'
# Color gradient interpolation system for the tab indicator.
# Type: ColorSystem
# Valid values:
# - rgb: Interpolate in the RGB color system.
# - hsv: Interpolate in the HSV color system.
# - hsl: Interpolate in the HSL color system.
# - none: Don't show a gradient.
c.colors.tabs.indicator.system = 'rgb'
# From here on only QtColors
c.colors.tabs.odd.bg = myColors['background']
c.colors.tabs.odd.fg = myColors['foreground']
c.colors.tabs.pinned.even.bg = myColors['background']
c.colors.tabs.pinned.even.fg = myColors['red']
c.colors.tabs.pinned.odd.bg = myColors['background']
c.colors.tabs.pinned.odd.fg = myColors['red']
c.colors.tabs.pinned.selected.even.bg = myColors['background']
c.colors.tabs.pinned.selected.even.fg = myColors['green']
c.colors.tabs.pinned.selected.odd.bg = myColors['background']
c.colors.tabs.pinned.selected.odd.fg = myColors['green']
c.colors.tabs.selected.even.bg = myColors['background']
c.colors.tabs.selected.even.fg = myColors['green']
c.colors.tabs.selected.odd.bg = myColors['background']
c.colors.tabs.selected.odd.fg = myColors['green']
# ░█▀▄░█▀▀░█▀▀░█▀█░█░░░█▀█░█▀▄░▀█▀░█▀█░█▀▀
# ░█▀▄░█▀▀░█░░░█░█░█░░░█░█░█▀▄░░█░░█░█░█░█
# ░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░▀░▀░▀▀▀
# recoloring
c.colors.webpage.bg = 'white'
# Which algorithm to use for modifying how colors are rendered with
# darkmode.
# Type: String
# Valid values:
# - lightness-cielab: Modify colors by converting them to CIELAB color space and inverting the L value.
# - lightness-hsl: Modify colors by converting them to the HSL color space and inverting the lightness (i.e. the "L" in HSL).
# - brightness-rgb: Modify colors by subtracting each of r, g, and b from their maximum value.
c.colors.webpage.darkmode.algorithm = 'lightness-cielab'
# Contrast for dark mode. This only has an effect when
# `colors.webpage.darkmode.algorithm` is set to `lightness-hsl` or
# `brightness-rgb`.
# Type: Float
c.colors.webpage.darkmode.contrast = 0.0
# Render all web contents using a dark theme. Example configurations
# from Chromium's `chrome://flags`: - "With simple HSL/CIELAB/RGB-based
# inversion": Set `colors.webpage.darkmode.algorithm` accordingly. -
# "With selective image inversion": Set
# `colors.webpage.darkmode.policy.images` to `smart`. - "With selective
# inversion of non-image elements": Set
# `colors.webpage.darkmode.threshold.text` to 150 and
# `colors.webpage.darkmode.threshold.background` to 205. - "With
# selective inversion of everything": Combines the two variants above.
# Type: Bool
c.colors.webpage.darkmode.enabled = False
# Render all colors as grayscale. This only has an effect when
# `colors.webpage.darkmode.algorithm` is set to `lightness-hsl` or
# `brightness-rgb`.
# Type: Bool
c.colors.webpage.darkmode.grayscale.all = False
# Desaturation factor for images in dark mode. If set to 0, images are
# left as-is. If set to 1, images are completely grayscale. Values
# between 0 and 1 desaturate the colors accordingly.
# Type: Float
c.colors.webpage.darkmode.grayscale.images = 0.0
# Which images to apply dark mode to. WARNING: With QtWebengine 5.15.0,
# this setting can cause frequent renderer process crashes due to a
# https://codereview.qt-project.org/c/qt/qtwebengine-
# chromium/+/304211[bug in Qt]. Thus, the 'smart' setting is ignored and
# treated like 'never' in that case.
# Type: String
# Valid values:
# - always: Apply dark mode filter to all images.
# - never: Never apply dark mode filter to any images.
# - smart: Apply dark mode based on image content.
c.colors.webpage.darkmode.policy.images = 'smart'
# Which pages to apply dark mode to.
# Type: String
# Valid values:
# - always: Apply dark mode filter to all frames, regardless of content.
# - smart: Apply dark mode filter to frames based on background color.
c.colors.webpage.darkmode.policy.page = 'smart'
# Threshold for inverting background elements with dark mode. Background
# elements with brightness above this threshold will be inverted, and
# below it will be left as in the original, non-dark-mode page. Set to
# 256 to never invert the color or to 0 to always invert it. Note: This
# behavior is the opposite of `colors.webpage.darkmode.threshold.text`!
# Type: Int
c.colors.webpage.darkmode.threshold.background = 0
# Threshold for inverting text with dark mode. Text colors with
# brightness below this threshold will be inverted, and above it will be
# left as in the original, non-dark-mode page. Set to 256 to always
# invert text color or to 0 to never invert text color.
# Type: Int
c.colors.webpage.darkmode.threshold.text = 256
c.colors.webpage.prefers_color_scheme_dark = True
# ░█░█░█▀▀░█░█░█▀▀
# ░█▀▄░█▀▀░░█░░▀▀█
# ░▀░▀░▀▀▀░░▀░░▀▀▀
# keys
# Bindings for normal mode
config.bind("'", 'enter-mode jump_mark')
config.bind('+', 'zoom-in')
config.bind('-', 'zoom-out')
config.bind('.', 'repeat-command')
config.bind('/', 'set-cmd-text /')
config.bind(':', 'set-cmd-text :')
config.bind(';I', 'hint images tab')
config.bind(';O', 'hint links fill :open -t -r {hint-url}')
config.bind(';R', 'hint --rapid links window')
config.bind(';Y', 'hint links yank-primary')
config.bind(';b', 'hint all tab-bg')
config.bind(';d', 'hint links download')
config.bind(';f', 'hint all tab-fg')
config.bind(';h', 'hint all hover')
config.bind(';i', 'hint images')
config.bind(';o', 'hint links fill :open {hint-url}')
config.bind(';r', 'hint --rapid links tab-bg')
config.bind(';t', 'hint inputs')
config.bind(';y', 'hint links yank')
config.bind('', 'tab-focus 1')
config.bind('', 'tab-focus 2')
config.bind('', 'tab-focus 3')
config.bind('', 'tab-focus 4')
config.bind('', 'tab-focus 5')
config.bind('', 'tab-focus 6')
config.bind('', 'tab-focus 7')
config.bind('', 'tab-focus 8')
config.bind('', 'tab-focus -1')
config.bind('', 'tab-mute')
config.bind('', 'navigate increment')
config.bind('', 'print')
config.bind('', 'scroll-page 0 -1')
config.bind('', 'scroll-page 0 0.5')
config.bind('', 'reload -f')
config.bind('', 'scroll-page 0 1')
config.bind('', 'open -w')
config.bind('', 'tab-next')
config.bind('', 'tab-prev')
config.bind('', 'quit')
config.bind('', 'follow-selected -t')
config.bind('', 'open -p')
config.bind('', 'undo')
config.bind('', 'nop')
config.bind('', 'close')
config.bind('', 'open -t')
config.bind('', 'tab-focus last')
config.bind('', 'scroll-page 0 -0.5')
config.bind('', 'enter-mode passthrough')
config.bind('', 'tab-close')
config.bind('', 'navigate decrement')
config.bind('', 'tab-focus last')
config.bind('', 'home')
config.bind('', 'tab-pin')
config.bind('', 'stop')
config.bind('', 'clear-keychain ;; search ;; fullscreen --leave')
config.bind('', 'fullscreen')
config.bind('', 'reload')
config.bind('', 'follow-selected')
config.bind('', 'back')
config.bind('', 'forward')
config.bind('=', 'zoom')
config.bind('?', 'set-cmd-text ?')
config.bind('@', 'run-macro')
config.bind('B', 'set-cmd-text -s :quickmark-load -t')
config.bind('D', 'tab-close -o')
config.bind('F', 'hint all tab')
config.bind('G', 'scroll-to-perc')
config.bind('H', 'back')
config.bind('J', 'tab-next')
config.bind('K', 'tab-prev')
config.bind('L', 'forward')
config.bind('M', 'bookmark-add')
config.bind('N', 'search-prev')
config.bind('O', 'set-cmd-text -s :open -t')
config.bind('PP', 'open -t -- {primary}')
config.bind('Pp', 'open -t -- {clipboard}')
config.bind('R', 'reload -f')
config.bind('Sb', 'open qute://bookmarks#bookmarks')
config.bind('Sh', 'open qute://history')
config.bind('Sq', 'open qute://bookmarks')
config.bind('Ss', 'open qute://settings')
config.bind('T', 'tab-focus')
config.bind('U', 'undo -w')
config.bind('V', 'enter-mode caret ;; toggle-selection --line')
config.bind('ZQ', 'quit')
config.bind('ZZ', 'quit --save')
config.bind('[[', 'navigate prev')
config.bind(']]', 'navigate next')
config.bind('`', 'enter-mode set_mark')
config.bind('ad', 'download-cancel')
config.bind('b', 'set-cmd-text -s :quickmark-load')
config.bind('cd', 'download-clear')
config.bind('co', 'tab-only')
config.bind('d', 'tab-close')
config.bind('f', 'hint')
config.bind('g$', 'tab-focus -1')
config.bind('g0', 'tab-focus 1')
config.bind('gB', 'set-cmd-text -s :bookmark-load -t')
config.bind('gC', 'tab-clone')
config.bind('gD', 'tab-give')
config.bind('gO', 'set-cmd-text :open -t -r {url:pretty}')
config.bind('gU', 'navigate up -t')
config.bind('g^', 'tab-focus 1')
config.bind('ga', 'open -t')
config.bind('gb', 'set-cmd-text -s :bookmark-load')
config.bind('gd', 'download')
config.bind('gf', 'view-source')
config.bind('gg', 'scroll-to-perc 0')
config.bind('gi', 'hint inputs --first')
config.bind('gl', 'tab-move -')
config.bind('gm', 'tab-move')
config.bind('go', 'set-cmd-text :open {url:pretty}')
config.bind('gr', 'tab-move +')
config.bind('gt', 'set-cmd-text -s :buffer')
config.bind('gu', 'navigate up')
config.bind('h', 'scroll left')
config.bind('i', 'enter-mode insert')
config.bind('j', 'scroll down')
config.bind('k', 'scroll up')
config.bind('l', 'scroll right')
config.bind('m', 'quickmark-save')
config.bind('n', 'search-next')
config.bind('o', 'set-cmd-text -s :open')
config.bind('pP', 'open -- {primary}')
config.bind('pp', 'open -- {clipboard}')
config.bind('q', 'record-macro')
config.bind('r', 'reload')
config.bind('sf', 'save')
config.bind('sk', 'set-cmd-text -s :bind')
config.bind('sl', 'set-cmd-text -s :set -t')
config.bind('ss', 'set-cmd-text -s :set')
config.bind('tCH', 'config-cycle -p -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind('tCh', 'config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind('tCu', 'config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; reload')
config.bind('tIH', 'config-cycle -p -u *://*.{url:host}/* content.images ;; reload')
config.bind('tIh', 'config-cycle -p -u *://{url:host}/* content.images ;; reload')
config.bind('tIu', 'config-cycle -p -u {url} content.images ;; reload')
config.bind('tPH', 'config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload')
config.bind('tPh', 'config-cycle -p -u *://{url:host}/* content.plugins ;; reload')
config.bind('tPu', 'config-cycle -p -u {url} content.plugins ;; reload')
config.bind('tSH', 'config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload')
config.bind('tSh', 'config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload')
config.bind('tSu', 'config-cycle -p -u {url} content.javascript.enabled ;; reload')
config.bind('tcH', 'config-cycle -p -t -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind('tch', 'config-cycle -p -t -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind('tcu', 'config-cycle -p -t -u {url} content.cookies.accept all no-3rdparty never ;; reload')
config.bind('th', 'back -t')
config.bind('tiH', 'config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload')
config.bind('tih', 'config-cycle -p -t -u *://{url:host}/* content.images ;; reload')
config.bind('tiu', 'config-cycle -p -t -u {url} content.images ;; reload')
config.bind('tl', 'forward -t')
config.bind('tpH', 'config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload')
config.bind('tph', 'config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload')
config.bind('tpu', 'config-cycle -p -t -u {url} content.plugins ;; reload')
config.bind('tsH', 'config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload')
config.bind('tsh', 'config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload')
config.bind('tsu', 'config-cycle -p -t -u {url} content.javascript.enabled ;; reload')
config.bind('u', 'undo')
config.bind('v', 'enter-mode caret')
config.bind('wB', 'set-cmd-text -s :bookmark-load -w')
config.bind('wIf', 'devtools-focus')
config.bind('wIh', 'devtools left')
config.bind('wIj', 'devtools bottom')
config.bind('wIk', 'devtools top')
config.bind('wIl', 'devtools right')
config.bind('wIw', 'devtools window')
config.bind('wO', 'set-cmd-text :open -w {url:pretty}')
config.bind('wP', 'open -w -- {primary}')
config.bind('wb', 'set-cmd-text -s :quickmark-load -w')
config.bind('wf', 'hint all window')
config.bind('wh', 'back -w')
config.bind('wi', 'devtools')
config.bind('wl', 'forward -w')
config.bind('wo', 'set-cmd-text -s :open -w')
config.bind('wp', 'open -w -- {clipboard}')
config.bind('xO', 'set-cmd-text :open -b -r {url:pretty}')
config.bind('xo', 'set-cmd-text -s :open -b')
config.bind('yD', 'yank domain -s')
config.bind('yM', 'yank inline [{title}]({url}) -s')
config.bind('yP', 'yank pretty-url -s')
config.bind('yT', 'yank title -s')
config.bind('yY', 'yank -s')
config.bind('yd', 'yank domain')
config.bind('ym', 'yank inline [{title}]({url})')
config.bind('yp', 'yank pretty-url')
config.bind('yt', 'yank title')
config.bind('yy', 'yank')
config.bind('{{', 'navigate prev -t')
config.bind('}}', 'navigate next -t')
# Bindings for caret mode
config.bind('$', 'move-to-end-of-line', mode='caret')
config.bind('0', 'move-to-start-of-line', mode='caret')
config.bind('', 'drop-selection', mode='caret')
config.bind('', 'leave-mode', mode='caret')
config.bind('', 'yank selection', mode='caret')
config.bind('', 'toggle-selection', mode='caret')
config.bind('G', 'move-to-end-of-document', mode='caret')
config.bind('H', 'scroll left', mode='caret')
config.bind('J', 'scroll down', mode='caret')
config.bind('K', 'scroll up', mode='caret')
config.bind('L', 'scroll right', mode='caret')
config.bind('V', 'toggle-selection --line', mode='caret')
config.bind('Y', 'yank selection -s', mode='caret')
config.bind('[', 'move-to-start-of-prev-block', mode='caret')
config.bind(']', 'move-to-start-of-next-block', mode='caret')
config.bind('b', 'move-to-prev-word', mode='caret')
config.bind('c', 'enter-mode normal', mode='caret')
config.bind('e', 'move-to-end-of-word', mode='caret')
config.bind('gg', 'move-to-start-of-document', mode='caret')
config.bind('h', 'move-to-prev-char', mode='caret')
config.bind('j', 'move-to-next-line', mode='caret')
config.bind('k', 'move-to-prev-line', mode='caret')
config.bind('l', 'move-to-next-char', mode='caret')
config.bind('o', 'reverse-selection', mode='caret')
config.bind('v', 'toggle-selection', mode='caret')
config.bind('w', 'move-to-next-word', mode='caret')
config.bind('y', 'yank selection', mode='caret')
config.bind('{', 'move-to-end-of-prev-block', mode='caret')
config.bind('}', 'move-to-end-of-next-block', mode='caret')
# Bindings for command mode
config.bind('', 'rl-backward-word', mode='command')
config.bind('', 'rl-backward-kill-word', mode='command')
config.bind('', 'rl-kill-word', mode='command')
config.bind('', 'rl-forward-word', mode='command')
config.bind('', 'rl-delete-char', mode='command')
config.bind('', 'rl-beginning-of-line', mode='command')
config.bind('', 'rl-backward-char', mode='command')
config.bind('', 'completion-item-yank', mode='command')
config.bind('', 'completion-item-del', mode='command')
config.bind('', 'rl-end-of-line', mode='command')
config.bind('', 'rl-forward-char', mode='command')
config.bind('', 'rl-backward-delete-char', mode='command')
config.bind('', 'rl-kill-line', mode='command')
config.bind('', 'command-history-next', mode='command')
config.bind('', 'command-history-prev', mode='command')
config.bind('', 'command-accept --rapid', mode='command')
config.bind('', 'completion-item-yank --sel', mode='command')
config.bind('', 'completion-item-focus prev-category', mode='command')
config.bind('', 'completion-item-focus next-category', mode='command')
config.bind('', 'rl-unix-line-discard', mode='command')
config.bind('', 'rl-unix-word-rubout', mode='command')
config.bind('', 'rl-yank', mode='command')
config.bind('', 'completion-item-focus --history next', mode='command')
config.bind('', 'leave-mode', mode='command')
config.bind('', 'completion-item-focus next-page', mode='command')
config.bind('', 'completion-item-focus prev-page', mode='command')
config.bind('', 'command-accept', mode='command')
config.bind('', 'completion-item-del', mode='command')
config.bind('', 'completion-item-focus prev', mode='command')
config.bind('', 'completion-item-focus next', mode='command')
config.bind('', 'completion-item-focus --history prev', mode='command')
# Bindings for hint mode
config.bind('', 'hint all tab-bg', mode='hint')
config.bind('', 'hint links', mode='hint')
config.bind('', 'hint --rapid links tab-bg', mode='hint')
config.bind('', 'leave-mode', mode='hint')
config.bind('', 'follow-hint', mode='hint')
# Bindings for insert mode
config.bind('', 'open-editor', mode='insert')
config.bind('', 'leave-mode', mode='insert')
config.bind('', 'insert-text -- {primary}', mode='insert')
# Bindings for passthrough mode
config.bind('', 'leave-mode', mode='passthrough')
# Bindings for prompt mode
config.bind('', 'rl-backward-word', mode='prompt')
config.bind('', 'rl-backward-kill-word', mode='prompt')
config.bind('', 'rl-kill-word', mode='prompt')
config.bind('', 'rl-forward-word', mode='prompt')
config.bind('', 'prompt-yank --sel', mode='prompt')
config.bind('', 'prompt-yank', mode='prompt')
config.bind('', 'rl-delete-char', mode='prompt')
config.bind('', 'rl-beginning-of-line', mode='prompt')
config.bind('', 'rl-backward-char', mode='prompt')
config.bind('', 'rl-end-of-line', mode='prompt')
config.bind('', 'rl-forward-char', mode='prompt')
config.bind('', 'rl-backward-delete-char', mode='prompt')
config.bind('', 'rl-kill-line', mode='prompt')
config.bind('', 'prompt-open-download --pdfjs', mode='prompt')
config.bind('', 'rl-unix-line-discard', mode='prompt')
config.bind('', 'rl-unix-word-rubout', mode='prompt')
config.bind('', 'prompt-open-download', mode='prompt')
config.bind('', 'rl-yank', mode='prompt')
config.bind('', 'prompt-item-focus next', mode='prompt')
config.bind('', 'leave-mode', mode='prompt')
config.bind('', 'prompt-accept', mode='prompt')
config.bind('', 'prompt-item-focus prev', mode='prompt')
config.bind('', 'prompt-item-focus next', mode='prompt')
config.bind('', 'prompt-item-focus prev', mode='prompt')
# Bindings for register mode
config.bind('', 'leave-mode', mode='register')
# Bindings for yesno mode
config.bind('', 'prompt-yank --sel', mode='yesno')
config.bind('', 'prompt-yank', mode='yesno')
config.bind('', 'leave-mode', mode='yesno')
config.bind('', 'prompt-accept', mode='yesno')
config.bind('N', 'prompt-accept --save no', mode='yesno')
config.bind('Y', 'prompt-accept --save yes', mode='yesno')
config.bind('n', 'prompt-accept no', mode='yesno')
config.bind('y', 'prompt-accept yes', mode='yesno')
# ░█▄█░▀█▀░█▀▀░█▀▀
# ░█░█░░█░░▀▀█░█░░
# ░▀░▀░▀▀▀░▀▀▀░▀▀▀
c.completion.cmd_history_max_items = 100
c.completion.delay = 0
c.completion.height = '50%'
c.completion.min_chars = 1
c.completion.open_categories = ['searchengines', 'quickmarks', 'bookmarks', 'history']
# Move on to the next part when there's only one possible completion
# left.
# Type: Bool
c.completion.quick = True
c.completion.scrollbar.padding = 2
c.completion.scrollbar.width = 12
# When to show the autocompletion window.
# Type: String
# Valid values:
# - always: Whenever a completion is available.
# - auto: Whenever a completion is requested.
# - never: Never.
c.completion.show = 'always'
# Shrink the completion to be smaller than the configured size if there
# are no scrollbars.
# Type: Bool
c.completion.shrink = False
# Format of timestamps (e.g. for the history completion). See
# https://sqlite.org/lang_datefunc.html and
# https://docs.python.org/3/library/datetime.html#strftime-strptime-
# behavior for allowed substitutions, qutebrowser uses both sqlite and
# Python to format its timestamps.
# Type: String
c.completion.timestamp_format = '%Y-%m-%d %H:%M'
# Execute the best-matching command on a partial match.
# Type: Bool
c.completion.use_best_match = False
# A list of patterns which should not be shown in the history. This only
# affects the completion. Matching URLs are still saved in the history
# (and visible on the qute://history page), but hidden in the
# completion. Changing this setting will cause the completion history to
# be regenerated on the next start, which will take a short while.
# Type: List of UrlPattern
c.completion.web_history.exclude = []
# Number of URLs to show in the web history. 0: no history / -1:
# unlimited
# Type: Int
c.completion.web_history.max_items = -1
# Require a confirmation before quitting the application.
# Type: ConfirmQuit
# Valid values:
# - always: Always show a confirmation.
# - multiple-tabs: Show a confirmation if multiple tabs are opened.
# - downloads: Show a confirmation if downloads are running
# - never: Never show a confirmation.
c.confirm_quit = ['never']
# Automatically start playing `