IPC & CommandsπŸ”—

Triad communicates over a Unix socket at $XDG_RUNTIME_DIR/triad.sock (falls back to /tmp/triad.sock).

Send any command with:

triad msg <command> [arguments]

General & DiagnosticsπŸ”—

CommandDescription
commands [--json]List all available commands.
validate <command…>Validate a command locally without sending it.
request <json>Send a raw JSON IPC request.
statePrint current session state as JSON.
layout-statePrint layout state for all visible workspaces.
perf-statusPrint daemon performance and timing diagnostics.
mem-statusPrint memory diagnostics.
config-reloadReload the configuration file.
triad-reloadWrite a live-restore snapshot and restart the manager.
dispatch-binding <kind> <chord>Trigger a configured binding, e.g. key Super+Return.

CommandDescription
focus-next / focus-prevShift focus to the next or previous window.
focus-left / focus-right / focus-up / focus-downMove focus spatially.
focus-lastReturn focus to the previously focused window.
focus-workspace <index>Focus a workspace by compact index.
focus-tag <id>Focus a workspace by stable tag ID.
focus-window <id>Focus a specific window by ID.
new-workspaceCreate and focus a new dynamic workspace.
focus-tag-left / focus-tag-rightMove to the adjacent workspace.
focus-occupied-tag-left / focus-occupied-tag-rightSkip empty workspaces.
focus-column-first / focus-column-lastJump to the first or last column in the scroller.
toggle-overviewToggle the bird's-eye workspace view.
recent-window-next / recent-window-prevNavigate the MRU switcher.
recent-window-confirm / recent-window-cancelConfirm or cancel the switcher selection.
toggle-scratchpadShow or hide the default scratchpad.
toggle-named-scratchpad <name>Show or hide a named scratchpad pool.

LayoutπŸ”—

CommandDescription
layout-scrollerActivate the scroller layout.
layout-tileActivate master-stack tiling.
layout-gridActivate grid layout.
layout-monocleActivate monocle (fullscreen stack) layout.
layout-deckActivate deck layout.
layout-spiralActivate spiral layout.
layout-tgmixActivate tgmix layout.
layout-custom <name>Select a declared Janet layout by name.
layout-native <name>Select a native substrate: frame-tree, bsp-tree, or i3.
switch-layoutCycle through the configured layout-cycle.
set-layout-for-workspace <tag> <layout>Set a layout on a specific workspace by tag ID.

Master-StackπŸ”—

CommandDescription
master-count <n> / adjust-master-count <delta>Set or adjust the number of master windows.
master-ratio <ratio> / adjust-master-ratio <delta>Set or adjust the master area size.

Frame-Tree (Notion)πŸ”—

CommandDescription
frame-split-horizontal / frame-split-verticalSplit the focused frame.
frame-unsplitRemove the focused empty frame.
frame-tab-next / frame-tab-prevCycle tabs within a frame.

BSP & DwindleπŸ”—

CommandDescription
bsp-balance / bsp-equalizeRebalance the tree or reset split ratios.
bsp-preselect-left / -right / -up / -downSet the insertion target for the next window.
bsp-preselect-cancelClear the pending insertion target.

Split-Tree (i3)πŸ”—

CommandDescription
split-tree-split-horizontal / split-tree-split-verticalSet insertion direction.
split-tree-layout-toggle-splitToggle horizontal/vertical orientation.
split-tree-layout-stacking / split-tree-layout-tabbedSet container mode.
split-tree-focus-parent / split-tree-focus-childNavigate the container hierarchy.

Window ManipulationπŸ”—

CommandDescription
close-windowRequest the focused window to close.
toggle-floatingToggle between tiled and floating.
fullscreen-windowToggle fullscreen mode.
toggle-maximizedToggle the client-visible maximized state.
move-to-tag <id> / move-to-workspace <index>Move the window and follow focus.
move-window-to-tag <id> <tag> [follow]Move a specific window by ID.
move-to-scratchpad / move-to-named-scratchpad <name>Send the window to a scratchpad pool.
group-windowsGroup the window with its neighbor.
ungroup-windowDissolve the active group.
maximize-columnToggle the focused column to full width.
set-column-width <proportion>Set exact column width, e.g. 0.5.
resize-width <delta> / resize-height <delta>Adjust window proportions.
move-column-left / move-column-rightSwap columns in the scroller.
move-window-left / -right / -up / -downSwap windows directionally.
consume-window / expel-windowMerge or split windows from columns.

System & SessionπŸ”—

CommandDescription
spawn <argv…>Run a command.
spawn-terminalLaunch the configured terminal.
screenshot [--path <path>]Capture a region, window, or screen.
lock-sessionLaunch the configured screen locker.
exit-sessionExit the session (requires allow-exit-session #true in config).
rename-tag <name>Rename the active workspace.
warp-pointer <x> <y>Warp the pointer on all active seats.

Event StreamπŸ”—

Triad broadcasts state changes in a Niri-compatible JSON format. Subscribe with:

triad msg event-stream
EventFired when
WorkspaceActivatedWorkspace switches.
WindowFocusChangedFocus moves to a different window.
WindowOpened / WindowClosedA window appears or disappears.

Native JSON IPCπŸ”—

For scripting, send requests directly over $TRIAD_SOCKET.

RequestπŸ”—

{"triad":{"version":1,"request":"state"}}

ResponseπŸ”—

{
  "ok": true,
  "triad": {
    "version": 1,
    "type": "state",
    "state": { }
  }
}

ActionπŸ”—

{"triad":{"version":1,"request":"action","action":"focus-workspace","workspace_idx":2}}

SubscribeπŸ”—

{"triad":{"version":1,"request":"event-stream","events":["state","layout"]}}

Triad sends an initial snapshot for each requested kind, then streams updates as they occur.