Guide

Terminal with Split Panes on macOS

Split panes turn one terminal window into a workspace. Good split-pane UX saves minutes every hour. This guide covers what to look for in 2026 — mosaic layouts, keyboard control, per-pane state — and how Onda's implementation compares to iTerm2, tmux, and Warp.

Horizontal, vertical, mosaic — the hierarchy

Basic terminals split horizontally or vertically once. Mosaic terminals split arbitrarily — any pane can split again, creating any 2D layout. Mosaic is strictly more expressive and is the modern default.

Horizontal + vertical splits alone force you into a grid. You cannot, for example, have one tall pane on the left and three stacked panes on the right without hacking layouts. Mosaic terminals treat the window as a binary tree of splits — any leaf can become a new split.

In practice this means you drag a divider, split a pane, then split one of its children. Layouts match how you think about the work, not how the tool happens to be wired.

Keyboard vs mouse — why you want both

tmux-style terminals lean keyboard-only. GUI terminals lean mouse-driven. The best modern split-pane UX supports both: Cmd+D to split, Cmd+arrow to focus, and mouse to resize dividers.

Pure keyboard is fast once memorized but punishes newcomers and one-off use cases. Pure mouse is discoverable but slow for common operations. Onda's defaults: Cmd+D vertical split, Cmd+Shift+D horizontal split, Cmd+arrow focus, Cmd+W close pane, mouse drag for resize.

Keyboard shortcuts are fully customizable via Settings > Keybindings. You can map to your muscle memory from iTerm2, Warp, or VS Code.

Per-pane state — cwd, shell, environment

Each pane should remember its working directory, shell, and environment independently. When you split, the new pane should inherit cwd (so you stay on the same project) but run its own shell.

Onda's split behavior: new pane inherits cwd and workspace environment, starts a fresh shell, gets a new terminal ID. If you close and reopen, the pane's cwd and last prompt are restored from session state.

This matters for multi-project workflows. Splitting in an Onda workspace for Project A always lands you in Project A's cwd, even if you tabbed away to Project B in between.

Splits + AI agents — a multiplier

When Claude Code or Cursor can call MCP tools to split panes themselves, split panes become an agent feature, not just a user feature. Onda's `onda_pane_split` lets AI orchestrate layouts programmatically.

Typical flow: ask Claude "set up a debug view" and it splits three panes — one for app logs, one for test runner, one for git status. You never touch the layout keys. When the session ends, the workspace remembers the layout for next time.

This is why split panes in 2026 matter more than they used to. They are the unit of work an agent shapes, not decoration.

Comparing split-pane implementations

Onda, tmux, iTerm2, and Warp all support splits but differ in flexibility, state persistence, and agent-friendliness. Here is the short version of who does what well.

tmux has the most powerful layout engine but requires config and keyboard grammar. iTerm2 has solid splits with Arrangements for saved layouts. Warp has splits with grid constraint. Onda has full mosaic, per-workspace persistence, and MCP-driven splits.

  • Onda — mosaic, workspace persistence, MCP-driven, mouse + keyboard
  • tmux — mosaic, session-persistent across disconnects, keyboard-only by default
  • iTerm2 — mosaic-ish via Arrangements, no MCP
  • Warp — grid-constrained splits, cloud-synced for teams, no open MCP

Practical tips for split-pane workflows

Three habits that compound: split by task not by shell, close panes aggressively, and save layouts as workspaces.

Split by task: one pane per concern (dev server, tests, REPL, logs). Do not let a pane accumulate three responsibilities.

Close aggressively: panes you are not reading are cost. Cmd+W takes a second. Clutter slows the agent's context window too.

Save layouts: if you recreate the same 4-pane setup daily, make it a workspace. Onda persists cwd, shell, and size per pane. Next time you open the workspace, the layout is already there.

Frequently asked questions

How do I split a pane in Onda?

Cmd+D for vertical split, Cmd+Shift+D for horizontal split. You can also right-click a pane for the Split menu, or ask an MCP-connected AI agent to call `onda_pane_split`. All three paths produce the same result.

How many panes can I have in one tab?

Technically unbounded, practically around 8-12 before readability suffers on a standard laptop screen. Onda does not enforce a limit. On a 27-inch external monitor, 6-8 panes feels balanced.

Do split panes persist across app restarts?

Yes. Onda saves workspace layouts automatically. Relaunching Onda restores each tab's pane tree, cwd per pane, and the last shell command. Terminal processes themselves do not survive — they restart fresh.

Can I drag panes to rearrange?

Currently splits are done via keyboard or context menu; dragging panes to rearrange the tree is on the roadmap. You can drag dividers to resize, and use Cmd+Shift+arrow to move focus between panes.

How do split panes interact with tmux inside a pane?

tmux inside an Onda pane works as usual — tmux manages its own virtual splits inside that pane's PTY. You get two layers: Onda splits (macOS-native), tmux splits (inside one pane). Most users pick one layer for simplicity.

Can an AI agent close panes without my permission?

Technically yes via `onda_pane_close` over MCP. In practice, Onda surfaces the action in the pane's state and you see it happen. If you want to block destructive tool calls, configure your AI client to confirm before calling.

What keyboard shortcuts can I customize?

All of them. Settings > Keybindings lets you rebind every action — split, focus, close, resize, switch tab, open workspace. Presets for iTerm2, Warp, and VS Code layouts are available.

Try Onda free

macOS 12+ on Apple Silicon. Notarized by Apple. No account required.

Download Onda