A lightweight terminal UI that continuously discovers tmux sessions and renders live snapshots of each session's active pane. When there is one session, it fills the screen. When there are multiple, the screen is automatically split into a grid so you can see them all at once.
This avoids nested tmux clients by capturing pane contents via tmux capture-pane and drawing them directly.
It also explicitly attempts to discover Lisa-managed tmux sessions across project sockets.
- Go 1.21+ (any recent Go release is fine)
- tmux installed and on your PATH
go run ./srcbrew install bma-d/tap/tmux-visualiserscoop bucket add bma-d https://github.com/bma-d/scoop-bucket
scoop install tmux-visualisersudo dpkg -i tmux-visualiser_*.debsudo rpm -i tmux-visualiser_*.rpmsudo apk add --allow-untrusted tmux-visualiser_*.apkgo install github.com/bma-d/tmux-visualiser@latestDownload the archive for your OS/arch from the Releases page and extract it to a directory on your PATH.
Optional flags:
go run ./src -lines 300 -interval 500ms -cmd-timeout 1s -workers 4 \
-all-panes=true \
-include-default-socket=true \
-include-lisa-sockets=true \
-socket /tmp/custom.sock \
-socket-glob '/tmp/lisa-tmux-*-*.sock'Defaults include -all-panes=true, -lines 500, and -interval 1s.
q/Ctrl+C: quitr: refresh immediately+/-: increase or decrease captured lines[/]: decrease or increase refresh intervalm: toggle mouse capture (enable scroll + click vs. allow terminal text selection)Ctrl+K: kill focused tmux sessionEnter: attach to focused session (exits the visualiser)s: send a single key to the focused pane (supportsEnter,Backspace,Ctrl+C, etc.)Tab/Shift+Tab(orn/p): change focused sessionj/kor arrow keys: scroll focused sessionPageUp/PageDown: scroll fasterHome/End: jump to top or bottomi: compose input (live send to focused pane;Enterinserts newline;Ctrl+Sexits)s: send a single key (press the key;Ctrl+Scancels)Escin modes sends Escape to tmux; useCtrl+Sto exit a mode- When an update prompt appears:
Uto update,Ito ignore for 7 days,Ctrl+Sto dismiss
- Explicit Lisa discovery is enabled by default: tmux-visualiser explicitly attempts to discover Lisa sessions.
- Discovers sockets from:
- default tmux socket (enabled by
-include-default-socket) - explicit
-socketflags (repeatable) - Lisa socket globs from
-socket-globplus built-in/private/tmp+ legacy fallbacks (enabled by-include-lisa-sockets) - active tmux
-Ssockets discovered from process table when they look like Lisa sockets - best-effort
lisa session list --all-sockets --with-next-action --jsondiscovery whenlisais available on PATH
- default tmux socket (enabled by
- Polls each socket via
tmux -S <socket> list-sessions. - For each session, captures all panes by default (
-all-panes=true). - Set
-all-panes=falseto capture only the active pane per session. - Captures the last N lines from each captured pane.
- Lays out sessions in a grid that fills your terminal.
- If no tmux server is running, the UI shows a message and keeps polling.
- Stale/missing Lisa sockets are ignored and do not stop refresh.
- Session identity is socket-qualified, so duplicate session names across sockets are shown independently.
- The refresh interval is clamped to avoid excessive CPU usage.
- Captured output is bounded, so memory stays stable.
- Lisa uses per-project tmux sockets. If your Lisa sessions are missing, verify:
-include-lisa-sockets=truelisais on PATH (for extra--all-sockets-style discovery)-socket-globmatches your Lisa socket pattern if you override defaults
- (none)
- Compose now sends keys to the focused pane in real time, matching tmux more closely.
- Escape is forwarded to tmux; Ctrl+S exits modes.
- Multi-session layout favors horizontal splits.
- Focused pane color changes by mode for clear visual feedback.
- Prefer taller grids when the layout would otherwise be wider than it is tall.
- Initial release.