logo

badwolf

minimalist and privacy-oriented web browser based on WebKitGTK git clone https://anongit.hacktivis.me/git/badwolf.git/

badwolf.1 (6519B)


  1. .\" BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
  2. .\" Copyright © 2019-2024 Badwolf Authors <https://hacktivis.me/projects/badwolf>
  3. .\" SPDX-License-Identifier: BSD-3-Clause
  4. .Dd 2022-07-13
  5. .Dt BADWOLF 1
  6. .Os
  7. .Sh NAME
  8. .Nm badwolf
  9. .Nd minimalist and privacy-oriented web browser based on WebKitGTK
  10. .Sh SYNOPSIS
  11. .Nm
  12. .Op Ar webkit/gtk options
  13. .Op Fl iS
  14. .Op Ar URLs or paths
  15. .Sh DESCRIPTION
  16. .Nm
  17. 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.
  18. .Pp
  19. .Sh OPTIONS
  20. .Bl -tag -width Ds
  21. .It Fl i
  22. Disable Images.
  23. .It Fl S
  24. Enable JavaScript.
  25. .El
  26. .Sh CUSTOM SCHEMES
  27. .Nm
  28. supports the
  29. .Ql man:
  30. scheme, where for example
  31. .Xr man 1
  32. maps to
  33. .Lk man:man.1
  34. .Sh KEYBINDINGS
  35. The following section lists the keybinding by their action, each item is described by the widget the focus is on or
  36. .Aq any
  37. if it works for the whole window, followed by the keybind it grabs.
  38. .Bl -tag -width Ds
  39. .It webview Ctrl-Scroll
  40. Zooms the webpage in/out.
  41. .It webview Ctrl-0
  42. Resets webpage zoom to 100%.
  43. .It webview Ctrl-0
  44. Resets webpage zoom to configurable default zoom, see
  45. .Ev BADWOLF_DEFAULT_ZOOM
  46. in
  47. .Sx ENVIRONMENT
  48. section.
  49. .It webview Ctrl-MousePrimary, webview MouseMiddle
  50. Opens the selected link in a new tab. (Note: JS still overrides the event)
  51. .It any Ctrl-t
  52. Creates a new tab (in a new session, similar as pressing the button)
  53. .It browser Ctrl-F4, browser Alt-d
  54. Closes the current tab
  55. .It browser Ctrl-f
  56. Focuses on the search entry
  57. .It browser Ctrl-l
  58. Focuses on the location(URL) entry
  59. .It browser Ctrl-Shift-r / Ctrl-r, browser F5
  60. Reloads the content in the current tab (with/without clearing cache)
  61. .It browser Escape
  62. Stops loading the content in the current tab
  63. .It browser Ctrl-Escape
  64. Terminates the web process
  65. .It browser F7
  66. Toggles caret browsing.
  67. .It browser F12
  68. Opens the web inspector.
  69. .It browser Ctrl-[ / Ctrl-]
  70. Go back/forward in current tab's history
  71. .It browser Ctrl-p
  72. Print the current page. (spawns a dialog)
  73. .It any Alt-Left / Alt-Right
  74. Go to the previous/next tab
  75. .It any F1
  76. Shows the about dialog
  77. .It any Alt-n
  78. Where n is any numeric-row key.
  79. Go to the n-th tab, 0 goes to the last one.
  80. .El
  81. .Ss DEFAULT ONES
  82. Here is a incomplete list of the default Webkit/GTK keybindings:
  83. .Bl -tag -width Ds
  84. .It any Ctrl-PageUp / Ctrl-PageDown
  85. Go to the previous/next tab
  86. .It search Ctrl-g / Ctrl-Shift-g
  87. When the search box is focused it goes to the Next/Previous search term.
  88. .It search Escape
  89. Cancels current search
  90. .It textarea Ctrl-;
  91. Insert Emoji
  92. .El
  93. .Sh ENVIRONMENT
  94. .Bl -tag -width Ds
  95. .It Ev BADWOLF_L10N
  96. A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and COUNTRY in ISO-3166.
  97. For example
  98. .Ic BADWOLF_L10N="en_GB:fr_FR:de_DE" .
  99. When this variable isn't set, spelling isn't activated.
  100. A more generic variable name is also intended to be used in the future.
  101. .Pp
  102. To get the list of supported dictionaries execute
  103. .Ic enchant-lsmod-2 -list-dicts
  104. or before enchant 2.0:
  105. .Ic enchant-lsmod -list-dicts
  106. .It Ev BADWOLF_DEFAULT_ZOOM
  107. Sets the default zoom level as a float instead of 1.0 (aka 100%).
  108. .El
  109. .Sh FILES
  110. The following paths are using
  111. .Xr sh 1
  112. syntax to correctly support XDG Base Directory Specification, you can use the
  113. .Xr echo 1
  114. command to check where it is on your system.
  115. .Pp
  116. .Bl -tag -width Ds -compact
  117. .It Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json
  118. WebKit-specific content-filter file for blocking unwanted content (ads, nagware, ...).
  119. For some introductory information about the format see:
  120. .Lk https://webkit.org/blog/3476/content-blockers-first-look/
  121. .Lk https://webkit.org/blog/4062/targeting-domains-with-content-blockers/
  122. .Lk https://developer.apple.com/documentation/safariservices/creating_a_content_blocker
  123. .Pp
  124. For a converter using AblockPlus-style filters, try:
  125. .Lk https://gitlab.com/eyeo/adblockplus/abp2blocklist
  126. .Pp
  127. For a ready-to-use file (that you should update periodically), try:
  128. .Lk https://easylist-downloads.adblockplus.org/easylist_min_content_blocker.json
  129. .It Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters
  130. This is where the compiled filters are stored, the file(s) in it are automatically generated and so shouldn't be edited.
  131. Documented here only for sandboxing / access-control purposes.
  132. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel
  133. XBEL (XML Bookmark Exchange Language) file, known to be currently supported by:
  134. .Xr elinks 1 ,
  135. .Xr konqueror 1 ,
  136. .Xr kbookmarkeditor 1 .
  137. .Pp
  138. You can do a symbolic link from their path, but you might prefer to use
  139. .Lk https://www.w3.org/TR/xinclude/ XInclude
  140. which is natively supported by
  141. .Nm
  142. to automatically merge multiple XBEL files.
  143. .Pp
  144. 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.
  145. .Pp
  146. For more information about this format see:
  147. .Lk http://pyxml.sourceforge.net/topics/xbel/
  148. .Pp
  149. For an example XBEL file see:
  150. .Lk https://hacktivis.me/bookmarks.xbel
  151. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/
  152. Directory containing the
  153. .Lk https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html WebKitWebExtensions
  154. to be loaded into
  155. .Nm . Note: They aren't the JavaScript-based Web-Extensions supported by Firefox or Chrome, but native code in shared objects using the WebKitGTK API.
  156. .Pp
  157. Examples of useful extensions may be found at:
  158. .Lk https://hacktivis.me/git/badwolf-extensions
  159. .It Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css
  160. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css
  161. CSS files (respectively system and user-level) for styling
  162. .Nm
  163. interface.
  164. See
  165. .Lk https://docs.gtk.org/gtk3/css-properties.html
  166. for the properties being available.
  167. .Pp
  168. For testing your styles I would recommend using the
  169. .Ev GTK_DEBUG=interactive
  170. environment variable on launching
  171. .Nm
  172. and going to the CSS tab.
  173. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/
  174. Directory containing JS userscripts (ending in
  175. .Ic .js )
  176. ran at the start of page loads,
  177. nesting down into iframes, useful to override website behaviors or add
  178. missing features to websites.
  179. .Pp
  180. Please note that for now unlike GreaseMonkey-style userscripts, they are
  181. always run, regardless of the hostname / URLs.
  182. .El
  183. .Sh AUTHORS
  184. .An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me
  185. .Sh BUGS
  186. You can submit contributions or tickets to
  187. .Lk https://sr.ht/~lanodan/badwolf/
  188. with
  189. .Xr git-send-email 1
  190. for patches.