tmux is a terminal multiplexer: it enables a number of terminals (or windows), each running a separate program, 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.
The latest release is tmux %%VERSION%% or get the development version from git.
tmux uses a client-server model. The server holds multiple sessions and each window is an independent entity which may be freely linked to multiple sessions, moved between sessions and otherwise manipulated. Each session may be attached to (display and accept keyboard input from) multiple clients.
tmux is intended to be a modern, BSD-licensed alternative to programs such as GNU screen. Major features include:
- A powerful, consistent, well-documented and easily scriptable command interface.
- A window may be split horizontally and vertically into panes.
- Panes can be freely moved and resized, or arranged into preset layouts.
- Support for UTF-8 and 256-colour terminals.
- Copy and paste with multiple buffers.
- Interactive menus to select windows, sessions or clients.
- Change the current window by searching for text in the target.
- Terminal locking, manually or after a timeout.
- A clean, easily extended, BSD-licensed codebase, under active development.
tmux is part of the OpenBSD base system. The portable version is hosted on SourceForge and runs on Linux, FreeBSD, NetBSD, Solaris and AIX. It depends on libevent 1.4 or 2.0 and a terminfo implementation (normally ncurses).
A few people have written programs which can be used with tmux: tmux-ruby, tmuxinator, tmux-applets and teamocil. There is a book on tmux by Brian P Hogan.