[Qutebrowser] Update config

This commit is contained in:
Lucien Cartier-Tilet 2023-09-10 23:50:23 +02:00
parent b8bdd37cbc
commit 46e92dd821
Signed by: phundrak
GPG Key ID: BD7789E705CB8DCA
2 changed files with 356 additions and 331 deletions

View File

@ -1,6 +1,7 @@
# pylint: disable=C0111
from qutebrowser.config.configfiles import ConfigAPI # noqa: F401
from qutebrowser.config.config import ConfigContainer # noqa: F401
config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103
c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
@ -19,19 +20,19 @@ c.content.autoplay = False
# Type: List of Url
c.content.blocking.adblock.lists = [
# AdBlock sources
'https://easylist.to/easylist/easylist.txt',
'https://easylist.to/easylist/easyprivacy.txt'
"https://easylist.to/easylist/easylist.txt",
"https://easylist.to/easylist/easyprivacy.txt"
# uBlock sources
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badlists.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2021.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/lan-block.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/unbreak.txt',
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badlists.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2021.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/lan-block.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt",
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/unbreak.txt",
]
# Enable the ad/host blocker
@ -55,7 +56,7 @@ c.content.blocking.hosts.block_subdomains = True
# if it exists.
# Type: List of Url
c.content.blocking.hosts.lists = [
'https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts',
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts",
]
# Which method of blocking ads should be used. Support for Adblock Plus
@ -69,7 +70,7 @@ c.content.blocking.hosts.lists = [
# - adblock: Use Brave's ABP-style adblocker
# - hosts: Use hosts blocking
# - both: Use both hosts blocking and Brave's ABP-style adblocker
c.content.blocking.method = 'auto'
c.content.blocking.method = "auto"
# A list of patterns that should always be loaded, despite being blocked
# by the ad-/host-blocker. Local domains are always exempt from
@ -133,7 +134,7 @@ c.content.canvas_reading = True
# - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
# - never: Don't accept cookies at all.
c.content.cookies.accept = 'all'
c.content.cookies.accept = "all"
# Store cookies.
# Type: Bool
@ -142,7 +143,7 @@ c.content.cookies.store = True
# Default encoding to use for websites. The encoding must be a string
# describing an encoding such as _utf-8_, _iso-8859-1_, etc.
# Type: String
c.content.default_encoding = 'utf-8'
c.content.default_encoding = "utf-8"
# Allow websites to share screen content.
# Type: BoolAsk
@ -150,7 +151,7 @@ c.content.default_encoding = 'utf-8'
# - true
# - false
# - ask
c.content.desktop_capture = 'ask'
c.content.desktop_capture = "ask"
# Try to pre-fetch DNS entries to speed up browsing.
# Type: Bool
@ -177,7 +178,7 @@ c.content.fullscreen.window = True
# - true
# - false
# - ask
c.content.geolocation = 'ask'
c.content.geolocation = "ask"
# Value to send in the `Accept-Language` header. Note that the value
# read from JavaScript is always the global value.
@ -206,7 +207,7 @@ c.content.headers.do_not_track = True
# - always: Always send the Referer.
# - never: Never send the Referer. This is not recommended, as some sites may break.
# - 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.
c.content.headers.referer = 'same-domain'
c.content.headers.referer = "same-domain"
# User agent to send. The following placeholders are defined: *
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
@ -222,7 +223,7 @@ c.content.headers.referer = 'same-domain'
# between 5.12 and 5.14 (inclusive), changing the value exposed to
# JavaScript requires a restart.
# Type: FormatString
c.content.headers.user_agent = 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {qt_key}/{qt_version} {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}'
c.content.headers.user_agent = "Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {qt_key}/{qt_version} {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}"
# Enable hyperlink auditing (`<a ping>`).
# Type: Bool
@ -236,12 +237,6 @@ c.content.images = True
# Type: Bool
c.content.javascript.alert = True
# Allow JavaScript to read from or write to the clipboard. With
# QtWebEngine, writing the clipboard as response to a user interaction
# is always allowed.
# Type: Bool
c.content.javascript.can_access_clipboard = False
# Allow JavaScript to close tabs.
# Type: Bool
c.content.javascript.can_close_tabs = False
@ -295,7 +290,7 @@ c.content.local_storage = True
# - true
# - false
# - ask
c.content.media.audio_capture = 'ask'
c.content.media.audio_capture = "ask"
# Allow websites to record audio and video.
# Type: BoolAsk
@ -303,7 +298,7 @@ c.content.media.audio_capture = 'ask'
# - true
# - false
# - ask
c.content.media.audio_video_capture = 'ask'
c.content.media.audio_video_capture = "ask"
# Allow websites to record video.
# Type: BoolAsk
@ -311,7 +306,7 @@ c.content.media.audio_video_capture = 'ask'
# - true
# - false
# - ask
c.content.media.video_capture = 'ask'
c.content.media.video_capture = "ask"
# Allow websites to lock your mouse pointer.
# Type: BoolAsk
@ -319,7 +314,7 @@ c.content.media.video_capture = 'ask'
# - true
# - false
# - ask
c.content.mouse_lock = 'ask'
c.content.mouse_lock = "ask"
# Automatically mute tabs. Note that if the `:tab-mute` command is used,
# the mute status for the affected tab is now controlled manually, and
@ -337,7 +332,7 @@ c.content.netrc_file = None
# - true
# - false
# - ask
c.content.notifications.enabled = 'ask'
c.content.notifications.enabled = "ask"
# What notification presenter to use for web notifications. Note that
# not all implementations support all features of notifications: - With
@ -357,7 +352,7 @@ c.content.notifications.enabled = 'ask'
# - 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.
# - messages: Show notifications as qutebrowser messages. Most notification features aren't available.
# - herbe: (experimental!) Show notifications using herbe (github.com/dudik/herbe). Most notification features aren't available.
c.content.notifications.presenter = 'auto'
c.content.notifications.presenter = "auto"
# Whether to show the origin URL for notifications. Note that URL
# patterns with this setting only get matched against the origin part of
@ -379,7 +374,7 @@ c.content.pdfjs = True
# - true
# - false
# - ask
c.content.persistent_storage = 'ask'
c.content.persistent_storage = "ask"
# Enable plugins in Web pages.
# Type: Bool
@ -411,7 +406,7 @@ c.content.private_browsing = False
# Valid values:
# - system: Use the system wide proxy.
# - none: Don't use any proxy
c.content.proxy = 'system'
c.content.proxy = "system"
# Send DNS requests over the configured proxy.
# Type: Bool
@ -424,7 +419,7 @@ c.content.proxy_dns_requests = True
# - true
# - false
# - ask
c.content.register_protocol_handler = 'ask'
c.content.register_protocol_handler = "ask"
# Enable quirks (such as faked user agent headers) needed to get
# specific sites to work properly.
@ -448,7 +443,7 @@ c.content.site_specific_quirks.enabled = True
# - js-object-fromentries
# - misc-krunker
# - misc-mathml-darkmode
c.content.site_specific_quirks.skip = ['js-string-replaceall']
c.content.site_specific_quirks.skip = ["js-string-replaceall"]
# How to proceed on TLS certificate errors.
# Type: String
@ -457,7 +452,7 @@ c.content.site_specific_quirks.skip = ['js-string-replaceall']
# - ask-block-thirdparty: Ask how to proceed for normal page loads, but silently block resource loads.
# - block: Automatically block loading on certificate errors.
# - 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.
c.content.tls.certificate_errors = 'ask'
c.content.tls.certificate_errors = "ask"
# How navigation requests to URLs with unknown schemes are handled.
# Type: String
@ -465,7 +460,7 @@ c.content.tls.certificate_errors = 'ask'
# - disallow: Disallows all navigation requests to URLs with unknown schemes.
# - 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.
# - allow-all: Allows all navigation requests to URLs with unknown schemes.
c.content.unknown_url_scheme_policy = 'allow-from-user-interaction'
c.content.unknown_url_scheme_policy = "allow-from-user-interaction"
# List of user stylesheet filenames to use.
# Type: List of File, or File
@ -482,7 +477,7 @@ c.content.webgl = True
# - 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.
# - default-public-interface-only: WebRTC should only use the default route used by http. This doesn't expose any local addresses.
# - 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.
c.content.webrtc_ip_handling_policy = 'all-interfaces'
c.content.webrtc_ip_handling_policy = "all-interfaces"
# Monitor load requests for cross-site scripting attempts. Suspicious
# scripts will be blocked and reported in the devtools JavaScript

View File

@ -9,355 +9,385 @@ c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
# config.bind(',d', 'spawn ytdl {url}')
# bookmarks
config.bind(',ba', 'bookmark-add')
config.bind(',bb', 'set-cmd-text -s :bookmark-load')
config.bind(',bl', 'bookmark-list')
config.bind(',bj', 'bookmark-list --jump')
config.bind(',bt', 'set-cmd-text -s :bookmark-load -t')
config.bind(',bw', 'set-cmd-text -s :bookmark-load -w')
config.bind(',bql', 'set-cmd-text -s :quickmark-load')
config.bind(',bqL', 'set-cmd-text -s :quickmark-load -t')
config.bind(',bqs', 'quickmark-save')
config.bind(',bqw', 'set-cmd-text -s :quickmark-load -w')
config.bind(",ba", "bookmark-add")
config.bind(",bb", "cmd-set-text -s :bookmark-load")
config.bind(",bl", "bookmark-list")
config.bind(",bj", "bookmark-list --jump")
config.bind(",bt", "cmd-set-text -s :bookmark-load -t")
config.bind(",bw", "cmd-set-text -s :bookmark-load -w")
config.bind(",bql", "cmd-set-text -s :quickmark-load")
config.bind(",bqL", "cmd-set-text -s :quickmark-load -t")
config.bind(",bqs", "quickmark-save")
config.bind(",bqw", "cmd-set-text -s :quickmark-load -w")
# config cycle
config.bind(',cCH', 'config-cycle -p -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind(',cCh', 'config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind(',cCu', 'config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; reload')
config.bind(',cIH', 'config-cycle -p -u *://*.{url:host}/* content.images ;; reload')
config.bind(',cIh', 'config-cycle -p -u *://{url:host}/* content.images ;; reload')
config.bind(',cIu', 'config-cycle -p -u {url} content.images ;; reload')
config.bind(',cPH', 'config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload')
config.bind(',cPh', 'config-cycle -p -u *://{url:host}/* content.plugins ;; reload')
config.bind(',cPu', 'config-cycle -p -u {url} content.plugins ;; reload')
config.bind(',cSH', 'config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload')
config.bind(',cSh', 'config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload')
config.bind(',cSu', 'config-cycle -p -u {url} content.javascript.enabled ;; reload')
config.bind(',ccH', 'config-cycle -p -t -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind(',cch', 'config-cycle -p -t -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload')
config.bind(',ccu', 'config-cycle -p -t -u {url} content.cookies.accept all no-3rdparty never ;; reload')
config.bind(',ch', 'back -t')
config.bind(',ciH', 'config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload')
config.bind(',cih', 'config-cycle -p -t -u *://{url:host}/* content.images ;; reload')
config.bind(',ciu', 'config-cycle -p -t -u {url} content.images ;; reload')
config.bind(',cl', 'forward -t')
config.bind(',cpH', 'config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload')
config.bind(',cph', 'config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload')
config.bind(',cpu', 'config-cycle -p -t -u {url} content.plugins ;; reload')
config.bind(',csH', 'config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload')
config.bind(',csh', 'config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload')
config.bind(',csu', 'config-cycle -p -t -u {url} content.javascript.enabled ;; reload')
config.bind(
",cCH",
"config-cycle -p -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(
",cCh",
"config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(
",cCu",
"config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(",cIH", "config-cycle -p -u *://*.{url:host}/* content.images ;; reload")
config.bind(",cIh", "config-cycle -p -u *://{url:host}/* content.images ;; reload")
config.bind(",cIu", "config-cycle -p -u {url} content.images ;; reload")
config.bind(",cPH", "config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload")
config.bind(",cPh", "config-cycle -p -u *://{url:host}/* content.plugins ;; reload")
config.bind(",cPu", "config-cycle -p -u {url} content.plugins ;; reload")
config.bind(
",cSH", "config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload"
)
config.bind(
",cSh", "config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload"
)
config.bind(",cSu", "config-cycle -p -u {url} content.javascript.enabled ;; reload")
config.bind(
",ccH",
"config-cycle -p -t -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(
",cch",
"config-cycle -p -t -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(
",ccu",
"config-cycle -p -t -u {url} content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(",ch", "back -t")
config.bind(",ciH", "config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload")
config.bind(",cih", "config-cycle -p -t -u *://{url:host}/* content.images ;; reload")
config.bind(",ciu", "config-cycle -p -t -u {url} content.images ;; reload")
config.bind(",cl", "forward -t")
config.bind(
",cpH", "config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload"
)
config.bind(",cph", "config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload")
config.bind(",cpu", "config-cycle -p -t -u {url} content.plugins ;; reload")
config.bind(
",csH",
"config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload",
)
config.bind(
",csh",
"config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload",
)
config.bind(",csu", "config-cycle -p -t -u {url} content.javascript.enabled ;; reload")
# downloads
config.bind(',da', 'download-cancel')
config.bind(',dd', 'download')
config.bind(',dc', 'download-clear')
config.bind(',dy', 'spawn ytdl {url}')
config.bind(",da", "download-cancel")
config.bind(",dd", "download")
config.bind(",dc", "download-clear")
config.bind(",dy", "spawn ytdl {url}")
# dev tools
config.bind(',Dd', 'devtools')
config.bind(',Df', 'devtools-focus')
config.bind(',Dc', 'devtools left')
config.bind(',Dt', 'devtools bottom')
config.bind(',Ds', 'devtools top')
config.bind(',Dr', 'devtools right')
config.bind(',Dw', 'devtools window')
config.bind(",Dd", "devtools")
config.bind(",Df", "devtools-focus")
config.bind(",Dc", "devtools left")
config.bind(",Dt", "devtools bottom")
config.bind(",Ds", "devtools top")
config.bind(",Dr", "devtools right")
config.bind(",Dw", "devtools window")
# save
config.bind('fs', 'save')
config.bind("fs", "save")
# hints
config.bind(',hd', 'hint links download')
config.bind(',hh', 'hint')
config.bind(',hH', 'hint all hover')
config.bind(',hii', 'hint images')
config.bind(',hiI', 'hint images tab')
config.bind(',hIi', 'hint inputs')
config.bind(',hIf', 'hint inputs --first')
config.bind(',hO', 'hint links fill :open -t -r {hint-url}')
config.bind(',ho', 'hint links fill :open {hint-url}')
config.bind(',hR', 'hint --rapid links window')
config.bind(',hr', 'hint --rapid links tab-bg')
config.bind(',htb', 'hint all tab-bg')
config.bind(',htf', 'hint all tab-fg')
config.bind(',htt', 'hint all tab')
config.bind(',hw', 'hint all window')
config.bind(',hy', 'hint links yank')
config.bind(',hY', 'hint links yank-primary')
config.bind(",hd", "hint links download")
config.bind(",hh", "hint")
config.bind(",hH", "hint all hover")
config.bind(",hii", "hint images")
config.bind(",hiI", "hint images tab")
config.bind(",hIi", "hint inputs")
config.bind(",hIf", "hint inputs --first")
config.bind(",hO", "hint links fill :open -t -r {hint-url}")
config.bind(",ho", "hint links fill :open {hint-url}")
config.bind(",hR", "hint --rapid links window")
config.bind(",hr", "hint --rapid links tab-bg")
config.bind(",htb", "hint all tab-bg")
config.bind(",htf", "hint all tab-fg")
config.bind(",htt", "hint all tab")
config.bind(",hw", "hint all window")
config.bind(",hy", "hint links yank")
config.bind(",hY", "hint links yank-primary")
# Bindings for hint mode
config.bind('<Ctrl-B>', 'hint all tab-bg', mode='hint')
config.bind('<Ctrl-F>', 'hint links', mode='hint')
config.bind('<Ctrl-R>', 'hint --rapid links tab-bg', mode='hint')
config.bind('<Escape>', 'mode-leave', mode='hint')
config.bind('<Return>', 'hint-follow', mode='hint')
config.bind("<Ctrl-B>", "hint all tab-bg", mode="hint")
config.bind("<Ctrl-F>", "hint links", mode="hint")
config.bind("<Ctrl-R>", "hint --rapid links tab-bg", mode="hint")
config.bind("<Escape>", "mode-leave", mode="hint")
config.bind("<Return>", "hint-follow", mode="hint")
# Move
config.bind('<Ctrl-PgDown>', 'tab-next')
config.bind('<Ctrl-C>', 'back -w')
config.bind('<Ctrl-R>', 'forward -w')
config.bind('<Ctrl-h>', 'home')
config.bind('T', 'tab-next')
config.bind('S', 'tab-prev')
config.bind('C', 'back')
config.bind('R', 'forward')
config.bind("<Ctrl-PgDown>", "tab-next")
config.bind("<Ctrl-C>", "back -w")
config.bind("<Ctrl-R>", "forward -w")
config.bind("<Ctrl-h>", "home")
config.bind("T", "tab-next")
config.bind("S", "tab-prev")
config.bind("C", "back")
config.bind("R", "forward")
# cmd
config.bind(',sb', 'set-cmd-text -s :bind')
config.bind(',st', 'set-cmd-text -s :set -t')
config.bind(',ss', 'set')
config.bind(',sS', 'set-cmd-text -s :set')
config.bind(",sb", "cmd-set-text -s :bind")
config.bind(",st", "cmd-set-text -s :set -t")
config.bind(",ss", "set")
config.bind(",sS", "cmd-set-text -s :set")
# open
config.bind('<Ctrl-N>', 'open -w')
config.bind('<Ctrl-Shift-N>', 'open -p')
config.bind('<Ctrl-T>', 'open -t')
config.bind(',ob', 'set-cmd-text -s :open -b')
config.bind(',oB', 'set-cmd-text :open -b -r {url:pretty}')
config.bind(',oP', 'set-cmd-text :open -t -r {url:pretty}')
config.bind(',ott', 'open -t')
config.bind(',otT', 'set-cmd-text -s :open -t')
config.bind(',ow', 'set-cmd-text -s :open -w')
config.bind(',oW', 'set-cmd-text :open -w {url:pretty}')
config.bind(',occ', 'open -- {clipboard}')
config.bind(',ocC', 'open -t -- {clipboard}')
config.bind(',ocp', 'open -- {primary}')
config.bind(',ocP', 'open -t -- {primary}')
config.bind(',ocw', 'open -w -- {clipboard}')
config.bind(',ocW', 'open -w -- {primary}')
config.bind('o', 'set-cmd-text -s :open')
config.bind('O', 'set-cmd-text :open {url:pretty}')
config.bind("<Ctrl-N>", "open -w")
config.bind("<Ctrl-Shift-N>", "open -p")
config.bind("<Ctrl-T>", "open -t")
config.bind(",ob", "cmd-set-text -s :open -b")
config.bind(",oB", "cmd-set-text :open -b -r {url:pretty}")
config.bind(",oP", "cmd-set-text :open -t -r {url:pretty}")
config.bind(",ott", "open -t")
config.bind(",otT", "cmd-set-text -s :open -t")
config.bind(",ow", "cmd-set-text -s :open -w")
config.bind(",oW", "cmd-set-text :open -w {url:pretty}")
config.bind(",occ", "open -- {clipboard}")
config.bind(",ocC", "open -t -- {clipboard}")
config.bind(",ocp", "open -- {primary}")
config.bind(",ocP", "open -t -- {primary}")
config.bind(",ocw", "open -w -- {clipboard}")
config.bind(",ocW", "open -w -- {primary}")
config.bind("o", "cmd-set-text -s :open")
config.bind("O", "cmd-set-text :open {url:pretty}")
# tabs
config.bind('<Alt-1>', 'tab-focus 1')
config.bind('<Alt-2>', 'tab-focus 2')
config.bind('<Alt-3>', 'tab-focus 3')
config.bind('<Alt-4>', 'tab-focus 4')
config.bind('<Alt-5>', 'tab-focus 5')
config.bind('<Alt-6>', 'tab-focus 6')
config.bind('<Alt-7>', 'tab-focus 7')
config.bind('<Alt-8>', 'tab-focus 8')
config.bind('<Alt-9>', 'tab-focus -1')
config.bind('<Alt-m>', 'tab-mute')
config.bind('<Ctrl-Tab>', 'tab-focus last')
config.bind('<Ctrl-W>', 'tab-close')
config.bind(',tT', 'tab-move +')
config.bind(',tS', 'tab-move -')
config.bind(',tn', 'tab-next')
config.bind(',tp', 'tab-prev')
config.bind(',t«', 'tab-focus -1')
config.bind(',t»', 'tab-focus 1')
config.bind(',tC', 'tab-clone')
config.bind(',tD', 'tab-only')
config.bind(',td', 'tab-close')
config.bind(',tf', 'set-cmd-text -sr :tab-focus')
config.bind(',tg', 'tab-give')
config.bind(',tl', 'tab-focus last')
config.bind(',tm', 'tab-move')
config.bind(',tP', 'tab-pin')
config.bind(',ts', 'set-cmd-text -s :tab-select')
config.bind("<Alt-1>", "tab-focus 1")
config.bind("<Alt-2>", "tab-focus 2")
config.bind("<Alt-3>", "tab-focus 3")
config.bind("<Alt-4>", "tab-focus 4")
config.bind("<Alt-5>", "tab-focus 5")
config.bind("<Alt-6>", "tab-focus 6")
config.bind("<Alt-7>", "tab-focus 7")
config.bind("<Alt-8>", "tab-focus 8")
config.bind("<Alt-9>", "tab-focus -1")
config.bind("<Alt-m>", "tab-mute")
config.bind("<Ctrl-Tab>", "tab-focus last")
config.bind("<Ctrl-W>", "tab-close")
config.bind(",tT", "tab-move +")
config.bind(",tS", "tab-move -")
config.bind(",tn", "tab-next")
config.bind(",tp", "tab-prev")
config.bind(",t«", "tab-focus -1")
config.bind(",t»", "tab-focus 1")
config.bind(",tC", "tab-clone")
config.bind(",tD", "tab-only")
config.bind(",td", "tab-close")
config.bind(",tf", "cmd-set-text -sr :tab-focus")
config.bind(",tg", "tab-give")
config.bind(",tl", "tab-focus last")
config.bind(",tm", "tab-move")
config.bind(",tP", "tab-pin")
config.bind(",ts", "cmd-set-text -s :tab-select")
# scoll
config.bind('G', 'scroll-to-perc')
config.bind('gg', 'scroll-to-perc 0')
config.bind('c', 'scroll left')
config.bind('t', 'scroll down')
config.bind('s', 'scroll up')
config.bind('r', 'scroll right')
config.bind('<Ctrl-F>', 'scroll-page 0 1')
config.bind('<Ctrl-B>', 'scroll-page 0 -1')
config.bind('<Ctrl-D>', 'scroll-page 0 0.5')
config.bind('<Ctrl-U>', 'scroll-page 0 -0.5')
config.bind("G", "scroll-to-perc")
config.bind("gg", "scroll-to-perc 0")
config.bind("c", "scroll left")
config.bind("t", "scroll down")
config.bind("s", "scroll up")
config.bind("r", "scroll right")
config.bind("<Ctrl-F>", "scroll-page 0 1")
config.bind("<Ctrl-B>", "scroll-page 0 -1")
config.bind("<Ctrl-D>", "scroll-page 0 0.5")
config.bind("<Ctrl-U>", "scroll-page 0 -0.5")
# navigate
config.bind(',nd', 'navigate decrement')
config.bind(',ni', 'navigate increment')
config.bind(',nn', 'navigate prev')
config.bind(',nN', 'navigate next -t')
config.bind(',np', 'navigate next')
config.bind(',nP', 'navigate prev -t')
config.bind(',nu', 'navigate up')
config.bind(',nU', 'navigate up -t')
config.bind(",nd", "navigate decrement")
config.bind(",ni", "navigate increment")
config.bind(",nn", "navigate prev")
config.bind(",nN", "navigate next -t")
config.bind(",np", "navigate next")
config.bind(",nP", "navigate prev -t")
config.bind(",nu", "navigate up")
config.bind(",nU", "navigate up -t")
# search
config.bind('n', 'search-next')
config.bind('N', 'search-prev')
config.bind("n", "search-next")
config.bind("N", "search-prev")
# print
config.bind('<Ctrl-Alt-p>', 'print')
config.bind("<Ctrl-Alt-p>", "print")
config.bind(',qq', 'quit')
config.bind(',qs', 'quit --save')
config.bind(',qw', 'close')
config.bind('<Ctrl-Q>', 'quit')
config.bind(",qq", "quit")
config.bind(",qs", "quit --save")
config.bind(",qw", "close")
config.bind("<Ctrl-Q>", "quit")
# reload
config.bind(',rr', 'reload')
config.bind(',rR', 'reload -f')
config.bind('<F5>', 'reload')
config.bind('<Ctrl-F5>', 'reload -f')
config.bind(",rr", "reload")
config.bind(",rR", "reload -f")
config.bind("<F5>", "reload")
config.bind("<Ctrl-F5>", "reload -f")
# view
config.bind(',vh', 'history')
config.bind(',vs', 'view-source')
config.bind(",vh", "history")
config.bind(",vs", "view-source")
config.bind(",vm", "spawn mpv {url}")
# yank
config.bind('yd', 'yank domain')
config.bind('yD', 'yank domain -s')
config.bind('yi', 'yank inline [{title}]({url})')
config.bind('yI', 'yank inline [{title}]({url}) -s')
config.bind('yp', 'yank pretty-url')
config.bind('yP', 'yank pretty-url -s')
config.bind('yt', 'yank title')
config.bind('yT', 'yank title -s')
config.bind('yy', 'yank')
config.bind('yY', 'yank -s')
config.bind("yd", "yank domain")
config.bind("yD", "yank domain -s")
config.bind("yi", "yank inline [{title}]({url})")
config.bind("yI", "yank inline [{title}]({url}) -s")
config.bind("yp", "yank pretty-url")
config.bind("yP", "yank pretty-url -s")
config.bind("yt", "yank title")
config.bind("yT", "yank title -s")
config.bind("yy", "yank")
config.bind("yY", "yank -s")
config.bind('<Escape>', 'clear-keychain ;; search ;; fullscreen --leave')
config.bind("<Escape>", "clear-keychain ;; search ;; fullscreen --leave")
config.bind('+', 'zoom-in')
config.bind('-', 'zoom-out')
config.bind('=', 'zoom')
config.bind("+", "zoom-in")
config.bind("-", "zoom-out")
config.bind("=", "zoom")
config.bind('?', 'set-cmd-text ?')
config.bind('/', 'set-cmd-text /')
config.bind(':', 'set-cmd-text :')
config.bind('.', 'repeat-command')
config.bind("?", "cmd-set-text ?")
config.bind("/", "cmd-set-text /")
config.bind(":", "cmd-set-text :")
config.bind(".", "repeat-command")
config.bind('<Ctrl-Shift-Tab>', 'nop')
config.bind('<Ctrl-s>', 'stop')
config.bind('<F11>', 'fullscreen')
config.bind("<Ctrl-Shift-Tab>", "nop")
config.bind("<Ctrl-s>", "stop")
config.bind("<F11>", "fullscreen")
config.bind('<Return>', 'selection-follow')
config.bind('<Ctrl-Return>', 'selection-follow -t')
config.bind("<Return>", "selection-follow")
config.bind("<Ctrl-Return>", "selection-follow -t")
config.bind('<back>', 'back')
config.bind('<forward>', 'forward')
config.bind("<back>", "back")
config.bind("<forward>", "forward")
config.bind('<Ctrl-V>', 'mode-enter passthrough')
config.bind("'", 'mode-enter jump_mark')
config.bind('v', 'mode-enter caret')
config.bind('V', 'mode-enter caret ;; selection-toggle --line')
config.bind('`', 'mode-enter set_mark')
config.bind('i', 'mode-enter insert')
config.bind("<Ctrl-V>", "mode-enter passthrough")
config.bind("'", "mode-enter jump_mark")
config.bind("v", "mode-enter caret")
config.bind("V", "mode-enter caret ;; selection-toggle --line")
config.bind("`", "mode-enter set_mark")
config.bind("i", "mode-enter insert")
config.bind('q', 'macro-record')
config.bind('@', 'macro-run')
config.bind("q", "macro-record")
config.bind("@", "macro-run")
config.bind('U', 'undo -w')
config.bind('<Ctrl-Shift-T>', 'undo')
config.bind('u', 'undo')
config.bind("U", "undo -w")
config.bind("<Ctrl-Shift-T>", "undo")
config.bind("u", "undo")
# Bindings for caret mode
config.bind('C', 'scroll left', mode='caret')
config.bind('T', 'scroll down', mode='caret')
config.bind('S', 'scroll up', mode='caret')
config.bind('R', 'scroll right', mode='caret')
config.bind('c', 'move-to-prev-char', mode='caret')
config.bind('t', 'move-to-next-line', mode='caret')
config.bind('s', 'move-to-prev-line', mode='caret')
config.bind('r', 'move-to-next-char', mode='caret')
config.bind("C", "scroll left", mode="caret")
config.bind("T", "scroll down", mode="caret")
config.bind("S", "scroll up", mode="caret")
config.bind("R", "scroll right", mode="caret")
config.bind("c", "move-to-prev-char", mode="caret")
config.bind("t", "move-to-next-line", mode="caret")
config.bind("s", "move-to-prev-line", mode="caret")
config.bind("r", "move-to-next-char", mode="caret")
config.bind('$', 'move-to-end-of-line', mode='caret')
config.bind('0', 'move-to-start-of-line', mode='caret')
config.bind('<Ctrl-Space>', 'selection-drop', mode='caret')
config.bind('<Escape>', 'mode-leave', mode='caret')
config.bind('<Return>', 'yank selection', mode='caret')
config.bind('<Space>', 'selection-toggle', mode='caret')
config.bind('v', 'selection-toggle', mode='caret')
config.bind('V', 'selection-toggle --line', mode='caret')
config.bind('y', 'yank selection', 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('{', 'move-to-end-of-prev-block', mode='caret')
config.bind('}', 'move-to-end-of-next-block', mode='caret')
config.bind('b', 'move-to-prev-word', mode='caret')
config.bind('e', 'move-to-end-of-word', mode='caret')
config.bind('gg', 'move-to-start-of-document', mode='caret')
config.bind('G', 'move-to-end-of-document', mode='caret')
config.bind('n', 'mode-enter normal', mode='caret')
config.bind('o', 'selection-reverse', mode='caret')
config.bind('w', 'move-to-next-word', mode='caret')
config.bind("$", "move-to-end-of-line", mode="caret")
config.bind("0", "move-to-start-of-line", mode="caret")
config.bind("<Ctrl-Space>", "selection-drop", mode="caret")
config.bind("<Escape>", "mode-leave", mode="caret")
config.bind("<Return>", "yank selection", mode="caret")
config.bind("<Space>", "selection-toggle", mode="caret")
config.bind("v", "selection-toggle", mode="caret")
config.bind("V", "selection-toggle --line", mode="caret")
config.bind("y", "yank selection", 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("{", "move-to-end-of-prev-block", mode="caret")
config.bind("}", "move-to-end-of-next-block", mode="caret")
config.bind("b", "move-to-prev-word", mode="caret")
config.bind("e", "move-to-end-of-word", mode="caret")
config.bind("gg", "move-to-start-of-document", mode="caret")
config.bind("G", "move-to-end-of-document", mode="caret")
config.bind("n", "mode-enter normal", mode="caret")
config.bind("o", "selection-reverse", mode="caret")
config.bind("w", "move-to-next-word", mode="caret")
# Bindings for command mode
config.bind('<Alt-B>', 'rl-backward-word', mode='command')
config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='command')
config.bind('<Alt-D>', 'rl-kill-word', mode='command')
config.bind('<Alt-F>', 'rl-forward-word', mode='command')
config.bind('<Ctrl-?>', 'rl-delete-char', mode='command')
config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='command')
config.bind('<Ctrl-B>', 'rl-backward-char', mode='command')
config.bind('<Ctrl-C>', 'completion-item-yank', mode='command')
config.bind('<Ctrl-D>', 'completion-item-del', mode='command')
config.bind('<Ctrl-E>', 'rl-end-of-line', mode='command')
config.bind('<Ctrl-F>', 'rl-forward-char', mode='command')
config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='command')
config.bind('<Ctrl-K>', 'rl-kill-line', mode='command')
config.bind('<Ctrl-N>', 'command-history-next', mode='command')
config.bind('<Ctrl-P>', 'command-history-prev', mode='command')
config.bind('<Ctrl-Return>', 'command-accept --rapid', mode='command')
config.bind('<Ctrl-Shift-C>', 'completion-item-yank --sel', mode='command')
config.bind('<Ctrl-Shift-Tab>', 'completion-item-focus prev-category', mode='command')
config.bind('<Ctrl-Tab>', 'completion-item-focus next-category', mode='command')
config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='command')
config.bind('<Ctrl-W>', 'rl-unix-word-rubout', mode='command')
config.bind('<Ctrl-Y>', 'rl-yank', mode='command')
config.bind('<Down>', 'completion-item-focus --history next', mode='command')
config.bind('<Escape>', 'mode-leave', mode='command')
config.bind('<PgDown>', 'completion-item-focus next-page', mode='command')
config.bind('<PgUp>', 'completion-item-focus prev-page', mode='command')
config.bind('<Return>', 'command-accept', mode='command')
config.bind('<Shift-Delete>', 'completion-item-del', mode='command')
config.bind('<Shift-Tab>', 'completion-item-focus prev', mode='command')
config.bind('<Tab>', 'completion-item-focus next', mode='command')
config.bind('<Up>', 'completion-item-focus --history prev', mode='command')
config.bind("<Alt-B>", "rl-backward-word", mode="command")
config.bind("<Alt-Backspace>", "rl-backward-kill-word", mode="command")
config.bind("<Alt-D>", "rl-kill-word", mode="command")
config.bind("<Alt-F>", "rl-forward-word", mode="command")
config.bind("<Ctrl-?>", "rl-delete-char", mode="command")
config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="command")
config.bind("<Ctrl-B>", "rl-backward-char", mode="command")
config.bind("<Ctrl-C>", "completion-item-yank", mode="command")
config.bind("<Ctrl-D>", "completion-item-del", mode="command")
config.bind("<Ctrl-E>", "rl-end-of-line", mode="command")
config.bind("<Ctrl-F>", "rl-forward-char", mode="command")
config.bind("<Ctrl-H>", "rl-backward-delete-char", mode="command")
config.bind("<Ctrl-K>", "rl-kill-line", mode="command")
config.bind("<Ctrl-N>", "command-history-next", mode="command")
config.bind("<Ctrl-P>", "command-history-prev", mode="command")
config.bind("<Ctrl-Return>", "command-accept --rapid", mode="command")
config.bind("<Ctrl-Shift-C>", "completion-item-yank --sel", mode="command")
config.bind("<Ctrl-Shift-Tab>", "completion-item-focus prev-category", mode="command")
config.bind("<Ctrl-Tab>", "completion-item-focus next-category", mode="command")
config.bind("<Ctrl-U>", "rl-unix-line-discard", mode="command")
config.bind("<Ctrl-W>", "rl-unix-word-rubout", mode="command")
config.bind("<Ctrl-Y>", "rl-yank", mode="command")
config.bind("<Down>", "completion-item-focus --history next", mode="command")
config.bind("<Escape>", "mode-leave", mode="command")
config.bind("<PgDown>", "completion-item-focus next-page", mode="command")
config.bind("<PgUp>", "completion-item-focus prev-page", mode="command")
config.bind("<Return>", "command-accept", mode="command")
config.bind("<Shift-Delete>", "completion-item-del", mode="command")
config.bind("<Shift-Tab>", "completion-item-focus prev", mode="command")
config.bind("<Tab>", "completion-item-focus next", mode="command")
config.bind("<Up>", "completion-item-focus --history prev", mode="command")
# Bindings for insert mode
config.bind('<Ctrl-E>', 'edit-text', mode='insert')
config.bind('<Escape>', 'mode-leave', mode='insert')
config.bind('<Shift-Escape>', 'fake-key <Escape>', mode='insert')
config.bind('<Shift-Ins>', 'insert-text -- {primary}', mode='insert')
config.bind("<Ctrl-E>", "edit-text", mode="insert")
config.bind("<Escape>", "mode-leave", mode="insert")
config.bind("<Shift-Escape>", "fake-key <Escape>", mode="insert")
config.bind("<Shift-Ins>", "insert-text -- {primary}", mode="insert")
# Bindings for passthrough mode
config.bind('<Shift-Escape>', 'mode-leave', mode='passthrough')
config.bind("<Shift-Escape>", "mode-leave", mode="passthrough")
# Bindings for prompt mode
config.bind('<Alt-B>', 'rl-backward-word', mode='prompt')
config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='prompt')
config.bind('<Alt-D>', 'rl-kill-word', mode='prompt')
config.bind('<Alt-F>', 'rl-forward-word', mode='prompt')
config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='prompt')
config.bind('<Alt-Y>', 'prompt-yank', mode='prompt')
config.bind('<Ctrl-?>', 'rl-delete-char', mode='prompt')
config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='prompt')
config.bind('<Ctrl-B>', 'rl-backward-char', mode='prompt')
config.bind('<Ctrl-E>', 'rl-end-of-line', mode='prompt')
config.bind('<Ctrl-F>', 'rl-forward-char', mode='prompt')
config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='prompt')
config.bind('<Ctrl-K>', 'rl-kill-line', mode='prompt')
config.bind('<Ctrl-P>', 'prompt-open-download --pdfjs', mode='prompt')
config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='prompt')
config.bind('<Ctrl-W>', 'rl-unix-word-rubout', mode='prompt')
config.bind('<Ctrl-X>', 'prompt-open-download', mode='prompt')
config.bind('<Ctrl-Y>', 'rl-yank', mode='prompt')
config.bind('<Down>', 'prompt-item-focus next', mode='prompt')
config.bind('<Escape>', 'mode-leave', mode='prompt')
config.bind('<Return>', 'prompt-accept', mode='prompt')
config.bind('<Shift-Tab>', 'prompt-item-focus prev', mode='prompt')
config.bind('<Tab>', 'prompt-item-focus next', mode='prompt')
config.bind('<Up>', 'prompt-item-focus prev', mode='prompt')
config.bind("<Alt-B>", "rl-backward-word", mode="prompt")
config.bind("<Alt-Backspace>", "rl-backward-kill-word", mode="prompt")
config.bind("<Alt-D>", "rl-kill-word", mode="prompt")
config.bind("<Alt-F>", "rl-forward-word", mode="prompt")
config.bind("<Alt-Shift-Y>", "prompt-yank --sel", mode="prompt")
config.bind("<Alt-Y>", "prompt-yank", mode="prompt")
config.bind("<Ctrl-?>", "rl-delete-char", mode="prompt")
config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="prompt")
config.bind("<Ctrl-B>", "rl-backward-char", mode="prompt")
config.bind("<Ctrl-E>", "rl-end-of-line", mode="prompt")
config.bind("<Ctrl-F>", "rl-forward-char", mode="prompt")
config.bind("<Ctrl-H>", "rl-backward-delete-char", mode="prompt")
config.bind("<Ctrl-K>", "rl-kill-line", mode="prompt")
config.bind("<Ctrl-P>", "prompt-open-download --pdfjs", mode="prompt")
config.bind("<Ctrl-U>", "rl-unix-line-discard", mode="prompt")
config.bind("<Ctrl-W>", "rl-unix-word-rubout", mode="prompt")
config.bind("<Ctrl-X>", "prompt-open-download", mode="prompt")
config.bind("<Ctrl-Y>", "rl-yank", mode="prompt")
config.bind("<Down>", "prompt-item-focus next", mode="prompt")
config.bind("<Escape>", "mode-leave", mode="prompt")
config.bind("<Return>", "prompt-accept", mode="prompt")
config.bind("<Shift-Tab>", "prompt-item-focus prev", mode="prompt")
config.bind("<Tab>", "prompt-item-focus next", mode="prompt")
config.bind("<Up>", "prompt-item-focus prev", mode="prompt")
# Bindings for register mode
config.bind('<Escape>', 'mode-leave', mode='register')
config.bind("<Escape>", "mode-leave", mode="register")
# Bindings for yesno mode
config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='yesno')
config.bind('<Alt-Y>', 'prompt-yank', mode='yesno')
config.bind('<Escape>', 'mode-leave', mode='yesno')
config.bind('<Return>', 'prompt-accept', mode='yesno')
config.bind('N', 'prompt-accept --save no', mode='yesno')
config.bind('Y', 'prompt-accept --save yes', mode='yesno')
config.bind('n', 'prompt-accept no', mode='yesno')
config.bind('y', 'prompt-accept yes', mode='yesno')
config.bind("<Alt-Shift-Y>", "prompt-yank --sel", mode="yesno")
config.bind("<Alt-Y>", "prompt-yank", mode="yesno")
config.bind("<Escape>", "mode-leave", mode="yesno")
config.bind("<Return>", "prompt-accept", mode="yesno")
config.bind("N", "prompt-accept --save no", mode="yesno")
config.bind("Y", "prompt-accept --save yes", mode="yesno")
config.bind("n", "prompt-accept no", mode="yesno")
config.bind("y", "prompt-accept yes", mode="yesno")