chore: Update README with extensions and ad blocking info
- commit
- 52e9ce9862bd0af9165d518825fd9ed179b784d5
- author
- bnema · · 2026-08-14 02:06 UTC
- committer
- GitHub · · 2026-08-14 02:06 UTC
- parent
- 8058429
- signature
- GPG Unverified
B5690EEEBB952194The key is unknown
1 file · +10 -12
M README.md +10 -12
| @@ -125,9 +125,17 @@ enabled = true | |||
| 125 | 125 | ||
| 126 | 126 | The config reloads while Dumber is running. See the [configuration documentation](https://bnema.dev/dumber/docs) for all options. | |
| 127 | 127 | ||
| 128 | + | ## Extensions and ad blocking | |
| 129 | + | ||
| 130 | + | CEF does not expose the Extensions API, so browser extensions are not supported. While WebKitGTK can use | |
| 131 | + | injected filter lists, this approach is not available with CEF. | |
| 132 | + | ||
| 133 | + | For consistent ad and tracker blocking across applications and devices, use network-level DNS filtering such as | |
| 134 | + | [AdGuard](https://adguard.com/) or [Pi-hole](https://pi-hole.net/). DNS filtering is more reliable than treating ad blocking as a browser extension, and it protects every device that uses your network. | |
| 135 | + | ||
| 128 | 136 | ## Browser engine | |
| 129 | 137 | ||
| 130 | - | Dumber uses Chromium Embedded Framework by default. WebKitGTK is available as a fallback backend. | |
| 138 | + | Dumber uses Chromium Embedded Framework by default. WebKitGTK is available as a second option but I don't use it daily so it is more prone to bugs. | |
| 131 | 139 | ||
| 132 | 140 | On Arch Linux, install the CEF runtime with: | |
| 133 | 141 | ||
| @@ -164,17 +172,7 @@ WebKit can be selected explicitly: | |||
| 164 | 172 | type = "webkit" | |
| 165 | 173 | ``` | |
| 166 | 174 | ||
| 167 | - | ### Page scroll execution | |
| 168 | - | ||
| 169 | - | Page Mode scroll commands are routed through `port.PageScrollable`. CEF and | |
| 170 | - | WebKit use the shared `BuildScrollByJS` target resolver when the page is ready: | |
| 171 | - | it starts under the viewport center, walks through ancestors that can move in | |
| 172 | - | the requested direction, and hands scrolling to the document when a nested | |
| 173 | - | container reaches its boundary. The application repeater owns held-key cadence; | |
| 174 | - | each engine executes one immediate scroll step per tick. Cross-origin frame | |
| 175 | - | contents remain best-effort. | |
| 176 | - | ||
| 177 | - | ### Rendering notes | |
| 175 | + | ### Rendering | |
| 178 | 176 | ||
| 179 | 177 | CEF uses Dumber's GPU-first Wayland render stack by default: GDK DMABUF presentation with ANGLE/GSK Vulkan. For driver compatibility, switch to the EGL/OpenGL stack with `engine.cef.render_stack = "egl"`; the default is `"vulkan"`. | |
| 180 | 178 | ||
| @@ -125,9 +125,17 @@ enabled = true | |||||
| 125 | 125 | ||||
| 126 | The config reloads while Dumber is running. See the [configuration documentation](https://bnema.dev/dumber/docs) for all options. | 126 | The config reloads while Dumber is running. See the [configuration documentation](https://bnema.dev/dumber/docs) for all options. | ||
| 127 | 127 | ||||
| 128 | + | ## Extensions and ad blocking | |||
| 129 | + | ||||
| 130 | + | CEF does not expose the Extensions API, so browser extensions are not supported. While WebKitGTK can use | |||
| 131 | + | injected filter lists, this approach is not available with CEF. | |||
| 132 | + | ||||
| 133 | + | For consistent ad and tracker blocking across applications and devices, use network-level DNS filtering such as | |||
| 134 | + | [AdGuard](https://adguard.com/) or [Pi-hole](https://pi-hole.net/). DNS filtering is more reliable than treating ad blocking as a browser extension, and it protects every device that uses your network. | |||
| 135 | + | ||||
| 128 | ## Browser engine | 136 | ## Browser engine | ||
| 129 | 137 | ||||
| 130 | - | Dumber uses Chromium Embedded Framework by default. WebKitGTK is available as a fallback backend. | 138 | + | Dumber uses Chromium Embedded Framework by default. WebKitGTK is available as a second option but I don't use it daily so it is more prone to bugs. |
| 131 | 139 | ||||
| 132 | On Arch Linux, install the CEF runtime with: | 140 | On Arch Linux, install the CEF runtime with: | ||
| 133 | 141 | ||||
| @@ -164,17 +172,7 @@ WebKit can be selected explicitly: | |||||
| 164 | type = "webkit" | 172 | type = "webkit" | ||
| 165 | ``` | 173 | ``` | ||
| 166 | 174 | ||||
| 167 | - | ### Page scroll execution | 175 | + | ### Rendering |
| 168 | - | ||||
| 169 | - | Page Mode scroll commands are routed through `port.PageScrollable`. CEF and | |||
| 170 | - | WebKit use the shared `BuildScrollByJS` target resolver when the page is ready: | |||
| 171 | - | it starts under the viewport center, walks through ancestors that can move in | |||
| 172 | - | the requested direction, and hands scrolling to the document when a nested | |||
| 173 | - | container reaches its boundary. The application repeater owns held-key cadence; | |||
| 174 | - | each engine executes one immediate scroll step per tick. Cross-origin frame | |||
| 175 | - | contents remain best-effort. | |||
| 176 | - | ||||
| 177 | - | ### Rendering notes | |||
| 178 | 176 | ||||
| 179 | CEF uses Dumber's GPU-first Wayland render stack by default: GDK DMABUF presentation with ANGLE/GSK Vulkan. For driver compatibility, switch to the EGL/OpenGL stack with `engine.cef.render_stack = "egl"`; the default is `"vulkan"`. | 177 | CEF uses Dumber's GPU-first Wayland render stack by default: GDK DMABUF presentation with ANGLE/GSK Vulkan. For driver compatibility, switch to the EGL/OpenGL stack with `engine.cef.render_stack = "egl"`; the default is `"vulkan"`. | ||
| 180 | 178 | ||||