badwolf - minimalist and privacy-oriented web browser based on WebKitGTK

BADWOLF(1) General Commands Manual BADWOLF(1)


badwolf — minimalist and privacy-oriented web browser based on WebKitGTK


badwolf [webkit/gtk options] [URLs or paths]


badwolf is a minimalist browser that cares about privacy, it is based on WebKitGTK and thus also accepts WebKitGTK (and dependencies) flags and environment variables, unfortunately there doesn’t seems to be manpages for theses.

Runtime configuration specific to badwolf will probably get added at a later release.


The following section lists the keybinding by their action, each item is described by the widget the focus is on or ⟨any⟩ if it works for the whole window, followed by the keybind it grabs.

webview Ctrl-Scroll

Zooms the webpage in/out.

webview Ctrl-0

Resets webpage zoom to 100%.

webview Ctrl-MousePrimary, webview MouseMiddle

Opens the selected link in a new tab. (Note: JS still overrides the event)

any Ctrl-t

Creates a new tab (in a new session, similar as pressing the button)

browser Ctrl-F4, browser Alt-d

Closes the current tab

browser Ctrl-f

Focuses on the search entry

browser Ctrl-l

Focuses on the location(URL) entry

browser Ctrl-Shift-r / Ctrl-r, browser F5

Reloads the content in the current tab (with/without clearing cache)

browser Escape

Stops loading the content in the current tab

browser F7

Toggles caret browsing.

browser F12

Opens the web inspector.

browser Ctrl-[ / Ctrl-]

Go back/forward in current tab’s history

browser Ctrl-p

Print the current page. (spawns a dialog)

any Alt-Left / Alt-Right

Go to the previous/next tab

any F1

Shows the about dialog

any Alt-n

Where n is any numeric-row key. Go to the n-th tab, 0 goes to the last one.


Here is a incomplete list of the default Webkit/GTK keybindings:

any Ctrl-PageUp / Ctrl-PageDown

Go to the previous/next tab

search Ctrl-g / Ctrl-Shift-g

When the search box is focused it goes to the Next/Previous search term.

search Escape

Cancels current search

textarea Ctrl-;

Insert Emoji


A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and COUNTRY in ISO-3166. For example BADWOLF_L10N="en_GB:fr_FR:de_DE". When this variable isn’t set, spelling isn’t activated. A more generic variable name is also intended to be used in the future.

To get the list of supported dictionaries execute enchant-lsmod-2 -list-dicts or before enchant 2.0: enchant-lsmod -list-dicts


The following paths are using sh(1) syntax to correctly support XDG Base Directory Specification, you can use the echo(1) command to check where it is on your system.


WebKit-specific content-filter file, this allows to block unwanted content (ads, nagware, ...). For some introductory information about the format see:

For a converter using AblockPlus-style filters, try:

For a ready-to-use file (that you should update periodically), try:


This is where the compiled filters are stored, the file(s) in it are automatically generated and so shouldn’t be edited. Documented here only for sandboxing / access-control purposes.


XBEL (XML Bookmark Exchange Language) file, known to be currently supported by: elinks(1), konqueror(1), kbookmarkeditor(1).

You can do a symbolic link from their path, but you might prefer to use XInclude: which is natively supported by badwolf to automatically merge multiple XBEL files.

Also the bookmark entries aren’t re-sorted, so you might want to put your most frequently used ones at the top of the file.

For more information about this format see:

For an example XBEL file see:


Directory containing the WebKitWebExtensions: to be loaded into badwolf. Note: They aren’t the JavaScript-based Web-Extensions supported by Firefox or Chrome, but native code in shared objects using the WebKitGTK API.

Examples of useful extensions may be found at:


CSS files (respectively system and user-level) for styling badwolf interface. See for the properties being available.

For testing your styles I would recommend using the GTK_DEBUG=interactive environment variable on launching badwolf and going to the CSS tab.


Directory containing JS userscripts (ending in .js) ran at the start of page loads, nesting down into iframes, useful to override website behaviors or add missing features to websites.

Please note that for now unlike GreaseMonkey-style userscripts, they are always run, regardless of the hostname / URLs.


Haelwenn (lanodan) Monnier <[email protected]>


You can submit contributions or tickets to˜lanodan/badwolf/ with git-send-email(1) for patches. GNU 2022-07-13 BADWOLF(1)

Updated 2024-01-29 - |