Skip to content

Instantly share code, notes, and snippets.

@jumper047
Created November 15, 2018 21:28
Show Gist options
  • Save jumper047/ee821f789cd336b1105309f3ebf44f70 to your computer and use it in GitHub Desktop.
Save jumper047/ee821f789cd336b1105309f3ebf44f70 to your computer and use it in GitHub Desktop.
Qutebrowser config with emacs key bindings
# qutemacs - a simple, preconfigured Emacs binding set for qutebrowser
#
# The aim of this binding set is not to provide bindings for absolutely
# everything, but to provide a stable launching point for people to make their
# own bindings.
#
# Installation:
#
# 1. Copy this file or add this repo as a submodule to your dotfiles.
# 2. Add this line to your config.py, and point the path to this file:
# config.source('qutemacs/qutemacs.py')
config = config # type: ConfigAPI # noqa: F821 pylint: disable=E0602,C0103
c = c # type: ConfigContainer # noqa: F821 pylint: disable=E0602,C0103
# c.input.insert_mode.auto_enter = False
# c.input.insert_mode.auto_leave = False
c.input.insert_mode.plugins = True
c.input.insert_mode.auto_load = True
# Forward unbound keys
c.input.forward_unbound_keys = "all"
ESC_BIND = 'clear-keychain ;; search ;; fullscreen --leave'
c.bindings.default['normal'] = {}
# Bindings
c.bindings.commands['normal'] = {
# Navigation
'<ctrl-v>': 'scroll-page 0 0.9',
'<alt-v>': 'scroll-page 0 -0.9',
'<Backspace>': 'scroll-page 0 -0.9',
# '<Space>': 'scroll-page 0 0.9',
'<alt-shift-.': 'scroll-to-perc',
'<alt-shift-.>': 'scroll-to-perc 0',
# Commands
'<alt-x>': 'set-cmd-text :',
'<ctrl-x><ctrl-c>': 'quit',
# searching
'<ctrl-s>': 'set-cmd-text /',
'<ctrl-r>': 'set-cmd-text ?',
# hinting
'<f>': 'hint all',
'<ctrl-u><f>': 'hint all hover',
'<shift-f>': 'hint all tab-bg',
'<ctrl-u><shift-e>': 'hint all tab-fg',
'<w><l>': 'hint all yank-primary',
'<w><w>': 'yank url',
'<d>': 'yank all download',
# history
'<shift-f>': 'forward',
'<shift-b>': 'back',
'<ctrl-c><ctrl-f>': 'forward',
'<ctrl-c><ctrl-b>': 'back',
'shift-h>': 'history',
# bookmarks
'm': 'bookmark-add',
'M': 'open qute://bookmarks',
# tabs
'<ctrl-tab>': 'tab-next',
'<ctrl-shift-tab>': 'tab-prev',
'<alt-n>': 'tab-next',
'<shift-alt-n>': 'tab-move +',
'<alt-p>': 'tab-prev',
'<shift-alt-p>': 'tab-move -',
'<ctrl-x><b>': 'set-cmd-text -s :buffer',
'<ctrl-x><k>': 'tab-close',
'<ctrl-c><p>': 'tab-pin',
'<ctrl-c><m>': 'tab-mute',
'<ctrl-x><0>': 'tab-close',
'<ctrl-x><1>': 'tab-only',
'<Alt-1>': 'tab-focus 1',
'<Alt-2>': 'tab-focus 2',
'<Alt-3>': 'tab-focus 3',
'<Alt-4>': 'tab-focus 4',
'<Alt-5>': 'tab-focus 5',
'<Alt-6>': 'tab-focus 6',
'<Alt-7>': 'tab-focus 7',
'<Alt-8>': 'tab-focus 8',
'<Alt-9>': 'tab-focus -1',
# frames
'<ctrl-x><5><0>': 'close',
'<ctrl-x><5><1>': 'window-only',
'<ctrl-x><5><2>': 'set-cmd-text -s :open -w',
'<ctrl-u><ctrl-x><5><2>': 'set-cmd-text -s :open -p',
# open links
'<g>': 'set-cmd-text -s :open',
'<shift-g>': 'set-cmd-text -s :open -t',
# editing
'<ctrl-f>': 'fake-key <Right>',
'<ctrl-b>': 'fake-key <Left>',
'<ctrl-a>': 'fake-key <Home>',
'<ctrl-e>': 'fake-key <End>',
'<ctrl-n>': 'fake-key <Down>',
'<ctrl-p>': 'fake-key <Up>',
'<alt-f>': 'fake-key <Ctrl-Right>',
'<alt-b>': 'fake-key <Ctrl-Left>',
'<ctrl-d>': 'fake-key <Delete>',
'<alt-d>': 'fake-key <Ctrl-Delete>',
'<alt-backspace>': 'fake-key <Ctrl-Backspace>',
'<ctrl-w>': 'fake-key <Ctrl-backspace>',
'<ctrl-y>': 'insert-text {primary}',
# Numbers
# https://github.com/qutebrowser/qutebrowser/issues/4213
'1': 'fake-key 1',
'2': 'fake-key 2',
'3': 'fake-key 3',
'4': 'fake-key 4',
'5': 'fake-key 5',
'6': 'fake-key 6',
'7': 'fake-key 7',
'8': 'fake-key 8',
'9': 'fake-key 9',
'0': 'fake-key 0',
# misc
'<ctrl-c><v>': 'spawn --userscript ~/.bin/open_in_mpv.sh',
# Help
'<ctrl-h><b>': 'open qute://bindings',
'<ctrl-h><h>': 'set-cmd-text -s :help',
# escape hatch
'<ctrl-g>': ESC_BIND,
}
c.bindings.commands['command'] = {
'<ctrl-s>': 'search-next',
'<ctrl-r>': 'search-prev',
'<ctrl-p>': 'completion-item-focus prev',
'<ctrl-n>': 'completion-item-focus next',
'<alt-p>': 'command-history-prev',
'<alt-n>': 'command-history-next',
# escape hatch
'<ctrl-g>': 'leave-mode',
}
c.bindings.commands['hint'] = {
# escape hatch
'<ctrl-g>': 'leave-mode',
}
c.bindings.commands['caret'] = {
# escape hatch
'<ctrl-g>': 'leave-mode',
}
c.bindings.commands['insert'] = {
# editing
'<ctrl-f>': 'fake-key <Right>',
'<ctrl-b>': 'fake-key <Left>',
'<ctrl-a>': 'fake-key <Home>',
'<ctrl-e>': 'fake-key <End>',
'<ctrl-n>': 'fake-key <Down>',
'<ctrl-p>': 'fake-key <Up>',
'<alt-f>': 'fake-key <Ctrl-Right>',
'<alt-b>': 'fake-key <Ctrl-Left>',
'<ctrl-d>': 'fake-key <Delete>',
'<alt-d>': 'fake-key <Ctrl-Delete>',
'<alt-backspace>': 'fake-key <Ctrl-Backspace>',
'<ctrl-w>': 'fake-key <Ctrl-backspace>',
'<ctrl-y>': 'insert-text {primary}',
'<ctrl-g>': 'leave-mode'
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment