rs_vimium

July 5, 2026 · View on GitHub

The hacker's browser, in Rust.

Keyboard-first browser runtime and web superpowers built in Rust/WASM with Crepuscularity.

Build

bun run build

Load dist/unpacked/ as an unpacked extension in chrome://extensions. Set CREPUS_BIN=/path/to/crepus for the benchmark script if you want a different CLI binary. For Firefox output, run crepus webext build --app . --browser firefox and load dist/firefox/manifest.json in about:debugging#/runtime/this-firefox.

The web-extension build uses the workspace release profile:

SettingValue
opt-levels
ltotrue
codegen-units1
striptrue

Benchmark

bun run benchmark

The benchmark builds dist/unpacked, launches fresh Chrome for Testing profiles, and compares user-facing browser-action TTAs between rs_vimium and Vimium on a deterministic local page. Set CHROME_BIN to choose a browser binary. Set VIMIUM_PATH to compare against a Vimium checkout, or pass --skip-vimium.

Latest local run:

FieldValue
Date2026-07-05T10:24:32.757Z
BrowserGoogle Chrome for Testing 148.0.7778.96
MachineMac17,9, Apple M5 Pro, arm64
CPU cores15 physical, 15 logical
Memory48 GiB
OSmacOS 27.0 (26A5368g)
Samples8 measured, 2 warmup
Page size160 links, 160 buttons
rs_vimium1.2.4
Vimiumnot run

Browser-action TTA measures from key dispatch to observable scroll or DOM state.

Actionrs_vimium medianrs_vimium p90Vimium medianVimium p90
j scroll2.5 ms6.8 msn/an/a
f link hints11.0 ms14.8 msn/an/a
o vomnibar2.4 ms4.5 msn/an/a
? help8.3 ms12.9 msn/an/a
/ find3.1 ms5.5 msn/an/a

Layout

PathRole
crepus.tomlExtension manifest (capabilities, content scripts, pages)
runtime/Rust/WASM (popup_main, content_main, options_main, new_tab_main)
pages/Extension pages (.crepus → HTML at build time)
views/ui.crepusIn-page UI templates (hints, vomnibar, find bar, help overlay)
src/content.css.crepusContent-script styles (compiled to src/content.css)
resources/tlds.txtTLD list for URL detection
icons/Toolbar and extension icons

New tab page

With default settings, rs_vimium overrides the browser new-tab page (chrome_url_overrides.newtabpages/new-tab.html). Change this under Options → New tab page.

License

MPL-2.0 — see LICENSE.