whatisgithub

What is tmux.expose?

cesarferreira/tmux.expose — explained in plain English

Analysis updated 2026-06-24

41RustAudience · developerComplexity · 2/5LicenseSetup · easy

In one sentence

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
Click or tap to explore — scroll the page freely

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

What do people build with it?

USE CASE 1

Switch tmux sessions by visual context instead of by name

USE CASE 2

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

USE CASE 3

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

USE CASE 4

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

What is it built with?

Rusttmux

How does it compare?

cesarferreira/tmux.exposemoritzheiber/crowbarrestsend/pipa
Stars413532
LanguageRustRustRust
Last pushed2023-06-01
MaintenanceDormant
Setup difficultyeasymoderateeasy
Complexity2/52/54/5
Audiencedeveloperops devopsdeveloper

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

How do you get it running?

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.

So what is it?

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.

Copy-paste 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

What 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.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.