qutebrowser
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
Qutebrowser can be configured via the UI, the qutebrowser command-line or a Python script. Qutebrowser's own documentation explains in detail how to configure qutebrowser with these different methods. To open qutebrowser's help system, type :help
. On the help page, choose Configuring qutebrowser
.
To find out the paths where the configuration files will be located, open the special page qute://version
. On Arch Linux, this will typically be $XDG_CONFIG_HOME/qutebrowser/
. The configuration made in qutebrowser will be stored in autoconfig.yml
(which should not be touched by the user) while the user's Python script is config.py
.
Configuration in Qutebrowser
To set a single configuration item, you can simply type :set
followed by the name of the configuration item and the new value that you would like to set. For example, you could type
:set auto_save.session true
to open your previous tabs when you reopen qutebrowser.
To open qutebrowser's UI settings page, type
:set
without further arguments. There, you can edit the different settings in the UI. When you are finished, type :set
again to store your configuration.
For example, under url.searchengines
you can configure your search engines which are stored as a list of key-value pairs. When you have not changed this setting yet, this should look something like
{"DEFAULT": "https://duckduckgo.com/?q={}"}
This configures DuckDuckGo as your default search engine while the placeholder {}
will be replaced by your search term. To add a shortcut for quickly searching the Arch Linux wiki, you could use
{"DEFAULT": "https://duckduckgo.com/?q={}", "wa": "https://wiki.archlinux.org/?search={}"}
Then, as described by the comment in the qutebrowser UI, you can search the Arch Linux wiki by typing o wa <searchterm>
. Notice that the arguments required to perform a search vary across search engines. For example, to set up Google, use https://www.google.com/search?hl=en&q={}
.
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
Automatically enter login information
You can use the qute-pass userscript to automatically enter login information stored in your Pass password-store. You will need a dmenu-compatible application launcher and python-tldextract. Set up a keybinding which executes :spawn --userscript qute-pass
.
To quote from the script's description:
The domain of the site has to appear as a segment in the pass path, for example: "github.com/cryzed" or "websites/github.com". How the username and password are determined is freely configurable using the CLI arguments. The login information is inserted by emulating key events using qutebrowser's fake-key command in this manner: [USERNAME]<Tab>[PASSWORD], which is compatible with almost all login forms.
The userscript provides many options to accomodate most workflows and special circumstances (such as only wanting to insert the password or the regular method of inserting the username and password not working).
Turn on spell checking
First, download the appropriate dictionary to /usr/share/qt5/qtwebengine_dicionaries/
from [1]. The file will have a suffix of .bdic
. For example, for English (US):
# wget https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git/+/master/en-US-8-0.bdic?format=TEXT -o /usr/share/qt5/qtwebengine_dictionaries/en-US-8-0.bdic
Then set the following in qutebrowser:
:set spellcheck.languages ["en-US"]
Minimize fingerprinting
Websites may be able to identify you based on combining information on screen size, user-agent, HTTP_ACCEPT headers, and more. See [2] 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 content.headers.user_agent
. Another, possibly more generic user-agent is:
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
- 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. Simply type the following commands at the prompt
set content.headers.accept_language en-US,en;q=0.5 set content.headers.custom '{"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.
Disable WebGL
Set content.webgl
to false
to disable WebGL.
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.