Terminal & tmux
Local Terminal
Unix PTY and Windows ConPTY through a unified Rust session service.
- WebGL xterm.js with Canvas and DOM fallbacks — no software rendering bottleneck.
- 10,000-line scrollback default.
- Binary Tauri Channels for terminal output: 32 KiB / 16 ms batching with bounded backpressure. Not JSON-encoded bytes.
- IME support for CJK and complex input methods.
- Multi-line paste confirmation — no accidental execution.
- OSC 52 disabled — terminal output cannot silently write the clipboard.
- Font: MesloLGS NF (Powerlevel10k recommended faces) bundled in the app. Never downloaded at runtime. Opt-out to system monospace.
- Font scaling:
⌘+/⌘-/⌘0and Ctrl/Cmd + wheel change terminal font only. The WebView is never zoomed. - Close protection: Unix detects foreground process groups. Windows uses conservative live-session confirmation.
- Background opacity: surfaces only, text and controls remain fully opaque.
Standard tmux Attach
tmux is a first-class Connection, not an afterthought.
- Mixable: a tmux Pane sits beside local terminals, SSH, and file panes in the same split tree.
- tmux owns its behavior: prefix keys, status line, windows, splits, copy mode, mouse, detach — all preserved.
- tmux Sessions dialog (
⌘⇧M): refresh, create, open, rename, and explicitly end sessions. Native dialog window. - Collision-free: default session names avoid conflicts; session identity is
(server PID, created timestamp)generation, not mutable name. - Safe: closing a Terminality Pane detaches the client — never issues
kill-session. Ending a session is a separately confirmed action. - Stale protection: restarted tmux servers that reuse a
$idare rejected.
Terminal Session Model
| Concept | Meaning |
|---|---|
PaneId | Stable split-tree position |
PaneContentId | React content-generation key — rotated on replace |
SessionId | Concrete Rust Session obtained by the mounted Pane |
Replacing a Pane rotates PaneContentId → new xterm, new PTY, new scrollback. Reparenting during a split preserves the live terminal.
Unified Shortcuts
One conflict-checked five-platform keymap (ShortcutsViewModel). Native menu accelerators and WebView keyboard fallback share the same dispatch — no duplicate behavior.
⌘T New local terminal tab
⌘N New local terminal window
⌘⇧P Command Composer
⌘⇧M tmux Sessions
⌘⇧H Connection Library
⌘, Settings
⌘+ / ⌘- / ⌘0 Font size