ckmux

On macOS and Linux, ckmux reads ~/.config/ckmux/ckmux.conf (precisely: $XDG_CONFIG_HOME/ckmux/ckmux.conf, or the file CKMUX_CONFIG names). A missing file is the ordinary case — every setting has a default, and this page states each one. Windows uses %LOCALAPPDATA%\ckmux\ckmux.conf, falling back to the current user's LocalAppData known folder when that environment variable is absent or not absolute. CKMUX_CONFIG overrides the file on every platform.

ckmux check-config parses the file and reports every problem with its file and line, starting nothing; it exits non-zero when the file has problems. A running ckmux shows the same warnings at startup rather than guessing. The Settings dialog (Settings ▸ General…) writes the same keys back to the same file.

Sizes take an optional upper-case suffix: K, M, or G (powers of 1024).

Choose a shell

The default is your resolved POSIX shell on macOS/Linux and cmd.exe on Windows. Set an executable path to choose another shell; do not add shell arguments or surrounding quotes to the value. For PowerShell 7 installed at its usual Windows location:

[general]
shell = C:\Program Files\PowerShell\7\pwsh.exe

For macOS/Linux, an example is shell = /bin/zsh. The selected executable must exist. Shell selection applies to newly created terminals; existing programs keep running. Use ckmux check-config to check configuration syntax.

[general]

KeyDefaultMeaning
prefixC-bThe one key ckmux takes from the programs inside it.
shellAutomaticWhat New Terminal runs: resolved POSIX shell on macOS/Linux; cmd.exe on Windows. An empty value selects that default.
login-shelltruePOSIX only: start an interactive login shell. Windows uses native shell profile behavior and preserves this key without offering it in Settings.
scrollback10000Lines of history per terminal; 0 means remember nothing.
max-terminals64The most terminals one session may hold.
themedarkdark, light, or mono.
on-exithold-on-errorA window whose program exited: close, hold, or hold-on-error (keep it only when the exit status was non-zero — when the text on screen is the evidence).
audible-bellfalseWhether a child's bell reaches your terminal as a sound. The visual half — border flash and footer flag — is always on.
confirm-killtrueAsk before closing or killing something with a live program in it.
kill-grace-seconds5How long programs get to end on their own when a session is killed; 0 means don't wait.
kill-empty-sessiontrueA session whose last terminal closed goes away.
clocksecondsThe menu-bar clock: seconds, minutes, or off. The big clock (^B t) drops its seconds for minutes.
desktop-sizefixedShared desktop sizing: fixed, fit-smallest, or fit-latest. With one attached reader, resizing its host also resizes the desktop. With several readers, this policy decides; a desktop resize affects every child.
resize-windows-to-fitfalseAfter a reattach on a smaller screen has moved an oversized window up and left, whether a second, resizing step shrinks it to fit.
show-cpufalseCPU readout on every terminal window's footer (View menu).
show-memory-rssfalseMemory (RSS) readout.
show-memory-realfalsemacOS footprint, Linux PSS, or Windows private resident working-set pages (labelled Private RSS, not virtual commit charge). Missing fields are not measured zero.

[terminal]

KeyDefaultMeaning
termauto$TERM inside terminals: auto lets ckmux claim what it can honestly support; anything else is used verbatim.
mousetrueForward mouse events to programs that ask for them.
alternate-scrolltrueWheel scrolling in full-screen programs becomes arrow keys.
sixelautoSixel graphics: auto or off.
sixel-max-megapixels64The largest picture a program may draw — an allocator guard, far above a full 4K screen.
osc52trueWhether a program may put text on the clipboard with OSC 52 (capped at 64 KiB).
clipboardosc52, pbcopyWhere a copy goes, in order: osc52 (native clipboard on Windows, outer terminal on POSIX), pbcopy (a macOS helper), or exec:<command> (text on stdin).

[printer]

Programs can print through the terminal (the ANSI printer controls); ckmux captures that output per window.

KeyDefaultMeaning
modeaskask (a popup offers the capture), capture (always keep it), or off.
ask-cache256KHow much print output the Ask popup holds.
spool-limit1MThe most one print job may spool.
save-formattxtSaved jobs: txt (plain text) or ansi (with colors and attributes).
save-folder~/DocumentsWhere saved jobs go.
save-ask-nametrueAsk for a file name on save.

[render]

KeyDefaultMeaning
max-fps30The most frames per second the client draws.

[keys]

bind and unbind lines rebind the chords; they never add or remove commands — a command with no chord is still in the menus.

[keys]
bind terminal C new-terminal
unbind terminal x

(# is not a comment character inside a bind line — it is a chord someone may want to bind.)

The form is bind <context> <chord> <action> and unbind <context> <chord>. Order matters: two binds of one chord mean the later one; an unbind after a bind means neither.

Contexts: terminal (the key after the prefix), desktop, copy-mode, picker, move-resize.

Actions: new-terminal, close-terminal, kill-terminal, move-terminal, rename-terminal, print-output, printer-settings, next-terminal, previous-terminal, window-list, zoom, minimize, move-resize, tile-horizontally, tile-vertically, tile-grid, cascade, menu-bar, copy-mode, paste, detach, sessions, new-session, rename-session, kill-session, key-reference, settings, status-bar, fit-desktop, show-cpu, show-memory-rss, show-memory-real, show-clock, show-date, show-date-time, about, send-prefix, quit.

ckmux check-config also names any key that is parsed and validated but not yet acted on by this version, with the work it waits for — so "I set this, why did nothing happen?" always has an answer.

Known diagnostic limitation: check-config still lists ask-cache, save-format, save-folder, and save-ask-name as waiting for printer work. The runtime does honor all four; only that report is stale.