Brow6el

Terminal Web Browser with Sixel Support

Brow6el is a full-featured web browser that runs entirely in your terminal using Sixel graphics. Built on Chromium (CEF), it brings modern web browsing to the command line with a powerful vim-style keyboard interface, mouse support, JavaScript console, bookmarks, user scripts, and more. Perfect for terminal enthusiasts who want a complete browsing experience without leaving their workflow.

Download & Install (Current version 0.3.4)

Full-featured Chromium-based web browser for your terminal.


AppImage Downloads

Bleeding Edge Builds

⚠️ Latest development builds - may be unstable

Package Repositories

Build from Source

git clone https://codeberg.org/janantos/brow6el.git
cd brow6el
./download_cef.sh
./build.sh
./build/run_brow6el.sh https://example.com

Screenshots

See Brow6el in action:

Video Demo

Browser in Action

Brow6el web browser showing Codeberg website

Features

🖼️ Sixel Graphics

Full page rendering with automatic resolution detection in your terminal.

🎨 Tiled Rendering

Optional tile-based rendering for reduced flicker and improved responsiveness.

🖱️ Mouse Support

Click, scroll, and interact with web pages naturally.

⌨️ Vim-Style Modal Control

Efficient keyboard navigation with four modes (STANDARD, INSERT, MOUSE, VISUAL).

🎯 Grid Jump Mode

Fast mouse positioning with recursive grid navigation (3-4 keystrokes to any element).

🔍 Element Inspector

Browser DevTools-like element inspection in MOUSE mode.

💻 JavaScript Console

Execute JS commands and view console logs.

📚 Bookmarks

Save and organize your favorite pages.

🔧 User Scripts

Inject custom JavaScript into pages with bundled scripts included.

📥 Download Manager

Save files with progress tracking.

🎯 Popup Handling

Terminal-friendly popup dialogs and alerts.

🪟 Multi-Instance

Run multiple browser windows simultaneously.

🔒 Configurable Profiles

Choose between temporary (private) or persistent (normal) browsing.

🔐 DNS-over-HTTPS

Secure DNS with configurable providers and modes.

🌐 Modern Web

Full HTML5/CSS3/JavaScript support via Chromium/CEF.

Usage & Controls

Modal Navigation System

Brow6el uses four distinct modes for efficient navigation. Current mode shown in status bar (e.g., [S][T] for Standard mode with Tiled rendering):

[S] STANDARD Mode - Default

Vim-like navigation with single-key commands (no Ctrl required):

Navigation:
  • h j k l or arrow keys - Navigate (left/down/up/right)
  • t g - Scroll up/down
  • p n - Back/forward in history
Actions:
  • r - Reload page
  • u - Navigate to URL
  • U - Copy current URL to clipboard (Shift+U)
  • c - Toggle JavaScript console
  • d - Add bookmark
  • b - Open bookmarks
  • f - Hint mode (keyboard link navigation)
  • s - User scripts menu
  • y - Toggle auto-inject user scripts
  • z - Toggle tiled rendering (reduces flicker)
  • Z - Force next frame to render monolithically
  • m - Downloads manager
  • x - Exit browser
Mode Switch:
  • i - Enter INSERT mode
  • e - Enter MOUSE mode
  • v - Enter VISUAL mode (text selection)

[I] INSERT Mode

All keypresses pass through to the webpage. Use for typing in forms, text areas, etc.

  • ESC - Return to STANDARD mode

[M] MOUSE Mode

Keyboard-driven mouse emulation with visual cursor:

Movement:
  • h j k l or arrow keys - Move mouse
  • q f - Toggle precision/fast speed
  • r - Toggle drag-and-drop
  • g - Toggle grid jump mode (fast navigation)
Actions:
  • SPACE or ENTER - Click at cursor position or drop
  • i - Toggle inspect mode (show element info on hover)
Exit:
  • e or ESC - Return to STANDARD mode

Grid Jump Mode

Fast mouse positioning with keyboard-driven grid navigation:

  • Press g to activate 3x3 grid overlay with labeled cells (qweasdzxc)
  • Press a key to jump to that grid cell
  • Automatic recursive zoom for precision (3-4 keystrokes to any element)
  • Green grid = more zoom available, red = max zoom
  • Backspace - Zoom out, ESC - Exit grid mode

Inspect Mode

Browser DevTools-like element inspection:

  • Press i to toggle inspect mode
  • Cyan border highlights element under cursor
  • Info panel shows: tag name, ID, classes, attributes, dimensions, text content
  • Real-time updates as cursor moves

[V] VISUAL Mode

Text selection mode for copying page content:

Caret Positioning:
  • h l - Move left/right by character
  • w b - Move forward/backward by word
  • j k - Move down/up by line
  • v - Start selecting from current position
Selection (after pressing v):
  • Same keys extend selection in respective directions
  • y - Copy selection to clipboard, exit VISUAL mode
  • ESC - Cancel selection, exit VISUAL mode

💡 Tip: Use MOUSE mode to position cursor, then press ESC and v to start text selection at that exact position!

Requirements

Terminal

Any terminal emulator with Sixel graphics support:

Build Dependencies

# Ubuntu/Debian
sudo apt-get install build-essential cmake git pkg-config curl \
    libsixel-dev libx11-dev libxcomposite-dev libxdamage-dev \
    libxext-dev libxfixes-dev libxrandr-dev libgbm-dev \
    libpango1.0-dev libatk1.0-dev libcups2-dev libasound2-dev \
    libnss3-dev libnspr4-dev libglib2.0-dev

# Arch Linux
sudo pacman -S base-devel cmake git pkg-config curl \
    libsixel libx11 libxcomposite libxdamage libxfixes \
    libxrandr mesa pango atk cups alsa-lib nss nspr glib2

Advanced Features

📖 User Scripts

Greasemonkey-style custom JavaScript injection with bundled scripts:

mkdir -p ~/.brow6el/userscripts
nano ~/.brow6el/userscripts.conf

Example configuration:

auto_inject=true

dark-mode.js|Dark Mode|true|*
google-custom.js|Google Custom|true|*google.com*
view-source.js|View Page Source|true|*

Press s in STANDARD mode to open user scripts menu, or y to toggle auto-inject.

Bundled Scripts:

  • view-source.js - View HTML source with syntax highlighting
  • reader-mode.js - Simplify pages to article content (like Firefox Reader View)
  • adblock.js - Basic ad blocking functionality
  • force-light-mode.js - Forces light color scheme
  • frameset-redirect.js - Redirects from frameset pages

🔐 Profile Modes

Temporary Mode (Default): Each session uses a new profile, all data deleted on exit - perfect for private browsing.

Persistent Mode: Profile saved in ~/.brow6el/profile, cookies and sessions maintained.

# ~/.brow6el/browser.conf
profile_mode=temporary  # or: persistent, custom
cache_size_mb=500
clear_cache_on_exit=false
clear_cookies_on_exit=false
default_url=https://example.com
grid_keys=qweasdzxc  # Grid jump keys (must be 9 chars)

🔐 DNS-over-HTTPS (DoH)

Encrypt DNS queries and prevent DNS-based tracking or blocking:

# ~/.brow6el/browser.conf
doh_enabled=true
doh_server=https://cloudflare-dns.com/dns-query
doh_mode=secure  # secure, automatic, or off

Popular DoH Providers:

  • Cloudflare: https://cloudflare-dns.com/dns-query (fast, privacy-focused)
  • Google: https://dns.google/dns-query (reliable, global)
  • Quad9: https://dns.quad9.net/dns-query (security-focused, blocks malicious domains)

🎨 Tiled Rendering

Reduce flicker and improve responsiveness with tile-based rendering:

# ~/.brow6el/browser.conf
tiled_rendering=true
# Optional: Override auto-detected terminal cell dimensions
#cell_width=11
#cell_height=25

Runtime Toggle:

  • Press z to toggle between tiled and monolithic rendering
  • Press Z to force next frame to render monolithically
  • Current mode shown in status bar: [S][T] (tiled) or [S][M] (monolithic)

🔧 CEF Configuration

Customize Chromium flags in ~/.brow6el/cef_flags.conf:

  • Enable/disable WebGL support
  • Configure rendering options
  • Set custom user agent
  • Adjust logging verbosity

How It Works

CEF renders web pages offscreen → libsixel converts to sixel graphics → Terminal displays output

The browser continuously renders frames as pages update, with synchronized input handling for mouse and keyboard events.

Community Packages

License & Credits

Brow6el is released under the MIT License.

Uses:

Project repository: codeberg.org/janantos/brow6el