qutebrowser

From ArchWiki
Revision as of 08:25, 20 September 2017 by Jasonwryan (talk | contribs) (See also: Added example of new config)
Jump to: navigation, search

qutebrowser is a keyboard-focused web browser based on Python and PyQt5.

Installation

Install either the qutebrowser or the qutebrowser-gitAUR package.

Basic usage

Use : to access the command prompt. You can use Tab to auto-complete.

On first usage of qutebrowser, a Quickstart page appears. It is later accessible via :help. See the cheatsheet for keyboard shortcuts.

User configuration

You will find the configuration files of qutebrowser under $XDG_CONFIG_HOME/qutebrowser/. The main configuration happens in the file qutebrowser.conf, which is organized in sections like an ini-file. For example, under [searchengines] you can configure your search engines as described by the comment. To add a shortcut for searching the the arch wiki, add this line:

aw = https://wiki.archlinux.org/?search={}

Now, in qutebrowser you can search the arch wiki for an article about qutebrowser via :open aw qutebrowser which will bring you to this page. As per the standard configuration the key mapping o will subsitute :open, so typing o aw your_search_term will henceforth allow you to quickly search the arch wiki. Notice that the arguments required to perform a search vary across search engines, for example, to set up Google use:

g = https://www.google.com/search?hl=en&q={}

You can also make this setting from the browser with :set searchengines keyword your_search_term. For example:

:set searchengines aw https://wiki.archlinux.org/?search={}

Keybindings

Keybindings reside in $XDG_CONFIG_HOME/qutebrowser/keys.conf.

You can edit the keybindings directly from the browser with the command :bind key command or you can edit them directly from the file. Notice that there are many, many keybinds already in place. If you notice a lag on one of your keybind it is because some other keybind is also starting with the same key.

Video playback

See Browser plugins#Multimedia playback.

Tips and tricks

Use webengine backend

To use the more secure webengine backend, use the --backend flag:

 $ qutebrowser --backend webengine
Note: The qutebrowser implementation of webengine may be missing features. See this issue for updates.

Minimize fingerprinting

Websites may be able to identify you based on combining information on screen size, user-agent, HTTP_ACCEPT headers, and more. See [1] for more information and to test the uniqueness of your browser. Below are a few steps that can be taken to make your qutebrowser installation more "generic".

Additionally see Firefox/Privacy#Configuration tweaks for more ideas.

Set a common user-agent

Several user agents are available as options when using :set network user-agent. Another, possibly more generic user-agent is:

Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Note:
  • Changing Linux x86_64 to a non-Linux platform may make your browser more unique, since websites can also gather your platform type via Javascript, and this setting cannot be changed in qutebrowser.
  • Changing your user-agent away from the default will prevent some websites from working properly.

Set a common HTTP_ACCEPT header

The following is a common HTTP_ACCEPT header. Under network in qutebrowser's settings set:

accept-language = en-US,en;q=0.5
custom-headers = {"accept": "text/html, */*; q=0.01"}

Disable reading from canvas

This option is not currently available in qutebrowser other than by specifying it on the commandline like so:

$ qutebrowser --qt-flag disable-reading-from-canvas

See issue #2235 for more information.

Note:
  • Some websites depend on canvas reading for content rendering and other functionality. Adding this option may cause them to not work properly [2].
  • This will not have any effect with the QtWebKit backend. See #Use webengine backend to use the webengine backend.

dwb-like session handling

To have qutebrowser handle sessions more like in dwb with the --restore option (multiple simultaneously active sessions), you can use this wrapper script. It uses --basedir to separate data, cache and runtime for each session, while keeping the configuration shared.

Note: The wrapper script defaults to the webengine backend. You can pass --backend webkit to have it use the QtWebKit backend.

See also