Why tmux.expose
Switching tmux sessions with a list works, but it gives you names instead of context. tmux.expose shows every session as a live text thumbnail so you can jump to the right workspace visually.
- See before switching. Browse sessions in a responsive grid with live pane previews.
- Terminal-native. A small Rust TUI that runs inside your terminal or a tmux popup.
- Color-aware previews. tmux ANSI colors are preserved in thumbnails.
- Fast keyboard flow. Move with arrows or
hjkl, switch withEnter, leave withqorEsc. - TPM-ready. Install it as a tmux plugin and launch with a single prefix binding.
Install
From this repository:
Verify the install:
Quickstart
Run the UI directly inside tmux:
Or open it in a tmux popup:
By default, thumbnails are sized into a balanced grid that fits all sessions on screen. Override the layout when you want larger previews or a fixed grid:
Refresh interval defaults to 500ms:
Controls
| Key | Action |
|---|---|
Arrow keys / hjkl |
Move selection |
Enter |
Switch to selected session |
q / Esc / Ctrl-C |
Quit without switching |
tmux Plugin
Install with TPM:
set -g @plugin 'cesarferreira/tmux.expose'
Reload tmux config, then press prefix + I to install plugins.
The plugin binds prefix + E by default:
prefix + E
It opens:
Configuration
Customize the tmux plugin before the @plugin line:
set -g @tmux-expose-key 'E'
set -g @tmux-expose-width '95%'
set -g @tmux-expose-height '90%'
set -g @tmux-expose-command 'tmux-expose --columns 2'
set -g @plugin 'cesarferreira/tmux.expose'
Use a direct binding if you do not use TPM:
bind-key E display-popup -w 95% -h 90% -E "tmux-expose"
macOS Gesture Integration
Use BetterTouchTool, Hammerspoon, Raycast, or another automation tool to trigger:
The app itself is terminal-only and does not depend on macOS-specific APIs.
Development
Before opening a PR, run:
License
MIT © Cesar Ferreira