qutebrowser is a keyboard-driven web browser with vim-like keybindings. Minimal UI, maximum efficiency.

Installation

Arch Linux:

sudo pacman -S qutebrowser

Configuration

Config file: ~/.config/qutebrowser/config.py

# Basic settings
c.content.javascript.enabled = True
c.content.autoplay = False
c.tabs.position = "top"
c.tabs.show = "multiple"
 
# Search engines
c.url.searchengines = {
    'DEFAULT': 'https://duckduckgo.com/?q={}',
    'g': 'https://google.com/search?q={}',
    'w': 'https://en.wikipedia.org/wiki/{}',
    'aw': 'https://wiki.archlinux.org/?search={}',
    'gh': 'https://github.com/search?q={}',
    'r': 'http://localhost:9873/{}',  # urlref integration
}
 
# Dark mode
c.colors.webpage.darkmode.enabled = True
c.colors.webpage.preferred_color_scheme = "dark"
 
# Privacy
c.content.cookies.accept = "no-3rdparty"
c.content.headers.do_not_track = True

Key Bindings

KeyAction
j/kScroll down/up
h/lScroll left/right
gg/GTop/bottom of page
H/LBack/forward
rReload
KeyAction
fFollow link (current tab)
FFollow link (new tab)
;iHint images
;yYank link URL

Tabs

KeyAction
J/KPrev/next tab
dClose tab
uUndo close tab
oOpen URL
OOpen URL (new tab)
tOpen in new tab

Commands

KeyAction
:Command mode
/Search in page
yyYank URL
ppOpen from clipboard

Google Login Fix

Google sometimes blocks qutebrowser. Workaround:

See: https://github.com/qutebrowser/qutebrowser/issues/8492

# Set a Chrome user agent for Google sites
c.content.headers.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'

Or use per-domain settings:

config.set('content.headers.user_agent', 
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 
    '*://accounts.google.com/*')

Userscripts

Store in ~/.local/share/qutebrowser/userscripts/

See urlref for an example qutebrowser userscript integration.

Tips

  • :help opens the comprehensive help
  • Use :set to explore available options
  • :bind to see/modify key bindings
  • Greasemonkey scripts work via c.content.javascript.enabled