Skip to content

Repository files navigation

divvy

a split terminal you can divvy up — files · editor · AI agent · shell

English · Español

release stars forks issues last commit license platform shell built on zellij themes

A split terminal in the style of tmux/omarchy, built on zellij: a file explorer on the left, an editor in the center, an AI agent on the right, and a terminal at the bottom — all with the Dracula theme (plus 4 more swappable themes). It runs inside any true-color terminal, and can install + auto-theme one for you (Ghostty, WezTerm, kitty, Alacritty).

┌──────────────────────── tab-bar ────────────────────────┐
│    files      │      editor        │      agent          │
│   (yazi)      │   (nvim/helix/…)   │  (claude/agy/…)     │
├───────────────┴────────────────────┴─────────────────────┤
│   terminal                                                │
├──────────────────────── status-bar ─────────────────────┤

Press Enter on a file in yazi and it opens in the center editor, with focus jumping straight to that pane.


Requirements

Tool Role Required
zellij Multiplexer (splits the screen)
yazi File explorer (left pane)
nvim / helix / micro / vim Editor (center pane) at least one
an AI agent (CLI) Right pane — see Agents at least one
A true-color terminal See Terminals — optional install/theming recommended
JetBrainsMono Nerd Font Icons in yazi/lualine manual (how)

Terminal: divvy runs inside zellij, so it works in any terminal — but for the themes to look right you need true color. Apple Terminal only gives 256 colors. divvy can install and auto-theme Ghostty / WezTerm / kitty / Alacritty for you (see Terminals).


Installation

git clone https://github.com/jairyara/divvy ~/divvy
cd ~/divvy
./install.sh          # guided: you pick what to install (not everything)

The installer is interactive: the core (zellij + yazi) is required, and you choose editors, terminals, and agents with checkbox menus (space to toggle, ↑/↓ to move, Enter to confirm). It detects what's already installed and skips it. The Nerd Font is a manual step — the installer prints how at the end (see Nerd Font).

It tries your system package manager first — brew (macOS/Linux), apt, dnf, pacman, zypper, or apk. If a tool isn't packaged for your system, it downloads the official prebuilt binary into ~/.local/bin, so you never have to install things by hand.

No prompts (flags):

./install.sh --minimal                 # core + nvim, nothing else
./install.sh --all                     # everything
./install.sh --editors "helix nvim" --terminals "ghostty kitty" --agents "codex" --yes
./install.sh --dry-run                 # show what it would do, without installing
BINDIR=/usr/local/bin ./install.sh     # change where the symlinks go
Flag What it does
--minimal core + nvim only
--all editors, all terminals, and agents
--editors "..." list of editors (nvim helix micro vim)
--terminals "..." terminals to install/theme (ghostty wezterm kitty alacritty)
--agents "..." agents to install (codex opencode aider goose agy)
--keifu / --no-keifu install (or skip) keifu, the Alt+g git graph modal (on by default)
--yes no confirmation · --dry-run simulates

Usage

divvy                              # nvim + claude (defaults)
divvy -e helix -a agy             # helix + antigravity
divvy --editor micro --agent claude
divvy --theme nord                 # set theme and launch
divvy --list                       # show editors, agents, and themes
divvy --help

nvim is the default editor: it runs as a server, so every file you open from yazi piles up as a tab (bufferline). It ships with LSP and doesn't clash with zellij (:w to save, :q to close). helix/micro/vim open one file at a time (no socket) → -e helix.

Flags

Flag Values Default
-e, --editor nvim · helix · micro · vim nvim
-a, --agent any command (see Agents) claude
-t, --theme dracula · catppuccin · tokyonight · gruvbox · nord
--dry-run generate the layout and print it (don't launch)
-l, --list / -h, --help

Themes

They change the whole stack at once (zellij + ghostty + helix + micro + nvim):

divvy-theme nord          # just change the theme
divvy --theme nord        # change and launch

Themes: dracula · catppuccin · tokyonight · gruvbox · nord.

After changing the theme: relaunch divvy (zellij/editors). Terminals update too: Ghostty Cmd+Shift+R · WezTerm / kitty / Alacritty reload automatically.


Terminals

divvy runs inside zellij, so it works in any true-color terminal — you don't have to install a new one. If you want, the installer can set one up and divvy-theme will keep it in sync with the rest of the stack:

Terminal Auto-install Auto-theme Notes
Ghostty Recommended. Built-in themes; reload with Cmd+Shift+R.
WezTerm Built-in color schemes; live reload.
kitty Bundled theme files; reloads on SIGUSR1.
Alacritty Bundled theme files; live config reload.
any other (WezTerm-less) Works fine; just won't be auto-themed.

divvy never overwrites an existing terminal config — it only writes a starter config when none exists, and divvy-theme rewrites just the theme line/file.

./install.sh --terminals "ghostty wezterm kitty alacritty"

Nerd Font (manual)

Icons in yazi and the status line need a Nerd Font. Install one yourself (divvy's terminal configs already point to JetBrainsMono Nerd Font):

# macOS
brew install --cask font-jetbrains-mono-nerd-font

# Linux — download + install manually
curl -fLO https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
unzip JetBrainsMono.zip -d ~/.local/share/fonts && fc-cache -f

Then select JetBrainsMono Nerd Font in your terminal's font settings. Without it, icons show as boxes (everything else still works).


Agents

The right pane runs any command you pass with -a, so you can use whichever agent you prefer (and pay for). Suggested ones:

Agent -a Install
Claude Code claude npm i -g @anthropic-ai/claude-code · curl -fsSL https://claude.ai/install.sh | sh
OpenAI Codex codex brew install --cask codex · npm i -g @openai/codex
opencode opencode brew install opencode · npm i -g opencode-ai
aider aider brew install aider · pipx install aider-chat
goose goose brew install block-goose-cli
Antigravity agy curl -fsSL https://antigravity.google/cli/install.sh | sh
divvy -a codex          # OpenAI Codex
divvy -a agy            # Antigravity
divvy -a my-agent       # any command of yours

If the command isn't installed, divvy warns you and the pane shows the error (it doesn't break the rest).

Git graph modal (Alt+g)

Press Alt+g anywhere in divvy to pop open keifu — a git commit-graph TUI — in a floating pane, like a modal you open to consult history and then dismiss. It runs in the repo you launched divvy from, so you see that project's tree without leaving your editor. Quit keifu with q or Esc and the floating pane closes.

keifu is optional (the installer asks; on by default). If it isn't installed, Alt+g shows a short note on how to get it. Install it any time:

brew install trasta298/tap/keifu     # macOS
cargo install keifu                  # any platform
./install.sh --keifu                 # or re-run the installer (fetches a prebuilt binary)

keifu draws the graph with Unicode (no image protocol), so it works in the floating pane in any terminal. It's a viewer — it isn't tied to divvy-theme; branch colors are keifu's own. Tip: while it's open, zellij's Alt+f hides/shows floating panes without closing keifu.


Shortcuts (zellij)

Action Key
Jump to a specific pane Alt + 1 files · 2 editor · 3 agent · 4 terminal (recommended)
Git graph modal Alt + g — opens keifu floating; q/Esc closes it
Zen / maximize focused pane Alt + z — fullscreen the focused pane, hide the rest; Alt + z again restores
Move between panes Alt + arrows · Alt + h/j/k/l
Fullscreen the pane Ctrl pf
New tab Ctrl tn · switch: Ctrl t → arrows
Scroll mode (see old output) Ctrl s (exit with Esc)
Resize pane Ctrl n → arrows
Quit Ctrl q

In yazi (left pane): ↑/↓ navigate, enter, go up, Enter open in the editor.


How it works

Script Role
divvy Reads the flags → generates .runtime/layout.kdl → launches zellij
divvy-edit Runs the center editor
divvy-open What yazi calls on Enter (sends the file to the editor)
divvy-theme Changes the theme across all tools
divvy-git Launches keifu (the Alt+g git graph modal); tells you how to install it if missing

yazi → editor integration:

  • nvim: starts as a server (--listen); yazi sends files over a socket → they open as buffers, live. The smoothest one. Includes LSP (completion, go-to-definition, diagnostics via mason) + treesitter + theme.
  • helix / micro / vim: no socket; yazi sends the path over a FIFO. You open a file and edit it; to open another one from yazi, close the current one first. (helix ships with built-in LSP.)

Only text/code goes to the editor; images, PDFs, and video open with the system app. Sockets/FIFOs are named per zellij session, so you can run several divvy windows at once without them stepping on each other.

Git status in yazi

The file explorer shows each file's git status as a colored letter next to its name (via the official git.yazi plugin, bundled in yazi/plugins/):

Mark Meaning Color
? new / untracked green
A added (staged) green
M modified yellow
D deleted red
U updated / conflict red

Directories bubble up the status of what's inside them. Tweak the colors/letters in yazi/theme.toml ([git] section).

Shortcuts in nvim (the default editor)

Action Key
Next / previous tab Tab / Shift+Tab
Close tab :q or <leader>x (leader = space) — does not close nvim
Save and close tab :wq
Quit nvim entirely :qa (or :q! to force)
Go to definition / references gd / gr
Documentation K
Rename / code action <leader>rn / <leader>ca
Jump between errors [d / ]d
Completion Ctrl-space (accept with Ctrl-y)
Next / previous git change ]h / [h
Preview a change <leader>hp
Revert a change (hunk) <leader>hr
Revert all changes in the file <leader>hR
Who changed this line (blame) <leader>hb

Git changes in the editor: modified/added/deleted lines are marked in the gutter (via gitsigns in nvim), so you can review a diff at a glance and revert a hunk with <leader>hr — handy before committing. helix and micro show the diff gutter too (built-in), and vim gets it via a small native sign script (no plugins). Reverting a hunk is nvim-only.

Configs (all inside the project, they don't touch your ~/.config): .config/nvim/init.lua · helix/config.toml · micro/settings.json · vim/vimrc · yazi/{yazi.toml,init.lua,theme.toml}.


Portability

OS Status
macOS
Linux ✅ (installer and symlink path change; the script adapts itself)
Windows ⚠️ only via WSL2 (zellij/Ghostty aren't native to Windows)

Common issues

  • divvy: command not found (or a tool "installed but not on PATH"): ~/.local/bin isn't on your PATH for this shell yet. The installer adds it to your shell rc, so it works in new terminals. To enable it in the current one, run source ~/.zshrc (or ~/.bashrc), or add this line to your shell config by hand:
    export PATH="$HOME/.local/bin:$PATH"
  • Weird colors: your terminal lacks true color → use Ghostty/WezTerm/Alacritty.
  • Alt+arrows don't move focus: in Apple Terminal enable "Use Option as Meta"; in Ghostty it's already on (macos-option-as-alt).
  • Ctrl+1..4 doesn't jump panes: most terminals don't send Ctrl+number uniquely (Ctrl+2=NUL, Ctrl+3=ESC…). Use Alt+1..4, which is reliable.
  • A file opened from yazi doesn't show up / yazi "hangs" on Enter: this was a modal nvim prompt (swap file or "Press ENTER") freezing the server. It's mitigated now; if it comes back, run divvy-clean and relaunch divvy.
  • Icons show as boxes: install a Nerd Font and select it in your terminal.
  • The agent pane shows an error: that agent isn't installed (opencode isn't there by default).
  • micro: Ctrl+S/Ctrl+Q don't work (zellij captures them: search and quit). Before editing, press Ctrl+g (locks zellij → all keys go to micro), save/close normally, then Ctrl+g again to navigate.

Changelog

See CHANGELOG.md (Español) for the version history.


Contributors

Thanks to everyone who helps make divvy better!

divvy contributors

Want to help? See CONTRIBUTING.md.


License

MIT © 2026 Jair Yara

About

A split terminal in the style of tmux/omarchy, built on zellij: a file explorer on the left, an editor in the center, an AI agent on the right, and a terminal at the bottom — all with the Dracula theme (plus 4 more swappable themes).

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages