Skip to content

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: ⌘+ / ⌘- / ⌘0 and 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 $id are rejected.

Terminal Session Model

ConceptMeaning
PaneIdStable split-tree position
PaneContentIdReact content-generation key — rotated on replace
SessionIdConcrete 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

Terminality — Connect Everycorner