Beacon is a GTK4 browser built on the Gosub engine. The engine does the actual work (networking, cookies, storage, history, rendering); Beacon is the native chrome around it. It exists to test the engine in a real application, so don't expect a daily driver — but basic browsing works.
Currently working:
- page loading and rendering (Skia rasterization, GPU compositing via GtkGLArea)
- tabs, back/forward with a tree-shaped session history
- bookmarks and visited history in sqlite, with a bookmarks bar and URL-bar completion
- downloads with a save dialog and a progress popover
- keyboard: Tab focus traversal, Enter on links, scrolling keys
- right-click context menu (open/copy link, image, save link as)
- internal pages: gosub://home, help, version, history, bookmarks and a settings editor on gosub://config
- favicons, cursor shapes, error pages, a JSON viewer
- crashed tabs show a reload page instead of taking the browser down
Not working yet: JavaScript, forms and text input, text selection.
Beacon uses path dependencies into the engine, so check out
gosub-engine next to this repository
(../gosub-engine), on the beacon branch (upstream main plus engine work Beacon
needs that has not merged yet).
Dependencies on Debian/Ubuntu, or similar on other systems:
sudo apt install libgtk-4-dev libglib2.0-dev libcairo2-dev libgdk-pixbuf-2.0-dev \
libpango1.0-dev libsqlite3-dev libssl-dev pkg-config \
clang libclang-dev libgl-dev libegl-dev libfontconfig-dev libfreetype-devLinux only for now. macOS and Windows shells will consume the engine's C API instead of this GTK code, but help with either is welcome.
cargo run # opens the default startup tabs
cargo run -- https://example.com # URLs on the command line become the startup tabsProfile data (cookies, local storage, bookmarks/history, settings) ends up in
~/.local/share/gosub-beacon.