mrkeyoor.com_
Wed 16 Sept 07:03 UTC
Dev Toolsevaluationupdated 02 Sept 2026

tmux review

tmux is a terminal multiplexer that keeps shell sessions running after you disconnect and lets one terminal hold several windows and panes. It solves the familiar problem of losing remote work with an SSH connection, while giving keyboard-driven users a durable command-line workspace.

+115stars / 7d
Verdict

Our tmux run installed in 17 seconds, built in 19 seconds, and passed its tests in 5 seconds, a clean result for a 132,255-line C project. Use it if terminal persistence and scriptable panes matter enough to learn its Ctrl-b command model. Choose Zellij for a friendlier first hour, or a terminal-native multiplexer when you want one application to own the whole interface.

We ran it

Lab card: what happened when we ran tmuxScreenshot of tmux (github.com/tmux/tmux)
Install✓ · 17s
Build✓ · 19s
Tests✓ · 5sran, no count parsed
Repo543 files~132,255 lines of source · 4.9 MB · 2 CI workflows

Answers from our run

Does tmux build from source?

Dependencies installed in 17 seconds, and the build succeeded in 19 seconds. We cloned commit f4445a3 into a clean Debian container with 3 CPUs and no project-specific setup.

Do tmux's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use tmux?

Native Windows users who do not want a Unix compatibility layer: the README lists BSD systems, Linux, macOS, and Solaris, but not Windows.

What are the alternatives to tmux?

Zellij, WezTerm, tmate. Our tmux run installed in 17 seconds, built in 19 seconds, and passed its tests in 5 seconds, a clean result for a 132,255-line C project.

Setup4/517-second install; source builds still need native packages
Docs4/5The man page is deep, while the README stays intentionally lean
Community5/548,976 stars with current issue, pull request, and push activity
Maturity5/5Version 3.7c is stable and the measured build passed cleanly

Discussed on

  1. hnTmux has left SourceForge504 points
  2. hnTmux 2.0 released353 points
  3. hnSystemd developer asks tmux to add systemd specific code194 points
  4. hnTmux 1.9 released182 points
  5. hnTmux 3.518 points

Who it’s for

Developers who spend much of the day in terminals and want persistent sessions, panes, and windows.
Server operators who need work to survive an SSH timeout or deliberate disconnect.
Keyboard-first users willing to learn a prefix key and keep configuration in a text file.
Tool authors that need a terminal server with a documented control mode.

Who it’s NOT for

Native Windows users who do not want a Unix compatibility layer: the README lists BSD systems, Linux, macOS, and Solaris, but not Windows.
Developers who want a graphical workspace they can discover by clicking: the 3.7c manual centers on a Ctrl-b prefix, command keys, and a command prompt.
Teams that require a source build with no system packages: tmux needs libevent 2.x, ncurses, a C compiler, make, pkg-config, and yacc or bison.
Users whose copy workflow requires Unicode-property word selection in the stable release: issue 5558 documents that 3.7c uses literal separators and limited whitespace rules.

Setup reality

Our sandbox checkout at commit f4445a3 installed in 17 seconds, built in 19 seconds, and passed its test step in 5 seconds. The source was 4.9 MB across 543 files and about 132,255 lines. Our scan found 2 CI workflow files, no Dockerfile, and no tests directory.

Running tmux needs no account, API key, database, or network service. Building from a release tarball requires libevent 2.x, ncurses, a C compiler, make, pkg-config, and yacc or bison. A version-control checkout also needs autoconf and automake.

The README supports OpenBSD, FreeBSD, NetBSD, Linux, macOS, and Solaris. Binary packages are easier, though the project warns that some are out of date. The server and clients communicate through a local socket, so configuration, terminal capabilities, nested sessions, and clipboard behavior still need attention on the machine where you use it.

tmux 3.7c keeps shell sessions alive after SSH drops

tmux 3.7c separates the terminal you see from the shell processes doing the work. One server manages sessions, each session can contain many windows, and every window can be split into panes. Detaching removes the client while the server continues running. Reattach later and the shells, editors, logs, and long commands are still there. That simple promise is why tmux remains useful on remote machines, even when a modern terminal already has local tabs.

The model also supports several clients on the same session. The manual says any number of tmux instances may connect, while a local socket carries traffic between each client and the server. This is practical for checking the same work from another terminal, and it gives integrations a process boundary they can target. Once every session is killed, the server exits. There is no account or hosted coordinator to maintain.

Ctrl-b exposes panes, windows, copy mode, and control mode

The 3.7c manual starts interactive control with Ctrl-b, followed by another key. A double quote splits the current pane top to bottom, percent splits left to right, c creates a window, and [ enters copy mode. The defaults cover pane movement, resizing, seven preset layouts, session selection, search, paste buffers, and zoom. Almost every binding can be changed, which is powerful after configuration and opaque before it.

Control mode gives programs a structured way to drive a tmux server instead of scraping a painted terminal. The command language can create sessions, target panes, run shell commands, wait for events, and format state. That is why tmux often sits underneath terminal dashboards and coding-agent managers. The tradeoff is a large interface whose primary reference is the tmux.1 manual, not a short task-based guide. Serious automation calls for reading the target and quoting rules carefully.

What happened when we ran it

Our sandbox installed tmux in 17 seconds, built it in 19 seconds, and completed the test step successfully in 5 seconds. We used commit f4445a3 in a fresh unprivileged Debian container with 3 CPUs and 8 GB of RAM. The checkout occupied 4.9 MB and contained 543 files with roughly 132,255 source lines. Those are repository mechanics, not measurements of pane latency, memory use, or terminal rendering speed.

Our scan found 2 CI workflow files, no Dockerfile, and no tests directory. The successful test step still counts because it is the command outcome produced by the lab harness; directory names do not determine whether a project has checks. Nothing in the supplied measurement showed a failed install, compiler error, or test error. We did not benchmark interactive performance, nested sessions, clipboard paths, or behavior over a poor network connection.

A source build needs libevent 2.x and ncurses

The README names libevent 2.x, ncurses, a C compiler, make, pkg-config, and yacc or bison as build requirements. Building a release tarball is the familiar configure, make, and privileged install sequence. A checkout from version control adds autoconf and automake before autogen.sh. Optional utempter support can update login records. None of this is unusual for portable C, but it is more host preparation than the small 4.9 MB checkout suggests.

Package managers avoid most of that work, although tmux warns their packages may lag. The supported list covers OpenBSD, FreeBSD, NetBSD, Linux, macOS, and Solaris. Native Windows is absent. Terminal capability data also matters after installation: colors, keys, mouse handling, nested multiplexers, and clipboard handoff cross application boundaries. A binary appearing in PATH proves less than attaching to a session and exercising the bindings in the terminal you use daily.

Version 3.7c is active, but Unicode word selection is still literal

GitHub showed version 3.7c as the latest release on August 17, 2026, with 48,976 stars and 31 combined issues and pull requests when fetched. The repository was pushed on September 1, and recently updated work included merged pane-history changes plus closed reports about Sixel output and the status line. That pairing of a current push with moving issues and pull requests is stronger health evidence than the release tag alone.

Copy mode still has a specific international-text limitation. Issue 5558 explains that stable 3.7c treats word-separators as a literal character set and recognizes only tab and ordinary space in an internal whitespace rule. The report demonstrates surprising selection around no-break and ideographic spaces, then proposes opt-in Unicode-aware actions. Master has already changed Unicode whitespace handling for the next release, but the broader category-based selection request remained open when checked.

The 5-second test result makes tmux easy to trial, not easy to master

The clean 5-second test outcome removes one adoption worry: this measured checkout compiled and passed in the stated Debian sandbox. The harder cost is human. Prefix commands, target syntax, copy-mode keys, terminal options, and a long manual become part of the working environment. Existing dotfiles and plugins can make tmux feel personal, but they can also turn a teammate's terminal into unfamiliar equipment. Start with a small configuration and keep bindings visible until muscle memory forms.

Use tmux when a shell must outlive the connection that opened it, or when scripts need a stable terminal server. It earns its place on remote hosts and in keyboard-heavy development. Zellij asks less of a new user, and WezTerm can combine the emulator and multiplexer in one program. tmux is the better choice when portability, established command semantics, and integration support outweigh the learning curve.

Alternatives

ProjectWhat it isPick it when
Zellij gh↗A terminal workspace with discoverable layouts, plugins, and a visible shortcut bar.pick this instead when onboarding and built-in workspace affordances matter more than tmux compatibility.
WezTerm gh↗A GPU-accelerated terminal emulator with its own multiplexer, tabs, panes, and Lua configuration.pick this instead when you want the terminal emulator and multiplexer designed as one application.
tmateA tmux-based terminal sharing tool for giving another person access to a live session.pick this instead when remote collaboration is the main job rather than personal session persistence.

Sources

  1. tmux repository and README
  2. tmux 3.7c release
  3. tmux manual page
  4. Unicode copy-mode request 5558
  5. tmux changes file

More dev tools reviews

IKONA-Security · noty · forward-implementation-first · breakscale · black · ASC · the whole board →