Skip to content

Repository files navigation

FireLeash

A leash of Firefoxes. FireLeash is a Firefox-first tiling browser shell for Windows: every pane is a real Firefox window, reparented into one frame and tiled side by side in switchable workspaces.

Not a Chromium webview pretending to be a browser — actual Firefox, with your real profile, logins, extensions, and rendering. FireLeash is just the hood that holds a leash of them.

A leash of foxes is three. This is a leash of Firefoxes.

📖 Full write-up / field manual: https://douglasknoll.com/fireleash.html 🌐 Site: https://fireleash.com

What it does

  • Real Firefox panes — each pane is a genuine top-level Firefox window, embedded as an owned child of the FireLeash frame (Win32 owned-window embedding, not a blanked WS_CHILD). Resize the frame or drag a divider and the Firefox windows track it.
  • Shared login, once — a one-time import copies your existing Firefox profile (cookies, logins, extensions) into FireLeash's managed profile. Every pane runs as a window of one shared Firefox process on one profile, so you're signed in everywhere from the first launch — no per-pane re-auth.
  • One omnibox, the right pane — FireLeash owns the address bar (back / forward / reload / navigate). A per-window control channel (a local 127.0.0.1 WebSocket + an in-profile autoconfig script) lets the omnibox drive the exact focused pane by its native window handle. Firefox's own toolbar is hidden by default for a single clean chrome; the button reveals it on demand when you need bookmarks, extensions, or Firefox settings.
  • Workspaces — named groups of panes in resizable rows, with reorder, swap, and collapse/expand. Switching workspaces hides windows instead of destroying them, so coming back doesn't reload or re-authenticate.
  • Lazy panes — a blank pane costs nothing; Firefox launches only when the pane first navigates. New tabs feature the FireLeash mark split across the empty panes until you fill them.
  • Address-bar suggestions — optional, consent-gated autocomplete from your existing browser history and bookmarks (Firefox / Chrome / Edge / Brave), read only on this computer. Nothing is uploaded or sent anywhere.

Quick start

npm install
npm start

Build the Windows installer:

npm run dist        # -> dist/FireLeash-Setup-<version>.exe (NSIS, per-user)

Requires a local install of Mozilla Firefox (FireLeash drives it; it doesn't bundle it).

Configure

Workspaces and panes live in a JSON config. config.default.json is the empty seed; your live config is stored in Electron's userData directory and edited through the in-app settings (gear icon) — add sites, name workspaces, set split fractions, and manage per-site CSS/JS and suggestions.

Architecture

Electron 31 hosts a thin frame — titlebar, workspace tabs, omnibox — but renders no web content itself. Each pane is a real Firefox window launched against a shared FireLeash-managed profile and reparented under the frame via Win32 (SetWindowLongPtr/SetWindowPos through koffi FFI). A local WebSocket control server pairs each window with the FireLeash chrome so navigation, history, and chrome-toggle commands reach the correct window by its nsIBaseWindow native handle.

Windows-only (the embedding is Win32-specific). See FIELD-MANUAL.html for the full design story, gotcha ledger, and the approaches that failed on the way here.

Notes

Personal-use project, built around a specific workflow rather than as a general-purpose product — but issues and forks are welcome.


Built by Douglas Knoll, with Claude. The commit history documents the collaboration — including the wrong turns — openly.

License

MIT

About

A Firefox-first tiling browser shell for Windows — every pane is a real Firefox window, tiled. A leash of foxes is three; this is a leash of Firefoxes. Free & open source.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages