tmux is a free, open source terminals project written in C and released under ISC. It has 49,900 GitHub stars, 2,942 forks and 44 open issues, and was last pushed 29 hours ago. On this registry it ranks #4 of 9 tracked projects in Terminals, with 5 head-to-head comparisons available.

What is tmux?

tmux is an open-source terminal multiplexer for developers and system administrators who need to create, manage, and return to multiple terminal sessions from a single screen.

What it is

tmux is a terminal multiplexer written in C and released under the ISC licence, developed as a public source repository with a mailing list and GitHub issues handling contributions. It lets a number of terminals be created, accessed, and controlled from one screen, and it belongs to the Developer Tools / Terminals category alongside the compilers, editors, and shell utilities that make up a working command-line environment. The project builds from a release tarball or directly from version control, and it depends on libevent 2.x and ncurses, with a C compiler, make, pkg-config, and a suitable yacc required for the build.

The concrete problem tmux solves is losing your work when a connection or window goes away: tmux may be detached from a screen and continue running in the background, then later reattached, so long-running sessions survive being disconnected. It replaces the need to keep a single foreground terminal open for the whole life of the work it hosts, consolidating many terminals into one managed session that can be left behind and picked up again. Because sessions live in a background server rather than in the terminal that started them, the same session can be approached from a fresh client later.

Key capabilities

  • Creates, accesses, and controls a number of terminals from a single screen.
  • Detaches from a screen and continues running in the background, then reattaches later.
  • Runs on OpenBSD, FreeBSD, NetBSD, Linux, macOS and Solaris.
  • Optionally updates utmp(5) through the utempter library when configured with --enable-utempter.
  • Produces server and client log files in the current directory when run with -v or -vv for debugging.
  • Ships a manpage, tmux.1, viewable with nroff -mdoc tmux.1|less, plus a small example configuration in example_tmux.conf.
  • Provides a bash(1) completion file published in the bash-completion project as tmux.bash.

Who uses it and how

  • Developers who work over SSH detach their session and reattach later, keeping shells and running processes alive across disconnections.
  • Administrators running a mixed estate of OpenBSD, FreeBSD, NetBSD, Linux, macOS and Solaris machines use the same tool and the same tmux.1 documentation on each platform.
  • Users customise behaviour through a configuration file, starting from the supplied example_tmux.conf in the source tree.
  • Contributors work through the tmux-users mailing list or GitHub issues and pull requests, following CONTRIBUTING.md before opening an issue and consulting the wiki's list of contribution suggestions.
  • Debuggers run tmux with -v or -vv and inspect the generated server and client log files in the current directory.

Getting started

Build from a release tarball with ./configure && make followed by sudo make install, or clone the repository, run sh autogen.sh, and then ./configure && make; binary packages are listed on the wiki's Installing page, and documentation lives in the tmux.1 manpage.

How it compares

This registry entry stands alone: the project's own documentation names no comparable tools for contrast, so no positioning against alternatives can be drawn from the facts available here.

When to use it — and when not

A self-hoster builds and maintains the software themselves, supplying libevent 2.x, ncurses, a C compiler, make, pkg-config, and a suitable yacc, with autoconf, automake and pkg-config additionally needed when building from version control. Binary packages exist for some platforms but are sometimes out of date, so anyone unwilling to compile from source may be waiting on packagers, and the 44 open issues indicate work still outstanding. It is not a hosted service, so it suits people comfortable operating their own tooling rather than those looking for a managed product.

project readme (upstream, from github) — read inline

Welcome to tmux!

tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.

This release runs on OpenBSD, FreeBSD, NetBSD, Linux, macOS and Solaris.

Dependencies

tmux depends on libevent 2.x, available from this page.

It also depends on ncurses, available from this page.

To build tmux, a C compiler (for example gcc or clang), make, pkg-config and a suitable yacc (yacc or bison) are needed.

Installation

Binary packages

Some platforms provide binary packages for tmux, although these are sometimes out of date. Examples are listed on this page.

From release tarball

To build and install tmux from a release tarball, use:

./configure && make
sudo make install

tmux can use the utempter library to update utmp(5), if it is installed - run configure with --enable-utempter to enable this.

For more detailed instructions on building and installing tmux, see this page.

From version control

To get and build the latest from version control - note that this requires autoconf, automake and pkg-config:

git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make

Contributing

Bug reports, feature suggestions and especially code contributions are most welcome. Please send by email to:

tmux-users@googlegroups.com

Or open a GitHub issue or pull request. Please read this document before opening an issue.

There is a list of suggestions for contributions. Please feel free to ask on the mailing list if you're thinking of working on something or need further information.

Documentation

For documentation on using tmux, see the tmux.1 manpage. View it from the source tree with:

nroff -mdoc tmux.1|less

A small example configuration is in example_tmux.conf.

And a bash(1) completion file at:

https://github.com/scop/bash-completion/blob/main/completions-core/tmux.bash

For debugging, run tmux with -v or -vv to generate server and client log files in the current directory.

Support

The tmux mailing list for general discussion and bug reports is:

https://groups.google.com/forum/#!forum/tmux-users

Subscribe by sending an email to:

tmux-users+subscribe@googlegroups.com

Frequently asked questions

Is tmux free to use?

tmux is open source under the ISC licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does tmux do?

tmux source code

What is tmux written in?

tmux is primarily written in C. Its source is publicly available at https://github.com/tmux/tmux, and it has 49,900 GitHub stars.