[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 # pylint: disable=C0111
from qutebrowser.config.configfiles import ConfigAPI # noqa: F401 from qutebrowser.config.configfiles import ConfigAPI # noqa: F401
from qutebrowser.config.config import ConfigContainer # noqa: F401 from qutebrowser.config.config import ConfigContainer # noqa: F401
config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103 config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103
c: ConfigContainer = c # 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 # Type: List of Url
c.content.blocking.adblock.lists = [ c.content.blocking.adblock.lists = [
# AdBlock sources # AdBlock sources
'https://easylist.to/easylist/easylist.txt', "https://easylist.to/easylist/easylist.txt",
'https://easylist.to/easylist/easyprivacy.txt' "https://easylist.to/easylist/easyprivacy.txt"
# uBlock sources # uBlock sources
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.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/badlists.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.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.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.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/filters-2021.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/lan-block.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/privacy.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.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/unbreak.txt",
] ]
# Enable the ad/host blocker # Enable the ad/host blocker
@ -55,7 +56,7 @@ c.content.blocking.hosts.block_subdomains = True
# if it exists. # if it exists.
# Type: List of Url # Type: List of Url
c.content.blocking.hosts.lists = [ 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 # 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 # - adblock: Use Brave's ABP-style adblocker
# - hosts: Use hosts blocking # - hosts: Use hosts blocking
# - both: Use both hosts blocking and Brave's ABP-style adblocker # - 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 # A list of patterns that should always be loaded, despite being blocked
# by the ad-/host-blocker. Local domains are always exempt from # 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-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. # - 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. # - never: Don't accept cookies at all.
c.content.cookies.accept = 'all' c.content.cookies.accept = "all"
# Store cookies. # Store cookies.
# Type: Bool # Type: Bool
@ -142,7 +143,7 @@ c.content.cookies.store = True
# Default encoding to use for websites. The encoding must be a string # Default encoding to use for websites. The encoding must be a string
# describing an encoding such as _utf-8_, _iso-8859-1_, etc. # describing an encoding such as _utf-8_, _iso-8859-1_, etc.
# Type: String # Type: String
c.content.default_encoding = 'utf-8' c.content.default_encoding = "utf-8"
# Allow websites to share screen content. # Allow websites to share screen content.
# Type: BoolAsk # Type: BoolAsk
@ -150,7 +151,7 @@ c.content.default_encoding = 'utf-8'
# - true # - true
# - false # - false
# - ask # - ask
c.content.desktop_capture = 'ask' c.content.desktop_capture = "ask"
# Try to pre-fetch DNS entries to speed up browsing. # Try to pre-fetch DNS entries to speed up browsing.
# Type: Bool # Type: Bool
@ -177,7 +178,7 @@ c.content.fullscreen.window = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.geolocation = 'ask' c.content.geolocation = "ask"
# Value to send in the `Accept-Language` header. Note that the value # Value to send in the `Accept-Language` header. Note that the value
# read from JavaScript is always the global 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. # - always: Always send the Referer.
# - never: Never send the Referer. This is not recommended, as some sites may break. # - 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. # - 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: * # User agent to send. The following placeholders are defined: *
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`: # `{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 # between 5.12 and 5.14 (inclusive), changing the value exposed to
# JavaScript requires a restart. # JavaScript requires a restart.
# Type: FormatString # 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>`). # Enable hyperlink auditing (`<a ping>`).
# Type: Bool # Type: Bool
@ -236,12 +237,6 @@ c.content.images = True
# Type: Bool # Type: Bool
c.content.javascript.alert = True 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. # Allow JavaScript to close tabs.
# Type: Bool # Type: Bool
c.content.javascript.can_close_tabs = False c.content.javascript.can_close_tabs = False
@ -295,7 +290,7 @@ c.content.local_storage = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.media.audio_capture = 'ask' c.content.media.audio_capture = "ask"
# Allow websites to record audio and video. # Allow websites to record audio and video.
# Type: BoolAsk # Type: BoolAsk
@ -303,7 +298,7 @@ c.content.media.audio_capture = 'ask'
# - true # - true
# - false # - false
# - ask # - ask
c.content.media.audio_video_capture = 'ask' c.content.media.audio_video_capture = "ask"
# Allow websites to record video. # Allow websites to record video.
# Type: BoolAsk # Type: BoolAsk
@ -311,7 +306,7 @@ c.content.media.audio_video_capture = 'ask'
# - true # - true
# - false # - false
# - ask # - ask
c.content.media.video_capture = 'ask' c.content.media.video_capture = "ask"
# Allow websites to lock your mouse pointer. # Allow websites to lock your mouse pointer.
# Type: BoolAsk # Type: BoolAsk
@ -319,7 +314,7 @@ c.content.media.video_capture = 'ask'
# - true # - true
# - false # - false
# - ask # - ask
c.content.mouse_lock = 'ask' c.content.mouse_lock = "ask"
# Automatically mute tabs. Note that if the `:tab-mute` command is used, # Automatically mute tabs. Note that if the `:tab-mute` command is used,
# the mute status for the affected tab is now controlled manually, and # the mute status for the affected tab is now controlled manually, and
@ -337,7 +332,7 @@ c.content.netrc_file = None
# - true # - true
# - false # - false
# - ask # - ask
c.content.notifications.enabled = 'ask' c.content.notifications.enabled = "ask"
# What notification presenter to use for web notifications. Note that # What notification presenter to use for web notifications. Note that
# not all implementations support all features of notifications: - With # 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. # - 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. # - 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. # - 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 # Whether to show the origin URL for notifications. Note that URL
# patterns with this setting only get matched against the origin part of # patterns with this setting only get matched against the origin part of
@ -379,7 +374,7 @@ c.content.pdfjs = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.persistent_storage = 'ask' c.content.persistent_storage = "ask"
# Enable plugins in Web pages. # Enable plugins in Web pages.
# Type: Bool # Type: Bool
@ -411,7 +406,7 @@ c.content.private_browsing = False
# Valid values: # Valid values:
# - system: Use the system wide proxy. # - system: Use the system wide proxy.
# - none: Don't use any proxy # - none: Don't use any proxy
c.content.proxy = 'system' c.content.proxy = "system"
# Send DNS requests over the configured proxy. # Send DNS requests over the configured proxy.
# Type: Bool # Type: Bool
@ -424,7 +419,7 @@ c.content.proxy_dns_requests = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.register_protocol_handler = 'ask' c.content.register_protocol_handler = "ask"
# Enable quirks (such as faked user agent headers) needed to get # Enable quirks (such as faked user agent headers) needed to get
# specific sites to work properly. # specific sites to work properly.
@ -448,7 +443,7 @@ c.content.site_specific_quirks.enabled = True
# - js-object-fromentries # - js-object-fromentries
# - misc-krunker # - misc-krunker
# - misc-mathml-darkmode # - 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. # How to proceed on TLS certificate errors.
# Type: String # 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. # - ask-block-thirdparty: Ask how to proceed for normal page loads, but silently block resource loads.
# - block: Automatically block loading on certificate errors. # - 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. # - 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. # How navigation requests to URLs with unknown schemes are handled.
# Type: String # Type: String
@ -465,7 +460,7 @@ c.content.tls.certificate_errors = 'ask'
# - disallow: Disallows all navigation requests to URLs with unknown schemes. # - 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-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. # - 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. # List of user stylesheet filenames to use.
# Type: List of File, or File # 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-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. # - 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. # - 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 # Monitor load requests for cross-site scripting attempts. Suspicious
# scripts will be blocked and reported in the devtools JavaScript # 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}') # config.bind(',d', 'spawn ytdl {url}')
# bookmarks # bookmarks
config.bind(',ba', 'bookmark-add') config.bind(",ba", "bookmark-add")
config.bind(',bb', 'set-cmd-text -s :bookmark-load') config.bind(",bb", "cmd-set-text -s :bookmark-load")
config.bind(',bl', 'bookmark-list') config.bind(",bl", "bookmark-list")
config.bind(',bj', 'bookmark-list --jump') config.bind(",bj", "bookmark-list --jump")
config.bind(',bt', 'set-cmd-text -s :bookmark-load -t') config.bind(",bt", "cmd-set-text -s :bookmark-load -t")
config.bind(',bw', 'set-cmd-text -s :bookmark-load -w') config.bind(",bw", "cmd-set-text -s :bookmark-load -w")
config.bind(',bql', 'set-cmd-text -s :quickmark-load') config.bind(",bql", "cmd-set-text -s :quickmark-load")
config.bind(',bqL', 'set-cmd-text -s :quickmark-load -t') config.bind(",bqL", "cmd-set-text -s :quickmark-load -t")
config.bind(',bqs', 'quickmark-save') config.bind(",bqs", "quickmark-save")
config.bind(',bqw', 'set-cmd-text -s :quickmark-load -w') config.bind(",bqw", "cmd-set-text -s :quickmark-load -w")
# config cycle # config cycle
config.bind(',cCH', 'config-cycle -p -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload') config.bind(
config.bind(',cCh', 'config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload') ",cCH",
config.bind(',cCu', 'config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; reload') "config-cycle -p -u *://*.{url:host}/* 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(
config.bind(',cIu', 'config-cycle -p -u {url} content.images ;; reload') ",cCh",
config.bind(',cPH', 'config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload') "config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; 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(
config.bind(',cSH', 'config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload') ",cCu",
config.bind(',cSh', 'config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload') "config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; 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(",cIH", "config-cycle -p -u *://*.{url:host}/* content.images ;; reload")
config.bind(',cch', 'config-cycle -p -t -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload') config.bind(",cIh", "config-cycle -p -u *://{url:host}/* content.images ;; reload")
config.bind(',ccu', 'config-cycle -p -t -u {url} content.cookies.accept all no-3rdparty never ;; reload') config.bind(",cIu", "config-cycle -p -u {url} content.images ;; reload")
config.bind(',ch', 'back -t') config.bind(",cPH", "config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload")
config.bind(',ciH', 'config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload') config.bind(",cPh", "config-cycle -p -u *://{url:host}/* content.plugins ;; reload")
config.bind(',cih', 'config-cycle -p -t -u *://{url:host}/* content.images ;; reload') config.bind(",cPu", "config-cycle -p -u {url} content.plugins ;; reload")
config.bind(',ciu', 'config-cycle -p -t -u {url} content.images ;; reload') config.bind(
config.bind(',cl', 'forward -t') ",cSH", "config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload"
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(
config.bind(',cpu', 'config-cycle -p -t -u {url} content.plugins ;; reload') ",cSh", "config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; 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 -u {url} content.javascript.enabled ;; reload")
config.bind(',csu', 'config-cycle -p -t -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 # downloads
config.bind(',da', 'download-cancel') config.bind(",da", "download-cancel")
config.bind(',dd', 'download') config.bind(",dd", "download")
config.bind(',dc', 'download-clear') config.bind(",dc", "download-clear")
config.bind(',dy', 'spawn ytdl {url}') config.bind(",dy", "spawn ytdl {url}")
# dev tools # dev tools
config.bind(',Dd', 'devtools') config.bind(",Dd", "devtools")
config.bind(',Df', 'devtools-focus') config.bind(",Df", "devtools-focus")
config.bind(',Dc', 'devtools left') config.bind(",Dc", "devtools left")
config.bind(',Dt', 'devtools bottom') config.bind(",Dt", "devtools bottom")
config.bind(',Ds', 'devtools top') config.bind(",Ds", "devtools top")
config.bind(',Dr', 'devtools right') config.bind(",Dr", "devtools right")
config.bind(',Dw', 'devtools window') config.bind(",Dw", "devtools window")
# save # save
config.bind('fs', 'save') config.bind("fs", "save")
# hints # hints
config.bind(',hd', 'hint links download') config.bind(",hd", "hint links download")
config.bind(',hh', 'hint') config.bind(",hh", "hint")
config.bind(',hH', 'hint all hover') config.bind(",hH", "hint all hover")
config.bind(',hii', 'hint images') config.bind(",hii", "hint images")
config.bind(',hiI', 'hint images tab') config.bind(",hiI", "hint images tab")
config.bind(',hIi', 'hint inputs') config.bind(",hIi", "hint inputs")
config.bind(',hIf', 'hint inputs --first') config.bind(",hIf", "hint inputs --first")
config.bind(',hO', 'hint links fill :open -t -r {hint-url}') config.bind(",hO", "hint links fill :open -t -r {hint-url}")
config.bind(',ho', 'hint links fill :open {hint-url}') config.bind(",ho", "hint links fill :open {hint-url}")
config.bind(',hR', 'hint --rapid links window') config.bind(",hR", "hint --rapid links window")
config.bind(',hr', 'hint --rapid links tab-bg') config.bind(",hr", "hint --rapid links tab-bg")
config.bind(',htb', 'hint all tab-bg') config.bind(",htb", "hint all tab-bg")
config.bind(',htf', 'hint all tab-fg') config.bind(",htf", "hint all tab-fg")
config.bind(',htt', 'hint all tab') config.bind(",htt", "hint all tab")
config.bind(',hw', 'hint all window') config.bind(",hw", "hint all window")
config.bind(',hy', 'hint links yank') config.bind(",hy", "hint links yank")
config.bind(',hY', 'hint links yank-primary') config.bind(",hY", "hint links yank-primary")
# Bindings for hint mode # Bindings for hint mode
config.bind('<Ctrl-B>', 'hint all tab-bg', mode='hint') config.bind("<Ctrl-B>", "hint all tab-bg", mode="hint")
config.bind('<Ctrl-F>', 'hint links', mode='hint') config.bind("<Ctrl-F>", "hint links", mode="hint")
config.bind('<Ctrl-R>', 'hint --rapid links tab-bg', mode='hint') config.bind("<Ctrl-R>", "hint --rapid links tab-bg", mode="hint")
config.bind('<Escape>', 'mode-leave', mode='hint') config.bind("<Escape>", "mode-leave", mode="hint")
config.bind('<Return>', 'hint-follow', mode='hint') config.bind("<Return>", "hint-follow", mode="hint")
# Move # Move
config.bind('<Ctrl-PgDown>', 'tab-next') config.bind("<Ctrl-PgDown>", "tab-next")
config.bind('<Ctrl-C>', 'back -w') config.bind("<Ctrl-C>", "back -w")
config.bind('<Ctrl-R>', 'forward -w') config.bind("<Ctrl-R>", "forward -w")
config.bind('<Ctrl-h>', 'home') config.bind("<Ctrl-h>", "home")
config.bind('T', 'tab-next') config.bind("T", "tab-next")
config.bind('S', 'tab-prev') config.bind("S", "tab-prev")
config.bind('C', 'back') config.bind("C", "back")
config.bind('R', 'forward') config.bind("R", "forward")
# cmd # cmd
config.bind(',sb', 'set-cmd-text -s :bind') config.bind(",sb", "cmd-set-text -s :bind")
config.bind(',st', 'set-cmd-text -s :set -t') config.bind(",st", "cmd-set-text -s :set -t")
config.bind(',ss', 'set') config.bind(",ss", "set")
config.bind(',sS', 'set-cmd-text -s :set') config.bind(",sS", "cmd-set-text -s :set")
# open # open
config.bind('<Ctrl-N>', 'open -w') config.bind("<Ctrl-N>", "open -w")
config.bind('<Ctrl-Shift-N>', 'open -p') config.bind("<Ctrl-Shift-N>", "open -p")
config.bind('<Ctrl-T>', 'open -t') config.bind("<Ctrl-T>", "open -t")
config.bind(',ob', 'set-cmd-text -s :open -b') config.bind(",ob", "cmd-set-text -s :open -b")
config.bind(',oB', 'set-cmd-text :open -b -r {url:pretty}') config.bind(",oB", "cmd-set-text :open -b -r {url:pretty}")
config.bind(',oP', 'set-cmd-text :open -t -r {url:pretty}') config.bind(",oP", "cmd-set-text :open -t -r {url:pretty}")
config.bind(',ott', 'open -t') config.bind(",ott", "open -t")
config.bind(',otT', 'set-cmd-text -s :open -t') config.bind(",otT", "cmd-set-text -s :open -t")
config.bind(',ow', 'set-cmd-text -s :open -w') config.bind(",ow", "cmd-set-text -s :open -w")
config.bind(',oW', 'set-cmd-text :open -w {url:pretty}') config.bind(",oW", "cmd-set-text :open -w {url:pretty}")
config.bind(',occ', 'open -- {clipboard}') config.bind(",occ", "open -- {clipboard}")
config.bind(',ocC', 'open -t -- {clipboard}') config.bind(",ocC", "open -t -- {clipboard}")
config.bind(',ocp', 'open -- {primary}') config.bind(",ocp", "open -- {primary}")
config.bind(',ocP', 'open -t -- {primary}') config.bind(",ocP", "open -t -- {primary}")
config.bind(',ocw', 'open -w -- {clipboard}') config.bind(",ocw", "open -w -- {clipboard}")
config.bind(',ocW', 'open -w -- {primary}') config.bind(",ocW", "open -w -- {primary}")
config.bind('o', 'set-cmd-text -s :open') config.bind("o", "cmd-set-text -s :open")
config.bind('O', 'set-cmd-text :open {url:pretty}') config.bind("O", "cmd-set-text :open {url:pretty}")
# tabs # tabs
config.bind('<Alt-1>', 'tab-focus 1') config.bind("<Alt-1>", "tab-focus 1")
config.bind('<Alt-2>', 'tab-focus 2') config.bind("<Alt-2>", "tab-focus 2")
config.bind('<Alt-3>', 'tab-focus 3') config.bind("<Alt-3>", "tab-focus 3")
config.bind('<Alt-4>', 'tab-focus 4') config.bind("<Alt-4>", "tab-focus 4")
config.bind('<Alt-5>', 'tab-focus 5') config.bind("<Alt-5>", "tab-focus 5")
config.bind('<Alt-6>', 'tab-focus 6') config.bind("<Alt-6>", "tab-focus 6")
config.bind('<Alt-7>', 'tab-focus 7') config.bind("<Alt-7>", "tab-focus 7")
config.bind('<Alt-8>', 'tab-focus 8') config.bind("<Alt-8>", "tab-focus 8")
config.bind('<Alt-9>', 'tab-focus -1') config.bind("<Alt-9>", "tab-focus -1")
config.bind('<Alt-m>', 'tab-mute') config.bind("<Alt-m>", "tab-mute")
config.bind('<Ctrl-Tab>', 'tab-focus last') config.bind("<Ctrl-Tab>", "tab-focus last")
config.bind('<Ctrl-W>', 'tab-close') config.bind("<Ctrl-W>", "tab-close")
config.bind(',tT', 'tab-move +') config.bind(",tT", "tab-move +")
config.bind(',tS', 'tab-move -') config.bind(",tS", "tab-move -")
config.bind(',tn', 'tab-next') config.bind(",tn", "tab-next")
config.bind(',tp', 'tab-prev') config.bind(",tp", "tab-prev")
config.bind(',t«', 'tab-focus -1') config.bind(",t«", "tab-focus -1")
config.bind(',t»', 'tab-focus 1') config.bind(",t»", "tab-focus 1")
config.bind(',tC', 'tab-clone') config.bind(",tC", "tab-clone")
config.bind(',tD', 'tab-only') config.bind(",tD", "tab-only")
config.bind(',td', 'tab-close') config.bind(",td", "tab-close")
config.bind(',tf', 'set-cmd-text -sr :tab-focus') config.bind(",tf", "cmd-set-text -sr :tab-focus")
config.bind(',tg', 'tab-give') config.bind(",tg", "tab-give")
config.bind(',tl', 'tab-focus last') config.bind(",tl", "tab-focus last")
config.bind(',tm', 'tab-move') config.bind(",tm", "tab-move")
config.bind(',tP', 'tab-pin') config.bind(",tP", "tab-pin")
config.bind(',ts', 'set-cmd-text -s :tab-select') config.bind(",ts", "cmd-set-text -s :tab-select")
# scoll # scoll
config.bind('G', 'scroll-to-perc') config.bind("G", "scroll-to-perc")
config.bind('gg', 'scroll-to-perc 0') config.bind("gg", "scroll-to-perc 0")
config.bind('c', 'scroll left') config.bind("c", "scroll left")
config.bind('t', 'scroll down') config.bind("t", "scroll down")
config.bind('s', 'scroll up') config.bind("s", "scroll up")
config.bind('r', 'scroll right') config.bind("r", "scroll right")
config.bind('<Ctrl-F>', 'scroll-page 0 1') config.bind("<Ctrl-F>", "scroll-page 0 1")
config.bind('<Ctrl-B>', 'scroll-page 0 -1') config.bind("<Ctrl-B>", "scroll-page 0 -1")
config.bind('<Ctrl-D>', 'scroll-page 0 0.5') config.bind("<Ctrl-D>", "scroll-page 0 0.5")
config.bind('<Ctrl-U>', 'scroll-page 0 -0.5') config.bind("<Ctrl-U>", "scroll-page 0 -0.5")
# navigate # navigate
config.bind(',nd', 'navigate decrement') config.bind(",nd", "navigate decrement")
config.bind(',ni', 'navigate increment') config.bind(",ni", "navigate increment")
config.bind(',nn', 'navigate prev') config.bind(",nn", "navigate prev")
config.bind(',nN', 'navigate next -t') config.bind(",nN", "navigate next -t")
config.bind(',np', 'navigate next') config.bind(",np", "navigate next")
config.bind(',nP', 'navigate prev -t') config.bind(",nP", "navigate prev -t")
config.bind(',nu', 'navigate up') config.bind(",nu", "navigate up")
config.bind(',nU', 'navigate up -t') config.bind(",nU", "navigate up -t")
# search # search
config.bind('n', 'search-next') config.bind("n", "search-next")
config.bind('N', 'search-prev') config.bind("N", "search-prev")
# print # print
config.bind('<Ctrl-Alt-p>', 'print') config.bind("<Ctrl-Alt-p>", "print")
config.bind(',qq', 'quit') config.bind(",qq", "quit")
config.bind(',qs', 'quit --save') config.bind(",qs", "quit --save")
config.bind(',qw', 'close') config.bind(",qw", "close")
config.bind('<Ctrl-Q>', 'quit') config.bind("<Ctrl-Q>", "quit")
# reload # reload
config.bind(',rr', 'reload') config.bind(",rr", "reload")
config.bind(',rR', 'reload -f') config.bind(",rR", "reload -f")
config.bind('<F5>', 'reload') config.bind("<F5>", "reload")
config.bind('<Ctrl-F5>', 'reload -f') config.bind("<Ctrl-F5>", "reload -f")
# view # view
config.bind(',vh', 'history') config.bind(",vh", "history")
config.bind(',vs', 'view-source') config.bind(",vs", "view-source")
config.bind(",vm", "spawn mpv {url}") config.bind(",vm", "spawn mpv {url}")
# yank # yank
config.bind('yd', 'yank domain') config.bind("yd", "yank domain")
config.bind('yD', 'yank domain -s') config.bind("yD", "yank domain -s")
config.bind('yi', 'yank inline [{title}]({url})') config.bind("yi", "yank inline [{title}]({url})")
config.bind('yI', 'yank inline [{title}]({url}) -s') config.bind("yI", "yank inline [{title}]({url}) -s")
config.bind('yp', 'yank pretty-url') config.bind("yp", "yank pretty-url")
config.bind('yP', 'yank pretty-url -s') config.bind("yP", "yank pretty-url -s")
config.bind('yt', 'yank title') config.bind("yt", "yank title")
config.bind('yT', 'yank title -s') config.bind("yT", "yank title -s")
config.bind('yy', 'yank') config.bind("yy", "yank")
config.bind('yY', 'yank -s') 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-in")
config.bind('-', 'zoom-out') config.bind("-", "zoom-out")
config.bind('=', 'zoom') config.bind("=", "zoom")
config.bind('?', 'set-cmd-text ?') config.bind("?", "cmd-set-text ?")
config.bind('/', 'set-cmd-text /') config.bind("/", "cmd-set-text /")
config.bind(':', 'set-cmd-text :') config.bind(":", "cmd-set-text :")
config.bind('.', 'repeat-command') config.bind(".", "repeat-command")
config.bind('<Ctrl-Shift-Tab>', 'nop') config.bind("<Ctrl-Shift-Tab>", "nop")
config.bind('<Ctrl-s>', 'stop') config.bind("<Ctrl-s>", "stop")
config.bind('<F11>', 'fullscreen') config.bind("<F11>", "fullscreen")
config.bind('<Return>', 'selection-follow') config.bind("<Return>", "selection-follow")
config.bind('<Ctrl-Return>', 'selection-follow -t') config.bind("<Ctrl-Return>", "selection-follow -t")
config.bind('<back>', 'back') config.bind("<back>", "back")
config.bind('<forward>', 'forward') config.bind("<forward>", "forward")
config.bind('<Ctrl-V>', 'mode-enter passthrough') config.bind("<Ctrl-V>", "mode-enter passthrough")
config.bind("'", 'mode-enter jump_mark') config.bind("'", "mode-enter jump_mark")
config.bind('v', 'mode-enter caret') config.bind("v", "mode-enter caret")
config.bind('V', 'mode-enter caret ;; selection-toggle --line') config.bind("V", "mode-enter caret ;; selection-toggle --line")
config.bind('`', 'mode-enter set_mark') config.bind("`", "mode-enter set_mark")
config.bind('i', 'mode-enter insert') config.bind("i", "mode-enter insert")
config.bind('q', 'macro-record') config.bind("q", "macro-record")
config.bind('@', 'macro-run') config.bind("@", "macro-run")
config.bind('U', 'undo -w') config.bind("U", "undo -w")
config.bind('<Ctrl-Shift-T>', 'undo') config.bind("<Ctrl-Shift-T>", "undo")
config.bind('u', 'undo') config.bind("u", "undo")
# Bindings for caret mode # Bindings for caret mode
config.bind('C', 'scroll left', mode='caret') config.bind("C", "scroll left", mode="caret")
config.bind('T', 'scroll down', mode='caret') config.bind("T", "scroll down", mode="caret")
config.bind('S', 'scroll up', mode='caret') config.bind("S", "scroll up", mode="caret")
config.bind('R', 'scroll right', mode='caret') config.bind("R", "scroll right", mode="caret")
config.bind('c', 'move-to-prev-char', mode='caret') config.bind("c", "move-to-prev-char", mode="caret")
config.bind('t', 'move-to-next-line', mode='caret') config.bind("t", "move-to-next-line", mode="caret")
config.bind('s', 'move-to-prev-line', mode='caret') config.bind("s", "move-to-prev-line", mode="caret")
config.bind('r', 'move-to-next-char', mode='caret') config.bind("r", "move-to-next-char", mode="caret")
config.bind('$', 'move-to-end-of-line', mode='caret') config.bind("$", "move-to-end-of-line", mode="caret")
config.bind('0', 'move-to-start-of-line', mode='caret') config.bind("0", "move-to-start-of-line", mode="caret")
config.bind('<Ctrl-Space>', 'selection-drop', mode='caret') config.bind("<Ctrl-Space>", "selection-drop", mode="caret")
config.bind('<Escape>', 'mode-leave', mode='caret') config.bind("<Escape>", "mode-leave", mode="caret")
config.bind('<Return>', 'yank selection', mode='caret') config.bind("<Return>", "yank selection", mode="caret")
config.bind('<Space>', 'selection-toggle', mode='caret') config.bind("<Space>", "selection-toggle", mode="caret")
config.bind('v', 'selection-toggle', mode='caret') config.bind("v", "selection-toggle", mode="caret")
config.bind('V', 'selection-toggle --line', mode='caret') config.bind("V", "selection-toggle --line", mode="caret")
config.bind('y', 'yank selection', mode='caret') config.bind("y", "yank selection", mode="caret")
config.bind('Y', 'yank selection -s', 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-prev-block", mode="caret")
config.bind(']', 'move-to-start-of-next-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-prev-block", mode="caret")
config.bind('}', 'move-to-end-of-next-block', mode='caret') config.bind("}", "move-to-end-of-next-block", mode="caret")
config.bind('b', 'move-to-prev-word', mode='caret') config.bind("b", "move-to-prev-word", mode="caret")
config.bind('e', 'move-to-end-of-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("gg", "move-to-start-of-document", mode="caret")
config.bind('G', 'move-to-end-of-document', mode='caret') config.bind("G", "move-to-end-of-document", mode="caret")
config.bind('n', 'mode-enter normal', mode='caret') config.bind("n", "mode-enter normal", mode="caret")
config.bind('o', 'selection-reverse', mode='caret') config.bind("o", "selection-reverse", mode="caret")
config.bind('w', 'move-to-next-word', mode='caret') config.bind("w", "move-to-next-word", mode="caret")
# Bindings for command mode # Bindings for command mode
config.bind('<Alt-B>', 'rl-backward-word', mode='command') config.bind("<Alt-B>", "rl-backward-word", mode="command")
config.bind('<Alt-Backspace>', 'rl-backward-kill-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-D>", "rl-kill-word", mode="command")
config.bind('<Alt-F>', 'rl-forward-word', mode='command') config.bind("<Alt-F>", "rl-forward-word", mode="command")
config.bind('<Ctrl-?>', 'rl-delete-char', mode='command') config.bind("<Ctrl-?>", "rl-delete-char", mode="command")
config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='command') config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="command")
config.bind('<Ctrl-B>', 'rl-backward-char', mode='command') config.bind("<Ctrl-B>", "rl-backward-char", mode="command")
config.bind('<Ctrl-C>', 'completion-item-yank', mode='command') config.bind("<Ctrl-C>", "completion-item-yank", mode="command")
config.bind('<Ctrl-D>', 'completion-item-del', mode='command') config.bind("<Ctrl-D>", "completion-item-del", mode="command")
config.bind('<Ctrl-E>', 'rl-end-of-line', mode='command') config.bind("<Ctrl-E>", "rl-end-of-line", mode="command")
config.bind('<Ctrl-F>', 'rl-forward-char', mode='command') config.bind("<Ctrl-F>", "rl-forward-char", mode="command")
config.bind('<Ctrl-H>', 'rl-backward-delete-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-K>", "rl-kill-line", mode="command")
config.bind('<Ctrl-N>', 'command-history-next', mode='command') config.bind("<Ctrl-N>", "command-history-next", mode="command")
config.bind('<Ctrl-P>', 'command-history-prev', mode='command') config.bind("<Ctrl-P>", "command-history-prev", mode="command")
config.bind('<Ctrl-Return>', 'command-accept --rapid', 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-C>", "completion-item-yank --sel", mode="command")
config.bind('<Ctrl-Shift-Tab>', 'completion-item-focus prev-category', 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-Tab>", "completion-item-focus next-category", mode="command")
config.bind('<Ctrl-U>', 'rl-unix-line-discard', 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-W>", "rl-unix-word-rubout", mode="command")
config.bind('<Ctrl-Y>', 'rl-yank', mode='command') config.bind("<Ctrl-Y>", "rl-yank", mode="command")
config.bind('<Down>', 'completion-item-focus --history next', mode='command') config.bind("<Down>", "completion-item-focus --history next", mode="command")
config.bind('<Escape>', 'mode-leave', mode='command') config.bind("<Escape>", "mode-leave", mode="command")
config.bind('<PgDown>', 'completion-item-focus next-page', mode='command') config.bind("<PgDown>", "completion-item-focus next-page", mode="command")
config.bind('<PgUp>', 'completion-item-focus prev-page', mode='command') config.bind("<PgUp>", "completion-item-focus prev-page", mode="command")
config.bind('<Return>', 'command-accept', mode='command') config.bind("<Return>", "command-accept", mode="command")
config.bind('<Shift-Delete>', 'completion-item-del', mode='command') config.bind("<Shift-Delete>", "completion-item-del", mode="command")
config.bind('<Shift-Tab>', 'completion-item-focus prev', mode='command') config.bind("<Shift-Tab>", "completion-item-focus prev", mode="command")
config.bind('<Tab>', 'completion-item-focus next', mode='command') config.bind("<Tab>", "completion-item-focus next", mode="command")
config.bind('<Up>', 'completion-item-focus --history prev', mode='command') config.bind("<Up>", "completion-item-focus --history prev", mode="command")
# Bindings for insert mode # Bindings for insert mode
config.bind('<Ctrl-E>', 'edit-text', mode='insert') config.bind("<Ctrl-E>", "edit-text", mode="insert")
config.bind('<Escape>', 'mode-leave', mode='insert') config.bind("<Escape>", "mode-leave", mode="insert")
config.bind('<Shift-Escape>', 'fake-key <Escape>', mode='insert') config.bind("<Shift-Escape>", "fake-key <Escape>", mode="insert")
config.bind('<Shift-Ins>', 'insert-text -- {primary}', mode='insert') config.bind("<Shift-Ins>", "insert-text -- {primary}", mode="insert")
# Bindings for passthrough mode # Bindings for passthrough mode
config.bind('<Shift-Escape>', 'mode-leave', mode='passthrough') config.bind("<Shift-Escape>", "mode-leave", mode="passthrough")
# Bindings for prompt mode # Bindings for prompt mode
config.bind('<Alt-B>', 'rl-backward-word', mode='prompt') config.bind("<Alt-B>", "rl-backward-word", mode="prompt")
config.bind('<Alt-Backspace>', 'rl-backward-kill-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-D>", "rl-kill-word", mode="prompt")
config.bind('<Alt-F>', 'rl-forward-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-Shift-Y>", "prompt-yank --sel", mode="prompt")
config.bind('<Alt-Y>', 'prompt-yank', mode='prompt') config.bind("<Alt-Y>", "prompt-yank", mode="prompt")
config.bind('<Ctrl-?>', 'rl-delete-char', mode='prompt') config.bind("<Ctrl-?>", "rl-delete-char", mode="prompt")
config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='prompt') config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="prompt")
config.bind('<Ctrl-B>', 'rl-backward-char', mode='prompt') config.bind("<Ctrl-B>", "rl-backward-char", mode="prompt")
config.bind('<Ctrl-E>', 'rl-end-of-line', mode='prompt') config.bind("<Ctrl-E>", "rl-end-of-line", mode="prompt")
config.bind('<Ctrl-F>', 'rl-forward-char', mode='prompt') config.bind("<Ctrl-F>", "rl-forward-char", mode="prompt")
config.bind('<Ctrl-H>', 'rl-backward-delete-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-K>", "rl-kill-line", mode="prompt")
config.bind('<Ctrl-P>', 'prompt-open-download --pdfjs', 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-U>", "rl-unix-line-discard", mode="prompt")
config.bind('<Ctrl-W>', 'rl-unix-word-rubout', mode='prompt') config.bind("<Ctrl-W>", "rl-unix-word-rubout", mode="prompt")
config.bind('<Ctrl-X>', 'prompt-open-download', mode='prompt') config.bind("<Ctrl-X>", "prompt-open-download", mode="prompt")
config.bind('<Ctrl-Y>', 'rl-yank', mode='prompt') config.bind("<Ctrl-Y>", "rl-yank", mode="prompt")
config.bind('<Down>', 'prompt-item-focus next', mode='prompt') config.bind("<Down>", "prompt-item-focus next", mode="prompt")
config.bind('<Escape>', 'mode-leave', mode='prompt') config.bind("<Escape>", "mode-leave", mode="prompt")
config.bind('<Return>', 'prompt-accept', mode='prompt') config.bind("<Return>", "prompt-accept", mode="prompt")
config.bind('<Shift-Tab>', 'prompt-item-focus prev', mode='prompt') config.bind("<Shift-Tab>", "prompt-item-focus prev", mode="prompt")
config.bind('<Tab>', 'prompt-item-focus next', mode='prompt') config.bind("<Tab>", "prompt-item-focus next", mode="prompt")
config.bind('<Up>', 'prompt-item-focus prev', mode='prompt') config.bind("<Up>", "prompt-item-focus prev", mode="prompt")
# Bindings for register mode # Bindings for register mode
config.bind('<Escape>', 'mode-leave', mode='register') config.bind("<Escape>", "mode-leave", mode="register")
# Bindings for yesno mode # Bindings for yesno mode
config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='yesno') config.bind("<Alt-Shift-Y>", "prompt-yank --sel", mode="yesno")
config.bind('<Alt-Y>', 'prompt-yank', mode='yesno') config.bind("<Alt-Y>", "prompt-yank", mode="yesno")
config.bind('<Escape>', 'mode-leave', mode='yesno') config.bind("<Escape>", "mode-leave", mode="yesno")
config.bind('<Return>', 'prompt-accept', mode='yesno') config.bind("<Return>", "prompt-accept", mode="yesno")
config.bind('N', 'prompt-accept --save no', mode='yesno') config.bind("N", "prompt-accept --save no", mode="yesno")
config.bind('Y', 'prompt-accept --save yes', mode='yesno') config.bind("Y", "prompt-accept --save yes", mode="yesno")
config.bind('n', 'prompt-accept no', mode='yesno') config.bind("n", "prompt-accept no", mode="yesno")
config.bind('y', 'prompt-accept yes', mode='yesno') config.bind("y", "prompt-accept yes", mode="yesno")