KOSHI0.6.0
Keybindings
v0.6keybindingsfield manual

Actions

Built-in action names available to keybindings, how to run them from a shell, and how to inspect their scope and targets.

A binding names a full action reference such as core:new-pane-right. Run:

koshi actions list
koshi actions explain core:new-pane-right
koshi actions run core:toggle-notification-center

list shows every action with its internal command, scope, and the shell command that runs it (cli_invocation). explain shows one action's description, scope, accepted targets, and related CLI command.

run runs one action in a running session, as a key bound to it runs it. It takes a bare name (next-tab) or a full name (core:next-tab), and --client names the client it acts for. An action that changes one client's screen runs in that client; an action that belongs to one input mode is refused in any other mode. run also takes --remote.

Pane actions

ActionResult
core:new-paneSplit the focused pane and start a shell in the new one
core:new-pane-leftSplit the focused pane and open the new one on the left
core:new-pane-downSplit the focused pane and open the new one below
core:new-pane-upSplit the focused pane and open the new one above
core:new-pane-rightSplit the focused pane and open the new one on the right
core:new-pane-stackedAdd a new pane to the focused pane's stack, sharing its space
core:runSpawn a command in a new pane
core:close-paneClose the focused pane
core:close-pane-treeClose the focused pane and kill every process it started
core:resize-paneGrow or shrink the focused pane along one edge
core:resize-pane-leftMove the focused pane's border one cell to the left
core:resize-pane-downMove the focused pane's border one cell down
core:resize-pane-upMove the focused pane's border one cell up
core:resize-pane-rightMove the focused pane's border one cell to the right
core:focus-paneMove the issuing client's focus to a pane
core:focus-pane-leftMove the issuing client's focus to the pane on the left
core:focus-pane-downMove the issuing client's focus to the pane below
core:focus-pane-upMove the issuing client's focus to the pane above
core:focus-pane-rightMove the issuing client's focus to the pane on the right
core:scroll-paneScroll a pane's view by a chosen number of lines
core:scroll-pane-upScroll the focused pane's view toward its history
core:scroll-pane-downScroll the focused pane's view toward live output
core:move-paneSwap a pane with its visible neighbor in one direction and commit the swap at once
core:place-panePut a pane into a tab's tiled layout, beside a pane or into its stack; a floating pane docks
core:toggle-pane-fullscreenToggle fullscreen for the focused pane
core:write-to-paneSend text to a pane's shell, as if it had been typed there

Floating pane actions

ActionResult
core:new-pane-floatingOpen a new floating pane above the tiled panes and focus it on the issuing client's screen
core:toggle-pane-floatingFloat the pane that takes the input where it is drawn, or dock a floating one beside the tiled pane under its center
core:undock-paneFloat the focused tiled pane above the tiled panes, at the top-left cell and the size where it is drawn, each axis cut to 90% of the smallest pane area
core:dock-paneInsert a floating pane into a tab's tiled layout
core:move-floating-paneMove a floating pane to a top-left cell on one client's screen
core:pin-panePin the focused floating pane at its top-left cell on the issuing client's screen
core:unpin-paneUnpin the focused floating pane on the issuing client's screen
core:toggle-pane-pinnedPin the focused floating pane at its top-left cell on the issuing client's screen, or unpin it when it is pinned there
core:minimize-paneMinimize the focused floating pane on the issuing client's screen
core:restore-paneRestore a minimized floating pane on one client's screen and focus it
core:minimize-all-floating-panesMinimize every floating pane the issuing client shows
core:restore-all-floating-panesRestore every floating pane the issuing client minimized, and focus the last one
core:toggle-minimize-all-floating-panesMinimize every floating pane the issuing client shows, or restore every one when it shows none
core:focus-next-floating-paneShow and focus the floating pane after the focused one, in the order the panes became floating
core:focus-previous-floating-paneShow and focus the floating pane before the focused one, in the order the panes became floating

Pane move actions

ActionResult
core:begin-pane-placementOpen pane placement mode for the focused pane
core:select-pane-target-leftSelect the visible pane target to the left in placement mode
core:select-pane-target-downSelect the visible pane target below in placement mode
core:select-pane-target-upSelect the visible pane target above in placement mode
core:select-pane-target-rightSelect the visible pane target to the right in placement mode
core:select-pane-insertion-leftSelect the left insertion edge in placement mode
core:select-pane-insertion-downSelect the lower insertion edge in placement mode
core:select-pane-insertion-upSelect the upper insertion edge in placement mode
core:select-pane-insertion-rightSelect the right insertion edge in placement mode
core:cycle-pane-placement-spanCycle the available insertion spans in placement mode
core:toggle-pane-placement-stackSwitch the selected target between beside a pane or stack and into that stack
core:select-next-placement-tabPreview the next visible tab in placement mode
core:select-previous-placement-tabPreview the previous visible tab in placement mode
core:confirm-pane-placementSubmit the selected pane placement in placement mode
core:cancel-pane-placementDiscard the pane placement and return to the base input mode
core:begin-tiled-pane-placementOpen pane placement mode for the focused pane of the active tab
core:begin-floating-pane-moveOpen floating pane move mode on a floating pane this client shows
core:confirm-pane-move-choiceOpen the move mode for the kind of the focused pane in the pane move chooser
core:cancel-pane-move-choiceClose the pane move chooser and return to the base input mode
core:move-floating-pane-leftMove the selected floating pane one cell left in floating pane move mode
core:move-floating-pane-downMove the selected floating pane one cell down in floating pane move mode
core:move-floating-pane-upMove the selected floating pane one cell up in floating pane move mode
core:move-floating-pane-rightMove the selected floating pane one cell right in floating pane move mode
core:select-next-floating-paneSelect and focus the next floating pane, in the order the panes became floating, in floating pane move mode
core:select-previous-floating-paneSelect and focus the previous floating pane, in the order the panes became floating, in floating pane move mode
core:confirm-floating-pane-moveMove the selected floating pane to its draft in floating pane move mode
core:cancel-floating-pane-moveDiscard the floating pane draft and return to the base input mode

Floating pane tray actions

ActionResult
core:toggle-floating-pane-trayOpen the floating pane tray under the tabline's tray button, or close it when it is open
core:close-floating-pane-trayClose the floating pane tray and return to the base input mode
core:select-tray-tile-leftSelect the tile to the left in the floating pane tray
core:select-tray-tile-downSelect the tile below in the floating pane tray
core:select-tray-tile-upSelect the tile above in the floating pane tray
core:select-tray-tile-rightSelect the tile to the right in the floating pane tray
core:activate-selected-tray-tileMinimize or restore the selected tile's floating pane on this client's screen; on the + new tile, close the tray and create a floating pane

Notification center actions

ActionResult
core:toggle-notification-centerOpen this client's notification center on the right side, or close it when it is open
core:close-notification-centerClose the notification center and keep its entries
core:select-newer-notificationSelect the notification card above the selected one in the notification center
core:select-older-notificationSelect the notification card below the selected one in the notification center
core:dismiss-selected-notificationRemove the selected notification card from this client's notification center
core:clear-notificationsRemove every entry from this client's notification center and close it

Tab, session, and client actions

ActionResult
core:new-tabCreate a new tab
core:close-tabClose the focused tab
core:focus-tabSwitch the issuing client's view to a specific tab
core:next-tabSwitch the issuing client's view to the next tab
core:previous-tabSwitch the issuing client's view to the previous tab
core:move-tabMove the focused tab to a new index
core:lockEnable pass-through lock mode for the issuing client
core:unlockDisable pass-through lock mode for the issuing client
core:toggle-lockToggle pass-through lock mode for the issuing client
core:mouse-selectToggle grabbing the mouse for text selection, so a drag highlights in koshi even over a program that asked for the mouse
core:quitLeave the session, ending it when auto-close-session is on and no other client stays

core:quit detaches this terminal. It ends the session only when auto-close-session #true and no other terminal is attached. There is no action that ends a session outright — use koshi kill-session.

Binding rules

Write the namespace: core:new-tab, not new-tab. Bindings accept no action arguments. Fixed choices belong in the action name; open values such as a pane id, tab index, or text belong to the CLI.

These actions need values that only their CLI command supplies, so a key bound to one never fires, and koshi keys validate and koshi keys conflicts warn about it: core:run, core:resize-pane, core:focus-pane, core:move-pane, core:place-pane, core:dock-pane, core:move-floating-pane, core:restore-pane, core:scroll-pane, core:write-to-pane, core:focus-tab, and core:move-tab. koshi actions run refuses them too and names the command to use, such as koshi focus-tab.

keybinding.kdl
version 2

mode "normal" {
    bind "<A-h>" "core:focus-pane-left"
    bind "<A-l>" "core:focus-pane-right"
}

On this page