Getting started with tmux

In this post, we will write about tmux, which is a terminal multiplexer, a lot like GNU Screen but much more powerful. If you spend a lot of time in a CLI, then you’ll love tmux.

1. What is tmux?

According to the tmux authors:

tmux is a terminal multiplexer. What is a terminal multiplexer? It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more.

2. Installation

Installation is pretty straightforward if you have Ubuntu or any other Debian-based distribution you can install tmux with:

sudo apt-get install tmux

on CentOS/Fedora:

yum install tmux

and on MacOS:

brew install tmux

After installation, to start tmux run tmux in your terminal window.

3. Configuration & Prefix key

The global configuration file is located at /etc/tmux.conf and the user specific configuration file is located at ~/.tmux.conf. The default prefix is Ctrl-b but if you want to change it to Ctrl-a (GNU Screen’s default prefix), you need to add the following code to your ~/.tmux.conf file:

unbind C-b
set -g prefix C-a
bind C-a send-prefix

4. Session Management

tmux is developed on a client-server model which means that the session is stored on the server and persist beyond ssh logout.

The following command will create a new session called mysession:

tmux new-session -s mysession

To attach to a session run:

tmux attach -t mysession

To list all session run:

tmux ls

You can kill a session using the following command:

tmux kill-session -t mysession

Frequently used sessions commands

Ctrl-b d	  Detach from the current session 
Ctrl-b (          Go to previous session
Ctrl-b )          Go to next session
Ctrl-b L          Go to previously used session
Ctrl-b s          Choose a session from the sessions list

5. Windows (tabs) Management

Each session can have multiple windows. By default all windows are numbered starting from zero.

Frequently used windows (tabs) commands

Ctrl-b 1  Switch to window 1
Ctrl-b c  Create new window
Ctrl-b w  List all windows
Ctrl-b n  Go to next window
Ctrl-b p  Go to previous window
Ctrl-b f  Find window
Ctrl-b ,  Name window
Ctrl-b w  Choose a window from the windows list
Ctrl-b &  Kill the current window

6. Panes Management

With tmux, you can split windows into multiple panes.

Frequently used panes commands

Ctrl-b "		Split the pane vertically (top/bottom)
Ctrl-b %		Split the pane horizontally (left/right)
Ctrl-b q		Show pane numbers
Ctrl-b x		Kill the current pane
Ctrl-b +		Break pane into window
Ctrl-b -		Restore pane from window
Ctrl-b left		Go to the next pane on the left
Ctrl-b right            Go to the next pane on the right
Ctrl-b up		Go to the next pane on the top
Ctrl-b down		Go to the next pane on the bottom
Ctrl-b o                Cycle through all panes
Ctrl-b ;                Go to previously used pane

If you use one of our VPS hosting services, do not hesitate to ask our expert Linux admins if you need help getting started with Tmux. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post please share it with your friends on the social networks using the buttons below or simply leave a comment in the comments section. Thanks.

6 Common WHM/cPanel Problems
100+ self-hosted alternatives to popular services
Best Open Source Hosting Control Panels
  • person


    Author Reply

    One of my favorite things about tmux is how easy it is to resize panes:

    C-b, followed by holding down Alt, and using the arrow keys to resize

  • Mike


    Author Reply

    Can someone explain how they use sessions and windows and panes?
    It feels like one too many levels, why both sessions AND windows?
    I’m willing to believe there is a use case, but for the life of me I can’t come up with one.

    • admin


      Author Reply

      Please read and tmux man page for more information on this.

    • person


      Author Reply

      I use sessions for different projects, and windows and panes within a project. For example, I’ll have a session for my puppet code, and a session for a bash script I’m working on. Within the puppet session, if I’m going to work on a new module, I open a new window. If I’m writing code in vim, I usually split off a pane so I can test running it next to it. Having the error output next to the code makes debugging really fast.

      In a lot of ways, it basically acts like a tiling window manager for the terminal. The advantage over a window manager is that the whole layout can be accessed remotely. So if I’m working on a project from work, I can quickly resume working on the project from my home computer after SSH’ing in and reattaching to the tmux session.