BADWOLF(1) General Commands Manual BADWOLF(1)

badwolfminimalist and privacy-oriented web browser based on WebKitGTK

badwolf [webkit/gtk options] [-iS] [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 these.

Disable Images.
Enable JavaScript.

badwolf supports the ‘man:’ scheme, where for example man(1) maps to man:man.1

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 Ctrl-Escape
Terminates the web process
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 <>

You can submit contributions or tickets to with git-send-email(1) for patches.

2022-07-13 Linux 6.6.21-gentoo