Brow6el: A full-featured web browser for the terminal using Chromium
Brow6el: The Chromium-Powered Terminal Browser
Brow6el is a comprehensive web browser designed specifically for the terminal. It leverages the Chromium Embedded Framework (CEF) to bring modern web capabilities to the command line, featuring robust support for both Sixel and Kitty graphics protocols.
🌐 Project Status & Migration
The primary source of truth for this project has moved.
Previous Host: Codeberg Current Host: Tangled
The developer migrated from Codeberg to keep all projects on a single platform after other projects were no longer welcomed there.
🛠 Technical Composition
The codebase is a polyglot effort, primarily driven by C++ and JavaScript:
| Language | Percentage |
|---|---|
C++ | 46.3% |
JavaScript | 44.5% |
Shell | 4.7% |
HTML | 3.8% |
CMake | 0.7% |
C | 0.1% |
Other | 0.1% |
⚠️ Critical Warnings & Compatibility
Before deploying Brow6el, please note the following constraints:
- SSH Performance: Kitty image support is barely functional over SSH. Because each rendered frame requires massive data transfers, responsiveness drops significantly.
- Ubuntu 24.04 Issue: The version of Kitty shipped with Ubuntu 24.04 (v0.32.2) is outdated. It cannot handle the newer image protocol used by Brow6el, resulting in
BASE64text being printed instead of actual images. - Recommended Alternative: The
footterminal works perfectly on Ubuntu. - Code Maturity: This is currently POC (Proof of Concept) quality code.
Verified Terminals:
footweztermkitty(Localhost)ghosttyyaft(Framebuffer)Windows 11 Terminal(via WSL2 with Sixel)
🚀 Key Features
Graphics & Rendering
- Protocol Support: Automatic detection and support for Sixel and Kitty.
- Tiled Rendering: An optional feature for Sixel that breaks images into tiles to improve responsiveness.
- Modern Web Engine: Full support for via Chromium.
Navigation & Control
- Vim-Style Modality: Uses a modal interface to streamline keyboard interaction.
- Grid Jump Mode: A recursive navigation system allowing users to reach almost any element in 3-4 keystrokes.
- Mouse Integration: Full support for clicking and scrolling.
Power User Tools
- Element Inspector: A DevTools-like utility available in
MOUSEmode. - JS Console: A dedicated area to execute JavaScript and monitor logs.
- User Scripts: Ability to inject custom JS into pages.
- DNS-over-HTTPS (DoH): Configurable providers for secure DNS resolution.
Management
- Bookmarks: Organize and save favorite URLs.
- Download Manager: Track file downloads with a progress indicator.
- Profiles: Switch between Persistent (Normal) and Temporary (Private) browsing.
- Multi-Instance: Capability to run several browser windows at once.
⌨️ Modal Control System
Brow6el operates using a state-based input system. The transition between modes can be visualized as follows:
The efficiency of the data transfer over a network can be conceptualized by the formula: This explains why Kitty graphics struggle over SSH.
📂 Repository Insights & Recent Updates
The project is actively evolving. Recent commits include:
- Configuration: Added a
download_directoryfield to customize where files are saved. - Path Handling: Improved config file logic to expand
~(home directory) and ensure trailing slashes. - Modernization: Integrated C++20 features such as
std::same_asandstd::convertible_to. - Cleanup: Removed Forgejo CI/CD pipelines.
Example Build Command
To initiate the build process, users typically interact with the provided shell scripts:
chmod +x build.sh
./build.sh
🖼 Gallery
User Avatars:
Browser in Action:
General Page View
Rendering a website in a Linux virtual terminal
The integrated JavaScript console