dumber

module
v0.27.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2026 License: MIT

README

Dumber

Go Report Card

A TTY-inspired browser multiplexer for tiling window managers.


What is Dumber?

Dumber is a Wayland-native browser that works like your terminal multiplexer. Tabs hold workspaces. Workspaces hold panes. Panes split and stack like Zellij. Everything is keyboard-driven.

No bloat. No Chrome. No Electron.

https://github.com/user-attachments/assets/232822af-08e4-4a74-9416-87f79c96b118

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.

Directories

Path Synopsis
cmd
dumber command
internal
application/port
Package port defines interfaces for infrastructure adapters.
Package port defines interfaces for infrastructure adapters.
application/usecase
Package usecase contains application business logic.
Package usecase contains application business logic.
bootstrap
Package bootstrap provides initialization utilities for the browser.
Package bootstrap provides initialization utilities for the browser.
cli
Package cli provides CLI commands using Bubble Tea TUI.
Package cli provides CLI commands using Bubble Tea TUI.
cli/cmd
Package cmd provides Cobra CLI commands for dumber.
Package cmd provides Cobra CLI commands for dumber.
cli/model
Package model provides Bubble Tea models for CLI commands.
Package model provides Bubble Tea models for CLI commands.
cli/styles
Package styles provides reusable lipgloss-based TUI components.
Package styles provides reusable lipgloss-based TUI components.
domain/autocomplete
Package autocomplete provides domain types and logic for URL autocompletion.
Package autocomplete provides domain types and logic for URL autocompletion.
domain/build
Package build provides domain entities for build information.
Package build provides domain entities for build information.
domain/entity
Package entity defines domain entities for the browser.
Package entity defines domain entities for the browser.
domain/service
Package service defines domain service interfaces.
Package service defines domain service interfaces.
domain/url
Package url provides URL manipulation utilities for the browser.
Package url provides URL manipulation utilities for the browser.
infrastructure/cache
Package cache provides cache implementations for the application layer.
Package cache provides cache implementations for the application layer.
infrastructure/clipboard
Package clipboard provides a clipboard adapter using wl-clipboard (Wayland) with X11 fallback.
Package clipboard provides a clipboard adapter using wl-clipboard (Wayland) with X11 fallback.
infrastructure/config
Package config provides configuration management for dumber with Viper integration.
Package config provides configuration management for dumber with Viper integration.
infrastructure/desktop
Package desktop provides desktop environment integration for Linux (XDG).
Package desktop provides desktop environment integration for Linux (XDG).
infrastructure/env
Package env provides environment variable management for rendering subsystems.
Package env provides environment variable management for rendering subsystems.
infrastructure/favicon
Package favicon provides favicon fetching and caching infrastructure.
Package favicon provides favicon fetching and caching infrastructure.
infrastructure/idle
Package idle provides system idle/screensaver inhibition via XDG Desktop Portal.
Package idle provides system idle/screensaver inhibition via XDG Desktop Portal.
infrastructure/media
Package media provides video playback diagnostics and hardware acceleration detection.
Package media provides video playback diagnostics and hardware acceleration detection.
infrastructure/persistence/sqlite
Package sqlite provides SQLite implementations of domain repositories.
Package sqlite provides SQLite implementations of domain repositories.
infrastructure/textinput
Package textinput provides implementations for text input targets and focus tracking.
Package textinput provides implementations for text input targets and focus tracking.
infrastructure/updater
Package updater provides update checking and downloading functionality.
Package updater provides update checking and downloading functionality.
ui
Package ui provides the GTK4 presentation layer for the dumber browser.
Package ui provides the GTK4 presentation layer for the dumber browser.
ui/adapter
Package adapter provides UI-layer adapters that bridge domain services to GTK.
Package adapter provides UI-layer adapters that bridge domain services to GTK.
ui/component
Package component provides UI components for the browser.
Package component provides UI components for the browser.
ui/dialog
Package dialog provides UI dialog implementations for the application layer.
Package dialog provides UI dialog implementations for the application layer.
ui/focus
Package focus provides focus state management and geometric navigation for panes.
Package focus provides focus state management and geometric navigation for panes.
ui/input
Package input provides keyboard event handling and modal input mode management.
Package input provides keyboard event handling and modal input mode management.
ui/layout
Package layout provides GTK widget abstractions and layout management for the pane system.
Package layout provides GTK widget abstractions and layout management for the pane system.
ui/theme
Package theme provides GTK CSS styling for UI components.
Package theme provides GTK CSS styling for UI components.
ui/window
Package window provides GTK window implementations.
Package window provides GTK window implementations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL