Skip to content
Ajinkyasp99Public

About

Native Linux terminal for AI coding agents (Claude Code, Codex, Gemini CLI): workspaces, split panes and notifications when an agent needs you. A cmux alternative for Ubuntu/Debian, built with Rust + GTK4.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

32 Commits

Folders and files

Repository files navigation

oxishell icon

oxishell

The terminal for AI coding agents on Linux. Run Claude Code, Codex and Gemini CLI side by side, and get notified the moment one needs you.

Workspaces in a sidebar · split panes · agent notifications · 41 Warp themes · Ubuntu, Debian, X11 and Wayland

CI Release Downloads Stars License: GPL-3.0-or-later Platform: Linux

oxishell terminal on Ubuntu Linux: three workspaces in the sidebar with git branch and ports, split panes, a Claude Code 'needs input' notification badge, and Codex and Claude usage limits at the bottom of the sidebar

oxishell is a free, open-source terminal app for Ubuntu, Debian and other Linux desktops, made for developers who run several AI coding agents and dev servers at once. It is a cmux alternative for Linux: it brings the workflow of cmux (macOS only) to Linux as a real native app, written in Rust + GTK4/libadwaita, with terminals rendered by VTE, the engine behind GNOME Terminal. No Electron, no browser, no web terminal.

Install on Ubuntu 24.04 / Debian 13 in one line (details):

wget -qO /tmp/oxishell.deb https://github.com/Ajinkyasp99/oxishell/releases/latest/download/oxishell_amd64.deb && sudo apt install /tmp/oxishell.deb

Why oxishell

When you run Claude Code, Codex or Gemini in several terminals, you keep checking each one to see whether it finished or is waiting for you. oxishell keeps every project in its own workspace, shows each one's git branch, open ports and agent status in a sidebar, and lights up the pane the moment an agent needs input.

Features

🗂 Workspaces Vertical sidebar with git branch, uncommitted-change count, working directory, listening ports, agent status and unread badges. Background workspaces keep running. Drag to reorder, double-click to rename, ✕ to close (asks first).
⊞ Split panes Split right or down, nest them, drag dividers, move focus with Alt+arrows. Each pane is an independent shell.
🔔 Agent notifications Hooks for Claude Code, Codex, Gemini CLI, Qoder, OpenCode. A blue ring on the pane, a badge on the workspace, a system notification with sound (stays on screen while an agent waits for input; click it to jump to the pane), and Ctrl+Shift+U jumps to it. Long shell commands notify when they finish in a pane you are not watching.
📊 Agent limits Open Codex and Claude Code sessions show 5-hour and weekly usage percentages, progress bars and local reset dates/times in AM/PM format at the bottom of the sidebar. Uses local CLI data.
🎨 Warp themes 41 built-in themes from Warp, including gradients. They colour the whole window, not just the text. Drop any Warp .yaml theme in to add your own.
💡 Command suggestions As you type, the newest matching command from your bash/zsh/fish history appears dimmed after the cursor. → accepts it. Ctrl+Shift+H searches your whole history.
🏷 Context chips Warp-style chips above each terminal: active Python venv/conda env, folder, git branch and changes. The prompt becomes a clean ❯ (red after a failed command).
🧱 Command blocks Warp-style: every command gets a header with its folder, git branch, ✓/✗ exit status and run time. Failed commands get a red edge. Commands you type are highlighted so they stand out from output.
🔗 Clickable links URLs in any output (agents, builds, logs) are clickable. A click opens a small popup with Open Link and Copy Link; Ctrl+click opens the link straight away.
▮ Cursor Block, vertical line or horizontal line, blinking or steady.
⌘ Command palette Ctrl+Shift+P: every action, workspace, theme and your own project commands, with fuzzy search.
🤖 Scriptable The oxi CLI controls the running app over a private local socket: create workspaces, split, read output, send notifications.
💾 Sessions Workspaces, layouts, directories and agent sessions come back after a restart, each terminal clean at the top. Commands are never re-run.
🐧 Native GTK4, X11 and Wayland, light/dark aware, ~180 ms startup, ~1 % idle CPU with 20 panes (measured).

Install on Ubuntu and Debian

Requirements

Minimum Ubuntu 24.04 package (installed automatically by the .deb)
OS Ubuntu 24.04+ or Debian 13+, X11 or Wayland —
GTK 4.12 libgtk-4-1
libadwaita 1.5 libadwaita-1-0
VTE for GTK 4 0.76 libvte-2.91-gtk4-0
git (optional) any git (branch and changes in the sidebar)

Check what your system offers before installing (each version must be at least the minimum above):

lsb_release -ds                     # e.g. Ubuntu 24.04.1 LTS
for p in libgtk-4-1 libadwaita-1-0 libvte-2.91-gtk4-0; do
  printf '%-20s %s\n' "$p" "$(apt-cache policy "$p" | awk '/Candidate/ {print $2}')"
done

On Ubuntu 24.04 this prints GTK 4.14, libadwaita 1.5 and VTE 0.76. If a line shows (none), run sudo apt update first; if it is still missing, your release is too old.

Ubuntu / Debian .deb package (recommended)

On a fresh Ubuntu install:

sudo apt update
sudo apt install -y wget ca-certificates git
wget https://github.com/Ajinkyasp99/oxishell/releases/latest/download/oxishell_amd64.deb
sudo apt install ./oxishell_amd64.deb     # pulls in GTK 4, libadwaita and VTE automatically

Then open oxishell from your app menu, or run oxishell. The oxi command-line tool is installed too.

apt may print N: Download is performed unsandboxed as root… when the file is in your home folder. That note is harmless.

Notification sounds use the system sound theme (sound-theme-freedesktop, preinstalled on Ubuntu). On desktops whose notification server cannot play sounds itself (not GNOME or KDE), also install sudo apt install gnome-session-canberra so oxishell can play them.

Build from source (Ubuntu, Fedora, Arch)

On a fresh Ubuntu 24.04:

# 1. Build tools and development headers
sudo apt update
sudo apt install -y build-essential pkg-config git curl \
    libgtk-4-dev libadwaita-1-dev libvte-2.91-gtk4-dev

# 2. Rust 1.87 or newer. Ubuntu's own rustc (1.75) is too old, so use rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
. "$HOME/.cargo/env"
rustc --version                    # must print 1.87 or newer

# 3. Build and run
git clone https://github.com/Ajinkyasp99/oxishell.git
cd oxishell
cargo build --release
./target/release/oxishell

To install your build system-wide (app menu entry, oxi on PATH), turn it into a package:

sudo apt install -y dpkg-dev
scripts/build-deb.sh                                     # writes dist/oxishell_<version>_<arch>.deb
sudo apt install --reinstall ./dist/oxishell_*.deb

On Fedora (gtk4-devel libadwaita-devel vte291-gtk4-devel) or Arch (gtk4 libadwaita vte4), install the equivalent packages. These distros haven't been tested yet; reports are welcome. Full guide, including uninstalling: docs/INSTALL.md.

Update

Your settings, themes, workspaces and agent hooks are kept across updates. Close oxishell first (or restart it afterwards); workspaces come back on the next start.

Installed from the .deb: download the latest release and install it over the old one.

oxi --version                       # the version you have now
wget -O oxishell_amd64.deb https://github.com/Ajinkyasp99/oxishell/releases/latest/download/oxishell_amd64.deb
sudo apt install ./oxishell_amd64.deb
oxi --version                       # the new version

Built from source:

cd oxishell
git pull
cargo build --release                                    # run ./target/release/oxishell, or:
scripts/build-deb.sh && sudo apt install --reinstall ./dist/oxishell_*.deb

--reinstall matters here: a local build keeps the version number, and without it apt says already the newest version and skips the install.

Quick start

  1. Open a workspace per project: Ctrl+Shift+N, then rename it with a double-click.
  2. Split: Ctrl+Shift+E (right) and Ctrl+Shift+O (down). Start your dev server in one pane and an agent in another.
  3. Turn on agent notifications (one time): Ctrl+, → Notifications → Agent Hooks, and switch on your agents. Or from a terminal:
    oxi hooks install --all     # sets up every supported agent found on your PATH
  4. Pick a theme: Ctrl+, → Appearance (→ Browse all themes for the full list with search), or Ctrl+Shift+P and type theme.

When an agent finishes or asks for permission, its workspace gets a badge. Press Ctrl+Shift+U to jump straight to it.

Command palette searching themes
Command palette: actions, workspaces, themes, custom commands
Notifications panel with a Claude Code permission request
Notifications: which agent needs you, and where
Settings, Notifications page: Agent Hooks with Claude Code and Codex switched on
Agent hooks: one switch per agent in Settings → Notifications
Command palette listing Resume Codex session and Resume Claude Code session after a restart
Sessions: after a restart, resume agent sessions from the palette or pane menu

Suggestions and context chips

Inline suggestion: typing git ch shows eckout -b feature/chips dimmed; chips show CommonVenv, ~/projects/proj, main
Type git ch → the rest comes from your history; press → to accept
Command history search popup
Ctrl+Shift+H: search history. Enter puts it on the prompt, Ctrl+Enter runs it

Suggestions only appear when you're at a shell prompt (never inside vim, Python and so on), and only while oxishell can follow your typing exactly (after Tab, arrow keys or paste they pause until the next line). The environment chip works automatically in bash; for zsh/fish add one line: oxi shell-integration zsh >> ~/.zshrc (or fish >> ~/.config/fish/config.fish). Both features can be turned off in Settings.

Because the chips already show where you are, panes use a compact ❯ prompt (green, red after a failed command) instead of user@host:~/path$. This only applies inside oxishell; your ~/.bashrc, other terminals and SSH sessions keep their own prompt. Turn it off in Settings → Compact prompt.

Command blocks and clickable links

Command blocks: each oxi command has a header with folder, branch, exit status and duration; a refused oxi pane close shows a red block with exit 1
Command blocks: folder, branch, ✓/✗ and run time for every command. Shown here with the oxi CLI
Clicking a pull request URL in agent output opens a popup with Open Link and Copy Link
Links: click any URL for Open / Copy; Ctrl+click opens it directly

Each command you run at the prompt becomes a block: a thin separator, then a header with the folder and git branch it ran in and, once it ends, ✓ or ✗ with the exit code and how long it took. Failed blocks get a red edge, so a failing build is easy to spot when you scroll back. Turn blocks off in Settings → Terminal → Command blocks.

Links work in everything that prints a URL: agent replies, test runners, git push output, logs. Clicking one opens a small popup showing the full address with Open Link (default browser) and Copy Link. Ctrl+click skips the popup, and right-clicking a link puts the same two actions at the top of the context menu. Dragging or double-clicking to select text never opens anything.

Themes

Every theme colours the whole window (background, sidebar, header, badges, focus rings and the terminal), just like in Warp. Gradient themes such as Cyber Wave and Willow Dream paint behind the terminal too.

Six themes: Warp Dark, Cyber Wave, Willow Dream, Catppuccin, Synthwave 84, GitHub Light

Built in: Warp Dark/Light, Cyber Wave, Willow Dream, Dark City, Fancy Dracula, Jellyfish, Koi, Leafy, Marble, Pink City, Red Rock, Snowy, Paper Botanical, Dracula, Catppuccin, Nord, Tokyo Night, One Dark, GitHub Dark/Light, Gruvbox, Solarized, Monokai Pro, Night Owl, Synthwave 84, Ayu, Everforest, Kanagawa, Material, Cobalt 2, Outrun, Shades of Purple, Poimandres, Vitesse, Palenight, and more.

Add your own: put any Warp theme file into ~/.config/oxishell/themes/. It shows up in the gallery right away, background images included. See docs/THEMES.md.

Theme gallery in Settings

Keyboard shortcuts

Action Shortcut
New / close / rename workspace Ctrl+Shift+N / Q / R
Next / previous workspace Ctrl+PgDn / Ctrl+PgUp, or Alt+1…9
Split right / down Ctrl+Shift+E / O
Close pane Ctrl+Shift+W
Move focus Alt+←→↑↓
Command palette Ctrl+Shift+P
New line in a prompt (without sending) Shift+Enter or Ctrl+Enter
Copy / paste Ctrl+Shift+C / V
Search scrollback Ctrl+Shift+F
Accept suggestion → or End
Search command history Ctrl+Shift+H
Jump to latest unread Ctrl+Shift+U
Notifications panel Ctrl+Shift+I
Toggle sidebar Ctrl+Shift+B
Font size Ctrl+= / Ctrl+- / Ctrl+0
Font zoom alternatives Ctrl++ / keypad + or -; hold Ctrl and scroll up/down over a terminal
Settings Ctrl+,

New line in a prompt works in Claude Code, Codex, Gemini CLI and OpenCode (sent as Ctrl+J), and at a bash, zsh or fish prompt, where Enter then runs all the lines. Other programs (vim, REPLs) get the key unchanged.

All shortcuts can be changed in Settings → Shortcuts. Right-click a workspace or a terminal for more actions.

The default terminal typeface is Hack, bundled with regular, bold, italic and bold-italic faces from Warp's font assets. Existing Monospace 11 defaults switch to Hack 11; other configured fonts are preserved. Zoom applies to all panes, and Ctrl+0 returns to the configured font size.

Command line

oxi workspace new --name api --cwd ~/src/api   # new workspace
oxi pane split --direction down                # split the current pane
oxi notify -t "Deploy done" -b "prod is green" # ring this pane
oxi workspace list                             # see everything
oxi pane read --lines 50                       # last 50 lines of output

Use it from scripts, git hooks or your own agent tooling. Reference: docs/CLI.md.

Supported AI coding agents

Agent Running Needs input Finished
Claude Code ✓ ✓ ✓
Gemini CLI ✓ — ✓
OpenCode¹ ✓ ✓ ✓
Codex CLI² ✓ ✓ ✓
Qoder CLI — — ✓
Anything else oxi agent-event / oxi notify from your own scripts

¹ OpenCode support is implemented as a plugin but has not yet been tested against a live OpenCode. ² Codex requires a CLI with lifecycle hooks: run oxi hooks install codex, restart Codex, then review and trust the oxi hooks in /hooks. Needs input covers approval requests and request_user_input questions. Older Codex versions can still use the completion-only notify integration; see agent setup.

After a restart, sessions whose hooks reported a session id (Claude Code, Gemini, Qoder, and Codex when it sends a thread id) can be resumed from the pane menu or the palette.

oxishell only shows states that the agent's own hooks report; it never guesses. Hooks are silent no-ops outside oxishell, so installing them never breaks your agents. Details: docs/AGENTS.md.

Codex and Claude usage limits

When either agent is open in any workspace, a compact row appears below the workspace list, for example Codex 5h 21% Wk 4%. Both values show percentage used over horizontal usage fills. Small AM/PM reset times appear directly below each value, with the weekly date (and the 5-hour date when it is on another day). Hover for full reset details, or click the row to open usage bars and setup details. Unavailable limits show —. Rows disappear when the sessions close. Limits are account-wide snapshots, refreshed from data reported after agent responses; usage from other devices can lag until the CLI reports again.

Sidebar usage section with Codex and Claude rows; the Codex row is open, showing 5-hour and weekly limit bars with reset dates

Codex works automatically from local session logs (CODEX_HOME is respected). For Claude, run oxi hooks install claude once with the updated oxi binary, then restart Claude. This also installs a status-line bridge to forward Claude's quota data to oxishell. Any existing status-line command keeps its input, output and settings, and is restored by oxi hooks uninstall claude. A project-level statusLine override can take precedence over this user-level bridge.

Missing limits remain unavailable (including API-key sessions that do not report subscription quotas). Expired snapshots wait for updated data instead of assuming the allowance was replenished. No API keys, credentials or network requests are used by oxishell for this feature.

Comparison with cmux, tmux, Warp and GNOME Terminal

oxishell isn't trying to replace your favourite terminal. It's built for one job: keeping track of many agent and shell sessions on a Linux desktop.

  • cmux: oxishell is modelled on cmux's workflow. cmux is macOS only; oxishell is the Linux version (an independent implementation, no shared code).
  • tmux / Zellij: great for SSH and multiplexing inside one terminal. oxishell adds a GUI sidebar, desktop notifications and per-pane rings driven by the agents' own hooks. You can still run tmux inside a pane.
  • GNOME Terminal, Ptyxis, Tilix, Terminator: these use the same VTE engine as oxishell, so rendering and compatibility are the same. oxishell adds workspaces with git branch, ports and agent status, plus agent notifications and usage limits.
  • Warp: oxishell uses Warp's open-source themes and has Warp-style context chips and history suggestions. It is GPL free software that works fully offline, with no account and no telemetry.
  • Kitty, Alacritty, WezTerm, Ghostty: fast, highly configurable terminals. oxishell focuses on organising agent sessions rather than on rendering speed or configuration depth.

FAQ

Is there a cmux for Linux? Yes, that's what oxishell is: workspaces, split panes and agent notifications, as a native GTK4 app for Ubuntu, Debian and other Linux distributions.

How do I get a notification when Claude Code finishes or needs input on Linux? Run Claude Code inside oxishell and run oxi hooks install claude once. When Claude finishes or asks for permission, you get a desktop notification, a ring on the pane and a badge on the workspace. Codex, Gemini CLI, Qoder and OpenCode work the same way.

Does it work on Wayland? Yes, on both Wayland and X11.

Can I use Warp themes on Linux? Yes. 41 are built in, and any Warp .yaml theme you drop into ~/.config/oxishell/themes/ shows up right away.

Does it send my data anywhere? No. See Privacy & security.

Configuration

Everything is in Settings (Ctrl+,), saved to ~/.config/oxishell/config.toml:

[appearance]
theme = "cyber_wave"
font = "JetBrains Mono 12"

[[commands]]                 # appear in the command palette as "Run: …"
name = "Tests"
command = "cargo test"

All options: docs/CONFIGURATION.md.

Privacy & security

  • Everything stays on your machine. No accounts, telemetry, cloud or network listeners.
  • The control socket is private to your user (mode 0600, peer-uid checked).
  • Typing into panes from the CLI (oxi pane send) is off by default.
  • Restoring a session never re-runs commands; saved output is shown as plain text.

Report vulnerabilities privately: SECURITY.md.

Documentation

INSTALL · TROUBLESHOOTING installing, removing, fixing problems
CLI · CONFIGURATION · AGENTS · THEMES using it
ARCHITECTURE · TECH_STACK · PERFORMANCE how it works
ROADMAP · RELEASE_NOTES · PHASE_PROGRESS where it's going

Contributing

Bug reports, theme fixes and pull requests are welcome. See CONTRIBUTING.md for setup, tests and guidelines.

Credits & license

oxishell is free software under the GNU GPL v3.0 or later. See LICENSE.

About

Native Linux terminal for AI coding agents (Claude Code, Codex, Gemini CLI): workspaces, split panes and notifications when an agent needs you. A cmux alternative for Ubuntu/Debian, built with Rust + GTK4.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages