Skip to content

TUI reference

Run proxxx with no arguments to enter the TUI. All views render in ratatui over crossterm; the terminal is restored on every exit path (happy, ? early-return, panic).

Views

NumberViewSource
1Dashboardsrc/tui/views/dashboard.rs
2Nodessrc/tui/views/nodes.rs
3Guests (VM + LXC)src/tui/views/guests.rs
4Storagesrc/tui/views/storage.rs
Tasks (live log)src/tui/views/tasks.rs
Heatmap (H)src/tui/views/heatmap.rs
Backup board (B)src/tui/views/backup.rs
Config grep (G)src/tui/views/grep.rs
Operation queue (Q)src/tui/views/queue.rs
Audit timeline (T)src/tui/views/timeline.rs
Snapshot tree (Z)src/tui/views/snaptree.rs
Compare (drift, D)src/tui/views/compare.rs
Hardware (W)src/tui/views/hardware.rs
HA consolesrc/tui/views/ha_console.rs
ISO librarysrc/tui/views/iso_library.rs
Searchsrc/tui/views/search.rs
Approvals (HITL)src/tui/views/approval.rs
SSH sessionsrc/tui/views/ssh_session.rs

Keymap

Press ? inside the TUI for the live keymap reference. Generated from a single source; the help overlay never drifts from the actual binding.

KeyAction
j / Downmove selection down
k / Upmove selection up
Enter / lselect / drill in
h / Escback / parent view
g / Gtop / bottom
Tabswitch pane
qquit
Rforce refresh
Ctrl+Lredraw (recover from SIGCONT after suspend)

View switching

KeyView
1 Dashboard2 Nodes
H HeatmapB Backup
Z Snapshot treeD Compare drift

Selection (Guest list)

KeyAction
Spacetoggle selection on current row
Vselect all visible
tfilter / select by tag (prompt)

Actions (Guest list)

KeyAction
sstart selected guest(s)
Sgraceful shutdown selected
rrestart
ddelete (with confirm modal)
copen SSH console (:ssh <vmid>)
Xbroadcast guest-agent command
Zopen snapshot tree for selected
Cexecute the operation queue (in queue view)

Modes

KeyMode
/fuzzy search across all kinds
:command palette (e.g. :ssh 100, :hw pve1, :tree 100)
Ctrl+Kquick-open palette
Ctrl+]exit SSH session (PTY chord)
Ctrl+Cquit (always wins)

Operation queue

Destructive operations enqueue. The queue view (Q) shows pending items, dry-run output, diff preview, and per-item replay-as-script export (proxxx CLI / pvesh / curl / Ansible). Press C in the queue view to execute everything; HITL gates fire here if configured.

Confirm modals

Every destructive operation pops a centered modal. Press y or Enter to confirm, n or Esc to cancel. The modal is rendered in Theme::DANGER colour and clears the background underneath.

Always visible at the bottom row of every view: a contextual list of 3–9 keybindings relevant to the current view + mode. Convention follows htop / lazygit / k9s — ?:help q:back are universal, view-specific keys appear inline (e.g. GuestList shows s:start S:stop r:restart c:console). Per-view binding tables are pure functions pinned by 7 unit tests; an accidental future refactor that drops q:back from any view fails the gate loudly.

The footer hides when an overlay covers the bottom row — the input bar (Command / InputTag / InputBroadcast modes), the help modal, the confirm modal. No explicit gating: the existing overlay z-order does the right thing.

Help overlay

Press ? anywhere. The overlay is rendered from a single static keymap table reviewed alongside event::map_key. Press any key to dismiss. While the help is up, the status footer collapses to "any key dismiss help".

Theming

The colour palette adapts to terminal background (light / dark detected at launch). Brand colour is #2563eb blue. Status pills:

PillStatus
runninggreen
stoppeddim
pausedyellow
unknownred

Terminal restore

TerminalGuard (RAII) wraps the ratatui Terminal. Drop teardown runs on the happy path, on ? early returns, and after a panic (the panic hook flight-recorder also fires). You should never end a session with a broken cooked-mode terminal.

Released under the MIT License.