Terminal multiplexer
Wintty Pro sessions carry their pane tree: splits, layout and scrollback live in the daemon, and any window can attach. A tmux command map for the common verbs.
In Wintty Pro, every tab and split of a persistent session lives in that session's pane tree, and the pane tree belongs to the session daemon rather than to any one window. The daemon keeps one authoritative copy of each session's tree, which is what lets a session move between windows with its layout intact. That is the terminal multiplexer. The persistent sessions page covers the daemon and the sessions themselves; this page is about the layout.
A pane tree is the full shape of a session: the session's tabs, in tab strip order; each tab's splits, with the direction of every divider and the share of the space each side keeps; and which pane has focus. The daemon stores that tree. A Wintty window renders it, and closing the window leaves the tree alone.
Each pane in the tree is one program the daemon hosts, with its own scrollback. A session carries up to 64 tabs, and a tab up to 64 panes. The stored tree carries divider percentages and the grid size of each tab, so reattaching puts the layout back as it was.
The sessions picker lists every session the daemon holds. Three things can happen when you pick a row:
- The session is already attached to this window: it focuses.
- The session is idle: it opens in a new tab.
- The session is attached to another window: it moves to this one after you confirm.
A move carries the pane tree with it: the same tabs in the same order, the same splits, the same focused pane, and the scrollback each pane had.
The pane tree is data on disk, not window state. The daemon journals
it under %LOCALAPPDATA%\ShipDigital\<packId>\sessiond\data\, next to
the session records and the scrollback journals.
An app update that does not change the daemon leaves the daemon running, so nothing moves. An update that does change the daemon restarts it; at startup the new daemon loads the layout journal, and the sessions come back with their tabs, splits, and scrollback.
If you know tmux, the verbs map across. winttyc is the daemon's
command-line tool, and every verb is a plain subcommand:
| In tmux | In Wintty | What it does |
|---|---|---|
tmux ls | winttyc list | List the sessions the daemon holds |
tmux new -s name | winttyc new <name> | Start a new persistent session |
tmux kill-session -t name | winttyc kill <name> | End a session |
tmux send-keys | winttyc send <name> [text] | Send bytes to the session's input. send writes raw bytes, so a script supplies its own Enter |
tmux capture-pane -p | winttyc history <name> | Print scrollback: --text by default, --vt, or --html |
tmux rename-session | winttyc rename <name> <new-name> | Rename a session |
tmux attach -t name | pick the session in the sessions picker | Attach. Closing the window detaches, and the session keeps running |
| watch without attaching | winttyc tail <name> | Stream a session's output as it arrives. Ctrl+C detaches, and the session keeps running |
Create a session, feed it a build, and watch it run:
Set-Alias ws winttyc
ws new build
ws send build "zig build`r`n"
ws tail build
Some things tmux has, Wintty does not. There is no status line. There
is no remote attach: the daemon answers a named pipe on your machine,
and while winttyc tail streams a session's output, a real attach
means opening the session in a Wintty window. Splits and resizes are
GUI actions, not CLI verbs; the command-line tool lists, creates and
feeds whole sessions. And there is no prefix chord to memorize, since
pane movement and resizing follow the regular
split keybindings.
For how the ways to run tmux on Windows compare with what Wintty does instead, see tmux on Windows.
The multiplexer ships in Pro, Pro Enterprise and Pro Legacy. What each tier includes puts that in context next to everything else each tier carries.
Note
Prebuilt builds are for sponsors. The source is free and always will be, and you can build it yourself. No build has been published yet either, so there is nothing to download today.