v0.28.0 3cb3770

README.md RawHistoryFolder

Dumber

[License: MIT] [Go Report Card]

A TTY-inspired web browser multiplexer for tiling window managers.


What is Dumber?

Dumber is a web browser that works like your terminal multiplexer. Tabs hold workspaces. Workspaces hold panes. Panes split and stack like Zellij.

Features:

  • Zellij-style panes with modal keyboard navigation
  • Floating workspace pane with profile shortcuts
  • Wayland native (Sway, Hyprland, River, Niri)
  • Session resurrection with auto-snapshots
  • Built-in ad blocking (uBlock-based)
  • GPU accelerated video (VA-API/VDPAU)
  • Launcher integration (rofi/fuzzel/dmenu)
  • Search bangs (!g, !gi, !ddg)
  • Single config.toml with hot reload

Documentation

Full documentation is available at dumber.bnema.dev

Quick Start

# Install
curl -fsSL https://dumber.bnema.dev/install | sh

# Launch
dumber browse

Arch Linux (AUR)

yay -S dumber-browser-bin   # Pre-built binary
yay -S dumber-browser-git   # Build from source

Flatpak

wget https://github.com/bnema/dumber/releases/latest/download/dumber.flatpak
flatpak install --user dumber.flatpak
flatpak run dev.bnema.Dumber browse

Dependencies

Arch Linux:

sudo pacman -S webkitgtk-6.0 gtk4 gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugin-va

Debian/Ubuntu:

sudo apt install libwebkitgtk-6.0-4 libgtk-4-1 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad

⚠️ Ubuntu 24.04 ships GLib 2.80, but Dumber requires GLib 2.84+. Use Arch, Fedora 41+, or the Flatpak.

Keyboard-Driven

Four modal modes. Enter a mode, act, escape out. Vim and Zellij users already know this pattern.

Mode Key Actions
Pane Ctrl+P Split · Stack · Close · Move
Tab Ctrl+T New · Close · Switch · Rename
Resize Ctrl+N Grow · Shrink · hjkl/arrows
Session Ctrl+O Save · Restore · Browse

Floating Pane

  • Alt+F toggles the floating pane and preserves its state while hidden.
  • Ctrl+W closes the active pane; if the floating pane is active, it is fully released for a fresh next open.
  • Profile shortcuts like Alt+G are optional and configured under workspace.floating_pane.profiles.
  • Some Alt+<key> bindings may conflict with default WebKit shortcuts or desktop-level handlers.

See Floating Pane Reference for setup and behavior details.

Development

Dumber uses pure-Go bindings (no CGO) but requires GTK4/WebKitGTK runtime libraries for the GUI.

Environment

Set ENV=dev to use .dev/dumber/ for config/data instead of XDG paths.

Build From Source

Prerequisites:

  • Go 1.25+
  • Node.js 20+ (for frontend assets)
  • WebKitGTK 6.0 and GTK4 dev packages
git clone https://github.com/bnema/dumber
cd dumber
make build
./dist/dumber browse

Make Targets

Target Description
make build Build frontend + binary
make build-quick Build binary only (skip frontend)
make dev Run with go run
make test Run tests
make lint Run golangci-lint
make flatpak-build Build Flatpak bundle

Contributing

We welcome bug fixes, performance/stability improvements, and WebUI/UX enhancements. We're not accepting new feature PRs.

All PRs must target the next branch. We test there first before releasing to main.

See CONTRIBUTING.md for details.

Community

License

MIT - See LICENSE for details.

source
1# Dumber
2
3[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Go Report Card](https://goreportcard.com/badge/github.com/bnema/dumber)](https://goreportcard.com/report/github.com/bnema/dumber)
4
5A TTY-inspired web browser multiplexer for tiling window managers.
6
7- Website: [dumber.bnema.dev](https://dumber.bnema.dev)
8- Documentation: [dumber.bnema.dev/docs](https://dumber.bnema.dev/docs)
9
10---
11
12## What is Dumber?
13
14Dumber is a web browser that works like your terminal multiplexer. Tabs hold workspaces. Workspaces hold panes. Panes split and stack like Zellij.
15
16https://github.com/user-attachments/assets/232822af-08e4-4a74-9416-87f79c96b118
17
18
19
20**Features:**
21- Zellij-style panes with modal keyboard navigation
22- Floating workspace pane with profile shortcuts
23- Wayland native (Sway, Hyprland, River, Niri)
24- Session resurrection with auto-snapshots
25- Built-in ad blocking (uBlock-based)
26- GPU accelerated video (VA-API/VDPAU)
27- Launcher integration (rofi/fuzzel/dmenu)
28- Search bangs (!g, !gi, !ddg)
29- Single config.toml with hot reload
30
31## Documentation
32
33Full documentation is available at **[dumber.bnema.dev](https://dumber.bnema.dev)**
34
35- [Documentation](https://dumber.bnema.dev/docs) - Installation, configuration, CLI reference
36- [Keybindings](https://dumber.bnema.dev/docs/reference/keybindings) - Keyboard shortcuts
37
38## Quick Start
39
40```bash
41# Install
42curl -fsSL https://dumber.bnema.dev/install | sh
43
44# Launch
45dumber browse
46```
47
48### Arch Linux (AUR)
49
50```bash
51yay -S dumber-browser-bin   # Pre-built binary
52yay -S dumber-browser-git   # Build from source
53```
54
55### Flatpak
56
57```bash
58wget https://github.com/bnema/dumber/releases/latest/download/dumber.flatpak
59flatpak install --user dumber.flatpak
60flatpak run dev.bnema.Dumber browse
61```
62
63### Dependencies
64
65**Arch Linux:**
66
67```bash
68sudo pacman -S webkitgtk-6.0 gtk4 gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugin-va
69```
70
71**Debian/Ubuntu:**
72
73```bash
74sudo apt install libwebkitgtk-6.0-4 libgtk-4-1 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad
75```
76
77> ⚠️ Ubuntu 24.04 ships GLib 2.80, but Dumber requires GLib 2.84+. Use Arch, Fedora 41+, or the Flatpak.
78
79## Keyboard-Driven
80
81Four modal modes. Enter a mode, act, escape out. Vim and Zellij users already know this pattern.
82
83| Mode | Key | Actions |
84|------|-----|---------|
85| Pane | `Ctrl+P` | Split · Stack · Close · Move |
86| Tab | `Ctrl+T` | New · Close · Switch · Rename |
87| Resize | `Ctrl+N` | Grow · Shrink · hjkl/arrows |
88| Session | `Ctrl+O` | Save · Restore · Browse |
89
90## Floating Pane
91
92- `Alt+F` toggles the floating pane and preserves its state while hidden.
93- `Ctrl+W` closes the active pane; if the floating pane is active, it is fully released for a fresh next open.
94- Profile shortcuts like `Alt+G` are optional and configured under `workspace.floating_pane.profiles`.
95- Some `Alt+<key>` bindings may conflict with default WebKit shortcuts or desktop-level handlers.
96
97See [Floating Pane Reference](https://dumber.bnema.dev/docs/reference/floating-pane) for setup and behavior details.
98
99## Development
100
101Dumber uses pure-Go bindings (no CGO) but requires GTK4/WebKitGTK runtime libraries for the GUI.
102
103### Environment
104
105Set `ENV=dev` to use `.dev/dumber/` for config/data instead of XDG paths.
106
107### Build From Source
108
109**Prerequisites:**
110- Go 1.25+
111- Node.js 20+ (for frontend assets)
112- WebKitGTK 6.0 and GTK4 dev packages
113
114```bash
115git clone https://github.com/bnema/dumber
116cd dumber
117make build
118./dist/dumber browse
119```
120
121### Make Targets
122
123| Target | Description |
124|--------|-------------|
125| `make build` | Build frontend + binary |
126| `make build-quick` | Build binary only (skip frontend) |
127| `make dev` | Run with `go run` |
128| `make test` | Run tests |
129| `make lint` | Run golangci-lint |
130| `make flatpak-build` | Build Flatpak bundle |
131
132## Contributing
133
134We welcome bug fixes, performance/stability improvements, and WebUI/UX enhancements. We're not accepting new feature PRs.
135
136**All PRs must target the `next` branch.** We test there first before releasing to `main`.
137
138See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
139
140## Community
141
142- [Report bugs](https://github.com/bnema/dumber/issues)
143- [Releases](https://github.com/bnema/dumber/releases)
144
145## License
146
147MIT - See `LICENSE` for details.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close