# qutebrowser Key BindingsUpdated  2022-December-30

## News

2022-January-24  Published this evolving⁠[1] article.

## Built-in key bindings

To view qutebrowser’s built-in key bindings, view line 2122 and below in Infinite Ink’s qutebrowser’s Template config.py. The following is the beginning of that part of the default config.py.

2121## Bindings for normal mode
2122config.bind("'", 'mode-enter jump_mark')
2123config.bind('+', 'zoom-in')
2124config.bind('-', 'zoom-out')
2125⋮

The two emphasized lines above make it possible to use the + and -⁠ keys to zoom in and zoom out on a web page.

## User-defined key bindings

If you create a key binding, you may want to start it with a comma (,) because @The-⁠Compiler (Florian Bruhin), qutebrowser’s main developer, has said that default key bindings will never start with a comma.

 💡 If you start most of your user-defined key bindings with a comma (,), then typing , in normal mode will display a keyhint widget  that lists key bindings that start with ,. This is useful if you don’t remember your user-defined bindings.🤔

## Examples of user-defined key bindings

### Zoom in and zoom out

Because I’m used to using Ctrl+= and Ctrl+- to zoom in and zoom out on a web page, I put the following in my config.py.

config.bind('<Ctrl-=>', 'zoom-in')
config.bind('<Ctrl-->', 'zoom-out')

Because I often forget to run :adblock-⁠update, I put the following ,au binding in my config.py.

config.bind(',au', 'set-cmd-text :adblock-update')

Now, when I type , in normal mode this shows up near the top of the alphabetically-⁠sorted keyhint widget and reminds me to periodically run this.

### Redirect reddit.com URL to corresponding old.reddit.com URL

Because I prefer old.reddit.com to reddit.com, I created the following key binding.

config.bind (',r2o', 'open https://old.reddit.com/{url:path}')

If this is in your config.py and you are viewing a reddit.com page, for example reddit.com/r/qutebrowser, you can type ,r2o to redirect it to the corresponding old.reddit.com URL, for example old.reddit.com/r/qutebrowser.

 💡 The mnemonic I use to remember this is reddit 2 old.reddit.

### Launch userscripts

Infinite Ink’s qutebrowser Userscripts on Windows includes the following key bindings, each of which launches a userscript.

config.bind(',qenv', 'spawn -u -o "qb-env.cmd"')
config.bind(',t', 'spawn -u tumblelog-wrapper.cmd')

### Kill overlays and other floating elements

config.bind(',ko', 'jseval (function () { '+
'  var i, elements = document.querySelectorAll("body *");'+
''+
'  for (i = 0; i < elements.length; i++) {'+
'    var pos = getComputedStyle(elements[i]).position;'+
'    if (pos === "fixed" || pos == "sticky") {'+
'      elements[i].parentNode.removeChild(elements[i]);'+
'    }'+
'  }'+
'})();');

If you put this in your config.py, you can type ,ko in normal mode to kill overlays on qutebrowser’s current web page.

## Tips

### :bind command

To view all key bindings, run the following within qutebrowser.

:bind

This command lists both built-in and user-defined key bindings.

### :unbind command

To unbind a key binding, for example Ctrl+t, during the current qutebrowser session, run something like this:

:unbind <Ctrl-t>

To permanently unbind a key binding, put something like this in your config.py:

config.unbind('<ctrl-t>')

 💡 I unbind Ctrl+t because I’m training myself to use Shift+o to open a URL in a new tab (rather than using Ctrl+t followed by o, which is what I used to do).

• On Mastodon, I’m @nm@mathstodon.xyz and I’ll see your toot if you mention @nm@mathstodon.xyz or #InfiniteInk in it.