Summary Files Commits Branches @commit @diff @stats
NameSize
.clang-format489 Blog stats plain blame
.gitignore7 Blog stats plain blame
KnowledgeBase.md374 Blog stats plain blame
Makefile380 Blog stats plain blame
README.md1.9 KiBlog stats plain blame
TODO70 Blog stats plain blame
badwolf.c17.1 KiBlog stats plain blame
config.h984 Blog stats plain blame

BadWolf

Minimalist and privacy-oriented WebKitGTK+ browser.

Homepage: https://hacktivis.me/projects/badwolf

Copyright © 2019-2021 Badwolf Authors <https://hacktivis.me/projects/badwolf>
SPDX-License-Identifier: BSD-3-Clause

The name is a reference to BBC’s Doctor Who Tv serie, I took it simply because I wanted to have a specie in the name, like some other web browsers do, but doesn’t go into the “gentle” zone.

Differencies

Comparing from other small WebKit browsers for unixes found in the wild:

  • Independent of environment, should just work if GTK and WebKitGTK does
  • Storing data should be:
  • explicit and optionnal (ie. Applying preferences doesn't imply Saving to disk)
  • not queryabe by WebKit (so the web can't use it)
  • done in a standard format (like XBEL for bookmarks)
  • Static UI, no element should be added at runtime, this is to avoid potential tracking via viewport changes
  • Small codebase, should be possible to read and understand it completely over an afternoon.
  • Does not use modal editing (from vi) as that was designed for editing, not browsing
  • UTF-8 encoding by default

Motivation from other clients https://hacktivis.me/articles/www-client%20are%20broken

Contributing

Translations

You need to have gettext installed. If you want a GUI, poedit exists and Weblate is a good web platform that I might consider hosting at some point.

  • Syncing POT file with the source code: make po/messages.pot
  • Syncing PO file with the POT file: make po/de.po
  • Initialising a new PO file (example for German, de_DE): msginit -l de_DE -i po/messages.pot -o po/de.po

Contacts / Discussions

Repositories

git

release assets

Manual Installation

Dependencies

  • POSIX-compatible Shell (ie. mrsh, dash, lksh)
  • POSIX-compatible make(1) (ie. {Free,Net,Open}BSD make, GNU make)
  • A pkg-config implementation (pkgconf is recommended)
  • C11 Compiler (such as clang or gcc)
  • WebKitGTK, only the latest stable(2.32.0+) is supported
  • libxml-2.0, no known version limitation
  • (optional, translating) po4a to modify manpage translations
  • (optional, translating) gettext implementation (such as GNU Gettext)
  • (optional, lint) mandoc (the command) for linting the manpage
  • (optional, lint) shellcheck for linting the ./configure script
  • (optional, lint) flawfinder for examining C source code for flaws

Note: Packagers can safely ignore the lint dependencies.

Compiling

./configure && make

Note: configure is a simple shell script (so not autotools) which supports variables like PREFIX.

Installing

make install
# DESTDIR is supported

Debian users will probably want to use checkinstall instead.

An example AppArmor profile is provided at usr.bin.badwolf, please do some long runtime checks before shipping it or a modified version, help can be provided but with no support.

If you modify the icons, you'll need inkscape (command line only), to regenerate the bitmap versions. It isn't needed for a normal installation as the bitmap icons are bundled.

Notes

Most of the privacy/security stuff will be done with patches against WebKit as quite a lot isn’t into WebKitSettings and with generic WebKit extensions that should be resuseable.