badwolf.1 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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-MousePrimary, webview MouseMiddle
  44. Opens the selected link in a new tab. (Note: JS still overrides the event)
  45. .It any Ctrl-t
  46. Creates a new tab (in a new session, similar as pressing the button)
  47. .It browser Ctrl-F4, browser Alt-d
  48. Closes the current tab
  49. .It browser Ctrl-f
  50. Focuses on the search entry
  51. .It browser Ctrl-l
  52. Focuses on the location(URL) entry
  53. .It browser Ctrl-Shift-r / Ctrl-r, browser F5
  54. Reloads the content in the current tab (with/without clearing cache)
  55. .It browser Escape
  56. Stops loading the content in the current tab
  57. .It browser Ctrl-Escape
  58. Terminates the web process
  59. .It browser F7
  60. Toggles caret browsing.
  61. .It browser F12
  62. Opens the web inspector.
  63. .It browser Ctrl-[ / Ctrl-]
  64. Go back/forward in current tab's history
  65. .It browser Ctrl-p
  66. Print the current page. (spawns a dialog)
  67. .It any Alt-Left / Alt-Right
  68. Go to the previous/next tab
  69. .It any F1
  70. Shows the about dialog
  71. .It any Alt-n
  72. Where n is any numeric-row key.
  73. Go to the n-th tab, 0 goes to the last one.
  74. .El
  75. .Ss DEFAULT ONES
  76. Here is a incomplete list of the default Webkit/GTK keybindings:
  77. .Bl -tag -width Ds
  78. .It any Ctrl-PageUp / Ctrl-PageDown
  79. Go to the previous/next tab
  80. .It search Ctrl-g / Ctrl-Shift-g
  81. When the search box is focused it goes to the Next/Previous search term.
  82. .It search Escape
  83. Cancels current search
  84. .It textarea Ctrl-;
  85. Insert Emoji
  86. .El
  87. .Sh ENVIRONMENT
  88. .Bl -tag -width Ds
  89. .It Ev BADWOLF_L10N
  90. A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and COUNTRY in ISO-3166.
  91. For example
  92. .Ic BADWOLF_L10N="en_GB:fr_FR:de_DE" .
  93. When this variable isn't set, spelling isn't activated.
  94. A more generic variable name is also intended to be used in the future.
  95. .Pp
  96. To get the list of supported dictionaries execute
  97. .Ic enchant-lsmod-2 -list-dicts
  98. or before enchant 2.0:
  99. .Ic enchant-lsmod -list-dicts
  100. .El
  101. .Sh FILES
  102. The following paths are using
  103. .Xr sh 1
  104. syntax to correctly support XDG Base Directory Specification, you can use the
  105. .Xr echo 1
  106. command to check where it is on your system.
  107. .Pp
  108. .Bl -tag -width Ds -compact
  109. .It Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json
  110. WebKit-specific content-filter file, this allows to block unwanted content (ads, nagware, ...).
  111. For some introductory information about the format see:
  112. .Lk https://webkit.org/blog/3476/content-blockers-first-look/
  113. .Lk https://webkit.org/blog/4062/targeting-domains-with-content-blockers/
  114. .Lk https://developer.apple.com/documentation/safariservices/creating_a_content_blocker
  115. .Pp
  116. For a converter using AblockPlus-style filters, try:
  117. .Lk https://gitlab.com/eyeo/adblockplus/abp2blocklist
  118. .Pp
  119. For a ready-to-use file (that you should update periodically), try:
  120. .Lk https://easylist-downloads.adblockplus.org/easylist_min_content_blocker.json
  121. .It Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters
  122. This is where the compiled filters are stored, the file(s) in it are automatically generated and so shouldn't be edited.
  123. Documented here only for sandboxing / access-control purposes.
  124. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel
  125. XBEL (XML Bookmark Exchange Language) file, known to be currently supported by:
  126. .Xr elinks 1 ,
  127. .Xr konqueror 1 ,
  128. .Xr kbookmarkeditor 1 .
  129. .Pp
  130. You can do a symbolic link from their path, but you might prefer to use
  131. .Lk https://www.w3.org/TR/xinclude/ XInclude
  132. which is natively supported by
  133. .Nm
  134. to automatically merge multiple XBEL files.
  135. .Pp
  136. 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.
  137. .Pp
  138. For more information about this format see:
  139. .Lk http://pyxml.sourceforge.net/topics/xbel/
  140. .Pp
  141. For an example XBEL file see:
  142. .Lk https://hacktivis.me/bookmarks.xbel
  143. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/
  144. Directory containing the
  145. .Lk https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html WebKitWebExtensions
  146. to be loaded into
  147. .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.
  148. .Pp
  149. Examples of useful extensions may be found at:
  150. .Lk https://hacktivis.me/git/badwolf-extensions
  151. .It Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css
  152. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css
  153. CSS files (respectively system and user-level) for styling
  154. .Nm
  155. interface.
  156. See
  157. .Lk https://docs.gtk.org/gtk3/css-properties.html
  158. for the properties being available.
  159. .Pp
  160. For testing your styles I would recommend using the
  161. .Ev GTK_DEBUG=interactive
  162. environment variable on launching
  163. .Nm
  164. and going to the CSS tab.
  165. .It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/
  166. Directory containing JS userscripts (ending in
  167. .Ic .js )
  168. ran at the start of page loads,
  169. nesting down into iframes, useful to override website behaviors or add
  170. missing features to websites.
  171. .Pp
  172. Please note that for now unlike GreaseMonkey-style userscripts, they are
  173. always run, regardless of the hostname / URLs.
  174. .El
  175. .Sh AUTHORS
  176. .An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me
  177. .Sh BUGS
  178. You can submit contributions or tickets to
  179. .Lk https://sr.ht/~lanodan/badwolf/
  180. with
  181. .Xr git-send-email 1
  182. for patches.