KOSHI0.4.0
Using koshi
v0.4usingfield manual

Panes

Open, place, focus, resize, stack, fullscreen, and close koshi panes from keys or the CLI.

Each pane owns one process, terminal screen, and scrollback buffer. Splitting a pane keeps the existing pane and places a new one beside it. The session owns the panes, so every attached terminal sees the same ones.

Open a pane

KeysPlacement
<C-p> hLeft
<C-p> jBelow
<C-p> kAbove
<C-p> lRight
<C-p> nlayout.new-pane-direction

From a shell:

koshi new-pane --direction right
koshi new-pane --stacked
koshi run --direction down -- cargo watch -x test

new-pane starts the default shell. run starts the command after --. Both print the new pane id. Omit a target inside koshi to split the current pane; outside koshi, pass --pane, --tab, or --session unless exactly one session is running.

A shell pane inherits the working directory of the pane it splits. A command pane runs the command and arguments you gave after --.

Focus and resize

KeysResult
<C-p> ←↓↑→Focus the nearby pane
<C-s> ←↓↑→Move one border one cell

Focus is per client: two terminals attached to one session may look at different panes.

koshi focus-pane --pane <PANE_ID>
koshi resize-pane --pane <PANE_ID> --direction right --size 4

A positive resize grows toward the direction. A negative value shrinks from that side.

Size when several terminals watch

Every client viewing one tab shares one set of sizes. The tab solves against the smallest viewing terminal on each axis, minus the top tab bar row and the bottom hint row. Two clients on one tab, one 80x24 and one 120x40, both get a viewport of 80x22.

What stays per client is the view: one client tiled and one with a pane fullscreen give that tab two sets of rectangles. Read them with koshi debug dump-layout.

Leave gaps between panes

Set pane.gap in koshi.kdl to leave blank cells between panes that meet along a horizontal or vertical split. Stacked panes stay contiguous, and mouse border dragging still works across a gap.

koshi.kdl
version 1

pane {
    gap 1
}

The session owns the gap, so every terminal attached to it sees the same spacing.

Stack and fullscreen

--stacked adds a pane to the focused pane's stack. Stack members share one rectangle; one is expanded and the others appear as one-row headers.

Alt+f fills the tab with the focused pane. Press it again to restore the layout. Fullscreen belongs to the client that pressed it.

koshi toggle-pane-fullscreen

Close a pane

<C-p> x closes the focused pane and its process tree.

koshi close-pane --pane <PANE_ID>
koshi close-pane --pane <PANE_ID> --force

Closing a pane promotes its sibling into the freed space. Closing the last pane closes its tab; closing the last tab ends the session.

Send input

koshi input --pane <PANE_ID> "cargo test"
koshi input --pane <PANE_ID> --no-enter "git status"

input types text into a pane and presses Enter by default. --no-enter leaves it at the prompt.

On this page