# qutebrowser

qutebrowser is a lightweight keyboard-driven, vim-like browser based on PyQt5 and QtWebKit.

Warning: qt5-webkit is considered insecure and outdated. More info is found here. Either use the QtWebEngine backend or install qt5-webkit-ng.

## 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={}

### 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 experimental webengine backend

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

     $ qutebrowser --backend webengine

Note: The qutebrowser implementation of webengine is experimental and 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 this issue for more information.

Note: This will not have any effect with the QtWebKit backend. See #Use experimental webengine backend to use the webengine backend.

### dwb-like session handling

To have qutebrowser handle sessions more like in dwb with the `--restore` option ("per-window" sessions, multiple simultaneously active sessions), you can use this wrapper script.

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

## See also

- Github repository
- Homepage
- BBS thread

Category:

- Web browser