A GPU-accelerated terminal workspace manager for Linux, powered by Ghostty's rendering engine. A special thanks to the cmux contributors who inspired this build.
If you are on Mac, please visit https://github.com/manaflow-ai/cmux to download the original.
952_1080x60_shots_so.mp4
- GPU-rendered terminals via embedded Ghostty (OpenGL)
- Workspaces with folder-based naming, persistence across restarts, and sidebar management
- Split panes (horizontal/vertical) with keyboard navigation
- Tabbed terminals within each pane
- Built-in browser (WebKitGTK)
- Right-click context menu with copy, paste, split, clear
- Drag-and-drop workspace reordering with favorites/pinning
- Animated sidebar collapse/expand
Download the latest release from GitHub Releases.
Debian/Ubuntu (.deb) — recommended:
sudo dpkg -i ./limux_0.1.19_amd64.debAppImage — portable across Ubuntu 24.04-era desktops and newer, no install needed:
chmod +x Limux-0.1.19-x86_64.AppImage
./Limux-0.1.19-x86_64.AppImageRelease AppImages are built and checked on the Ubuntu 24.04 GLIBC_2.39
floor. Limux still uses the host GTK4, libadwaita, and WebKitGTK runtime
libraries, so older distributions may need the .deb, tarball, or a source
build with matching system packages instead.
Tarball — manual install:
tar xzf limux-*-linux-x86_64.tar.gz
cd limux-*-linux-x86_64
sudo ./install.shArch Linux (unofficial AUR package) — community-maintained by antonbarchukov:
yay -S limux-binThe AUR package is available at limux-bin. Thanks to antonbarchukov for packaging Limux for Arch users. Arch packaging is not currently maintained by upstream; please report AUR packaging issues to the package maintainer first. See issue #5.
To uninstall:
# deb
sudo apt remove limux
# tarball
sudo ./install.sh --uninstall# Ubuntu/Debian
sudo apt install libgtk-4-1 libadwaita-1-0 libwebkitgtk-6.0-4- Rust toolchain (stable)
- Zig
- GTK4, libadwaita, WebKitGTK dev packages
- Initialized Ghostty submodule
# Install dev dependencies (Ubuntu/Debian)
sudo apt install libgtk-4-dev libadwaita-1-dev libwebkitgtk-6.0-dev pkg-config build-essential
# Initialize the Ghostty submodule and build the embedded library
git submodule update --init --recursive
(cd ghostty && zig build -Dapp-runtime=none -Doptimize=ReleaseFast)
# Build limux
cargo build --release
# Run (point to libghostty.so location)
LD_LIBRARY_PATH=../ghostty/zig-out/lib:$LD_LIBRARY_PATH ./target/release/limux./scripts/package.shThis builds the binary, bundles libghostty.so, icons, and an install script into a tarball.
package.sh also rebuilds libghostty.so with ReleaseFast and -Dcpu=baseline, so Zig and the initialized Ghostty submodule must be present.
Run the canonical local quality gate before committing:
./scripts/check.shRepository maintainability rules live in docs/maintainability.md.
Limux ships first-class hooks for coding agents (Codex, Claude Code, and
Gemini CLI). Every terminal limux spawns auto-exports
LIMUX_WORKSPACE_ID / LIMUX_SURFACE_ID / LIMUX_PANE_ID /
LIMUX_TAB_ID / LIMUX_SOCKET, so the CLI auto-targets the right place
with no flags needed from inside the agent's own terminal.
# Fire a libadwaita toast + sidebar unread badge from any agent
limux notify --subtitle "needs review" --body "blocked on auth choice" "Input needed"
# Install Limux session-restore hooks for supported agents
limux hooks setup
# Drop-in hook handlers translate hook JSON on stdin into notify/session state
echo '{"event":"stop"}' | limux claude-hook --event stop
echo '{"event":"finished"}' | limux gemini-hook --event finished
# Spin up a multi-agent collaboration team — one workspace per agent,
# launches each agent's CLI, and writes AGENTS.md describing the
# <agent-msg> XML protocol so peers can talk to each other:
limux agent-team --agents codex,claude --cwd "$PWD"
# → Codex and Claude can now do:
# limux send --workspace claude $'<agent-msg from="codex" to="claude" id="…" ts="…">…</agent-msg>\n'
# Or split the current agent's pane and launch another terminal agent.
# Inside Limux, workspace/surface/pane default from LIMUX_*:
limux new-pane --direction right --command claude
# Live GTK self-spawn currently supports terminal panes only.
# Explicit source targets are also accepted and serialized unchanged:
limux new-pane --workspace "$LIMUX_WORKSPACE_ID" --surface "$LIMUX_SURFACE_ID" \
--pane "$LIMUX_PANE_ID" --direction down --command "codex"
# Keep both agents in the same workspace on separate splits/tabs:
limux identify --json
limux list-panels --workspace "$LIMUX_WORKSPACE_ID"
limux send --workspace "$LIMUX_WORKSPACE_ID" --surface "<peer-surface-id>" \
$'<agent-msg from="codex" to="claude" id="…" ts="…">…</agent-msg>\n'See the auto-generated AGENTS.md (written into the shared cwd) for
the full protocol spec, peer table, and editable Policies section.
Checked-in hook templates live in hooks/. They mirror
limux hooks setup for Codex, Claude Code, and Gemini CLI; OpenCode is
omitted until its hook integration is ready.
Coding agents working on limux itself should read AGENTS.md
and CLAUDE.md in the repo root — those cover the build
loop, crate map, and the feat/cmux-parity roadmap tracked in
docs/cmux-parity-plan.md.
Most default shortcuts use Ctrl. Fullscreen defaults to F11. Custom remaps may also use Cmd, which Limux maps to either the Linux Meta or Super modifier. Opt maps to Alt.
| Shortcut | Action |
|---|---|
Ctrl+Q |
Quit Limux |
Ctrl+Alt+N |
Open a new Limux instance |
F11 |
Toggle fullscreen |
| Shortcut | Action |
|---|---|
Ctrl+Shift+L |
Open the focused browser page in a new split |
Ctrl+L |
Focus browser address bar |
Ctrl+[ |
Browser back |
Ctrl+] |
Browser forward |
Ctrl+R |
Browser reload |
Ctrl+Alt+I |
Open Web Inspector |
Ctrl+Alt+C |
Open Web Inspector (console-only targeting is not exposed by WebKitGTK) |
| Shortcut | Action |
|---|---|
Ctrl+F |
Open find on the focused terminal or browser |
Ctrl+G |
Find next |
Ctrl+Shift+G |
Find previous |
Ctrl+Shift+F |
Hide find |
Ctrl+E |
Use selection for find |
| Shortcut | Action |
|---|---|
Ctrl+K |
Clear scrollback |
Ctrl+Shift+C |
Copy selection |
Ctrl+Shift+V |
Paste |
Ctrl++ |
Increase font size |
Ctrl+- |
Decrease font size |
Ctrl+Shift+0 |
Reset font size |
| Shortcut | Action |
|---|---|
Ctrl+Shift+N |
New workspace (folder picker) |
Ctrl+Shift+W |
Close workspace |
Ctrl+Shift+Left/Right |
Cycle tabs in focused pane |
Ctrl+Shift+D |
Split down |
Ctrl+Shift+T |
New terminal tab in the focused pane |
Ctrl+D |
Split right |
Ctrl+W |
Close focused pane |
Ctrl+Shift+Z |
Toggle focused pane zoom |
Ctrl+M |
Toggle sidebar |
Ctrl+Shift+M |
Toggle top bar |
Ctrl+T |
New terminal tab |
Ctrl+Arrow |
Focus pane in direction |
Ctrl+PageDown/Up |
Next or previous workspace |
Ctrl+1-9 |
Switch to workspace by number |
rust/
limux-host-linux/ # GTK4/Adwaita UI (window, sidebar, panes, tabs)
limux-ghostty-sys/ # FFI bindings to libghostty
limux-core/ # Command dispatcher and state engine
limux-protocol/ # Socket wire format types
limux-control/ # Unix socket server
limux-cli/ # CLI client
The terminal rendering is handled entirely by Ghostty's embedded library (libghostty.so), which provides GPU-accelerated OpenGL rendering. The UI layer is native GTK4 with libadwaita.
MIT