gitwtfhub

wtf is tmux.expose?

cesarferreira/tmux.expose — explained in plain English

Analysis updated 2026-05-18

41RustAudience · developerComplexity · 2/5LicenseSetup · easy

TL;DR

Rust CLI that adds a Mission-Control-style switcher to tmux: shows every session as a live ANSI text thumbnail in a grid you can search and click.

Mindmap

mindmap
  root((tmux-expose))
    Inputs
      Running tmux sessions
      Keyboard or mouse
      Fuzzy query
    Outputs
      Grid of thumbnails
      Session switch
      Popup overlay
    Use Cases
      Switch by context
      Bind Alt+e popup
      Trackpad gesture launch
    Tech Stack
      Rust
      tmux
      TPM plugin

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Switch tmux sessions by visual context instead of by name

REASON 2

Bind Alt+e to open a full-terminal tmux popup with session thumbnails

REASON 3

Drive the switcher from a macOS trackpad gesture via Hammerspoon or Raycast

REASON 4

Fuzzy-filter dozens of long-running sessions with live previews

What's in the stack?

Rusttmux

How it stacks up

cesarferreira/tmux.exposeepiskey-g/groksearch-rscvetkovicdamjan/neurilium
Stars414043
LanguageRustRustRust
Setup difficultyeasymoderatehard
Complexity2/53/54/5
Audiencedeveloperdeveloperresearcher

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

Needs Rust's cargo plus an existing tmux install, TPM is optional but recommended for popup binding.

MIT license, free to use, modify, and redistribute with attribution.

Wtf does this do

tmux.expose is a small Rust command-line program that gives the tmux terminal multiplexer a Mission-Control-style session switcher. tmux already has a built-in way to jump between sessions, but it shows them as a flat list of names. tmux.expose instead renders every running session as a live text thumbnail in a grid, so the user can see what is in each session before picking one. The author frames it as switching by context rather than by name. The previews are text rendered from real tmux pane contents and preserve ANSI colours, so a syntax-highlighted editor or a coloured prompt looks the same in the thumbnail as in the actual pane. Keyboard flow follows tmux conventions: arrow keys or hjkl to move, Enter to switch to the highlighted session, q or Esc to leave without switching. Typing filters sessions by a fuzzy match on the name, Backspace edits the query, and the mouse can click a thumbnail directly. The default refresh interval is 500 milliseconds. Install is one command on crates.io: cargo install tmux-expose. There is also a tmux plugin, intended for use with TPM, which binds Alt+e by default to open the UI inside a tmux popup that covers the whole terminal. Pressing Alt+e again while the popup is open closes it without switching. All of the popup settings, key binding, key table, width, height, anchor (center, top, bottom, left, or right), background style, border style, and the command itself, are overridable as @tmux-expose-* options before the @plugin line. The README gives a worked example that binds tmux.expose to prefix+s and shows it as a bottom-anchored popup at 60 percent of the screen height. For users who do not use TPM, the README shows the equivalent raw tmux bind-key incantation that calls display-popup with the right environment variable to wire the toggle key. The Quickstart section also shows direct CLI flags: --thumbnail-width to enlarge previews, --columns to lock the grid to a fixed number of columns, and --refresh-interval to change the polling rate. The default behaviour sizes the grid so every session fits on screen. On macOS the README notes that a tool like BetterTouchTool, Hammerspoon, or Raycast can bind a trackpad gesture to the same display-popup command. The app itself stays terminal-only and uses no Mac-specific APIs. The project is MIT-licensed by Cesar Ferreira, has a CI badge for Rust tests, and asks contributors to run make check before opening a pull request.

Yoink these prompts

Prompt 1
Install tmux.expose with cargo install tmux-expose and verify it lists my current sessions.
Prompt 2
Configure the tmux.expose TPM plugin so prefix+s opens a 60 percent bottom popup.
Prompt 3
Add a raw tmux bind-key display-popup call that toggles tmux.expose without TPM.
Prompt 4
Tune --thumbnail-width, --columns and --refresh-interval for a 49-inch ultrawide.
Prompt 5
Wire a Hammerspoon trackpad gesture to invoke tmux.expose's display-popup command on macOS.

Frequently asked questions

wtf is tmux.expose?

Rust CLI that adds a Mission-Control-style switcher to tmux: shows every session as a live ANSI text thumbnail in a grid you can search and click.

What language is tmux.expose written in?

Mainly Rust. The stack also includes Rust, tmux.

What license does tmux.expose use?

MIT license, free to use, modify, and redistribute with attribution.

How hard is tmux.expose to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is tmux.expose for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.