Splits

Divide a tab into multiple terminal surfaces side by side or stacked, navigate between them, resize them, and zoom one to fullscreen.

Splits let you carve a tab into multiple terminal surfaces that share the window. Each split is a full terminal with its own shell, working directory, and title. Splits live inside tabs, so you can mix horizontal, vertical, and stacked layouts within a single window.

Like tabs, splits use native UI primitives: WinUI 3 on Windows, and GTK 4 on Linux.

Creating Splits

A new split is created with the new_split action, which takes a direction argument:

ArgumentResulting split
rightNew surface to the right
leftNew surface to the left (no effect on Windows)
downNew surface below
upNew surface above (no effect on Windows)
autoSplit along the larger axis of the current surface
keybind = ctrl+shift+d=new_split:right
keybind = ctrl+shift+e=new_split:down
keybind = ctrl+shift+a=new_split:auto

Note

The Windows app only implements right and down. The config parser accepts new_split:left and new_split:up, but the app drops those two directions when the action arrives, so the keybind does nothing at all. Use right, down, or auto on Windows. auto is unaffected, since it resolves to right or down before dispatch.

auto is a good default: if the current surface is wider than it is tall, it creates a left/right split; otherwise it creates a top/bottom split. This keeps newly created splits readable without you having to think about the current geometry.

A new split inherits the working directory of the surface it was created from when shell integration is active.

Move focus between splits with goto_split. It takes either a direction or a sequential token:

ArgumentBehavior
right, left, up, downFocus the adjacent split in that geometric direction
previous, nextFocus the previous or next split in layout-tree order
keybind = ctrl+alt+h=goto_split:left
keybind = ctrl+alt+j=goto_split:down
keybind = ctrl+alt+k=goto_split:up
keybind = ctrl+alt+l=goto_split:right

Directional navigation uses the spatial layout: pressing goto_split:right focuses the split whose left edge is closest to the right edge of the currently focused split.

previous and next walk the split tree instead, visiting the splits depth-first from left to right rather than in the order you created them. Both wrap, so repeatedly pressing next cycles through every split in the tab and returns to where it started. Unlike the directional arguments, they always move somewhere, even when no split lies in the direction you wanted.

Resizing Splits

Use resize_split to grow or shrink the current split by a pixel amount. The argument is a direction and a pixel count, joined by a comma:

keybind = ctrl+shift+left=resize_split:left,10
keybind = ctrl+shift+right=resize_split:right,10
keybind = ctrl+shift+up=resize_split:up,10
keybind = ctrl+shift+down=resize_split:down,10

A resize_split:right,10 grows the current split 10 pixels to the right, shrinking the neighboring split on that side by the same amount.

Equalize

equalize_splits restores every split in the current tab to equal size. There's no argument:

keybind = ctrl+shift+equal=equalize_splits

This is handy after a series of resizes or after closing a split has left the layout uneven.

Zoom (Fullscreen a Split)

toggle_split_zoom expands the focused split to fill the entire tab, hiding the other splits temporarily. Toggling it again restores the previous layout.

keybind = ctrl+shift+enter=toggle_split_zoom

On Windows, a restore button appears in the top right corner of the zoomed split itself so you don't lose track of the fact that other splits are hidden. Clicking it unzooms. The tab strip is left unchanged.

By default, anything that moves focus or changes the layout unzooms the split again. Set split-preserve-zoom to navigation if you'd rather keep the zoom while navigating, in which case the newly focused split becomes the zoomed one.

Closing Splits

Use close_surface to close just the focused split. The surrounding splits expand to reclaim the freed space.

keybind = ctrl+shift+x=close_surface

Closing the last split in a tab closes the tab. On Linux, confirm-close-surface makes splits with a running process trigger a confirmation dialog first. The Windows app does not read that option, so it has no effect there; the only prompt Windows shows is when a tab holding more than one split is closed outright.

Drag to Resize (Windows)

On Windows, the bar between splits is a drag handle. Click and drag the separator to resize splits with the mouse. This is implemented by Splitter.cs in the Windows port. The same is true on Linux via its native split view.

Configuration

OptionPurpose
split-divider-colorColor of the separator between splits
unfocused-split-opacityFade unfocused splits to draw attention to the focused one
unfocused-split-fillColor overlay applied to unfocused splits
split-preserve-zoomKeep a split zoomed while navigating between splits (off by default)
split-inherit-working-directoryNew splits inherit the source surface's working directory
window-inherit-font-sizeNew splits inherit the source surface's adjusted font size
confirm-close-surfaceConfirm before closing a split with a running process. Not read by the Windows app

Keybindings

ActionPurpose
new_splitCreate a new split (right, left, up, down, auto; left and up have no effect on Windows)
goto_splitFocus an adjacent split
resize_splitResize the current split by a pixel amount
equalize_splitsRestore all splits to equal size
toggle_split_zoomExpand the current split to fill the tab
close_surfaceClose the focused split

Splits vs Tabs vs Windows

A quick mental model:

  • A window is the OS-level window. New windows are independent and can live on different displays.
  • A tab lives inside a window and gets its own entry in the tab bar. Only one tab in a window is visible at a time.
  • A split lives inside a tab and shares screen real estate with other splits in the same tab. All splits in a tab are visible at once (unless one is zoomed).

If you mostly want to alt-tab between sessions, use tabs. If you want to see multiple sessions at the same time, use splits. The two compose: each tab can have its own split layout.