---
category: tool
tool: tmux
contributors:
    - ["kaernyk", "http://github.com/kaernyk"]
filename: LearnTmux.txt
---
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.
```bash
# We’ll start off with managing tmux from a terminal:
  tmux | tmux new   # Create an unamed session
   -s "Session"     # Create named session
   -n "Window"      # Create named Window
   -c "/dir"        # Start in target directory
    
  tmux attach       # Attach last/available session
   -t "#"           # Attach target session
   -d               # Detach the session from other instances
  tmux ls           # List open sessions
        
  kill-session      # Kill current session
   -t "#"           # Kill target session
   -a               # Kill all sessions
   -a -t "#"        # Kill all sessions but the target   
## Key Bindings
#   The method of controlling an attached tmux session is fairly simple, but 
# there are two keys we will see repeated throughout this write-up (as well as
# the man pages). 
	
  (C-b) == Ctrl + b
  
#  This combination is the default prefix key that is to be used in conjunction
# with a keybind to produce the stated effect. 
# The default keybinds are as follows:
   C-b             # Send the prefix key (C-b) through to the application.
   C-o             # Rotate the panes in the current window forwards.
   C-z             # Suspend the tmux client.
   ?               # List all key bindings.
   :               # Enter the tmux command prompt.
   r               # Force redraw of the attached client.
   c               # Create a new window.
   $               # Rename the current session.
   ,               # Rename the current window.
   !               # Break the current pane out of the window.
   %               # Split the current pane into two, left and right.
   "               # Split the current pane into two, top and bottom.
   n               # Change to the next window.
   p               # Change to the previous window.
   {               # Swap the current pane with the previous pane.
   }               # Swap the current pane with the next pane.
   s               # Select a new session for the attached client interactively.
   w               # Choose the current window interactively.
   0 to 9          # Select windows 0 to 9.
   d               # Detach the current client.
   D               # Choose a client to detach.
   
   &               # Kill the current window.
   x               # Kill the current pane.
   Up, Down        # Change to the pane above, below, left, or right.
   Left, Right
   M-1 to M-5      # Arrange panes: 
                   #    1) even-horizontal
                   #    2) even-vertical
                   #    3) main-horizontal
                   #    4) main-vertical
                   #    5) tiled.
   C-Up, C-Down    # Resize the current pane in steps of one cell.
   C-Left, C-Right
               
   M-Up, M-Down    # Resize the current pane in steps of five cells.
   M-Left, M-Right
```               
### Configuring ~/.tmux.conf
  tmux.conf can be used to set options automatically on start up, much 
like how .vimrc or init.el are used.
```bash
# Example tmux.conf
# 2014.9
  
### Keybinds  
###########################################################################  
  
## Prefix Adjustment   
# Unbind C-b as the default prefix 
unbind-key C-b
# Set ` as the default prefix
set-option -g prefix `  
#set option -g prefix C-a
# Return to previous window when prefix is pressed twice
bind-key C-a last-window  
bind-key ` last-window  
bind-key a send-prefix
# Allow swapping C-a and ` using F11/F12 
bind-key F11 set-option -g prefix C-a  
bind-key F12 set-option -g prefix `  
  
## Index Start  
set -g base-index 1  
  
## Window Cycle/Swap  
bind e previous-window  
bind f next-window  
bind E swap-window -t -1  
bind F swap-window -t +1  
  
  
### Theme  
###########################################################################  
  
## Statusbar Color Palatte  
#set-option -g status-justify centre  
set-option -g status-justify left  
set-option -g status-bg black  
set-option -g status-fg white  
set-option -g status-left-length 40  
set-option -g status-right-length 80  
  
## Pane Border Color Palette  
set-option -g pane-active-border-fg green  
set-option -g pane-active-border-bg black  
set-option -g pane-border-fg white  
set-option -g pane-border-bg black  
  
## Message Color Palette  
set-option -g message-fg black  
set-option -g message-bg green  
  
#setw -g mode-bg black      
  
## Window Status Color Palette  
setw -g window-status-bg black  
setw -g window-status-current-fg green  
setw -g window-status-bell-attr default  
setw -g window-status-bell-fg red  
setw -g window-status-content-attr default  
setw -g window-status-content-fg yellow  
setw -g window-status-activity-attr default  
setw -g window-status-activity-fg yellow  
  
  
### UI  
###########################################################################  
  
## Window Interface Adjustments  
set-option -g status-utf8 on  
setw -g mode-keys vi  
setw -g mode-mouse on  
setw -g monitor-activity on  
  
set-option -g mouse-select-pane on  
set-option -g status-keys vi  
set-option -g bell-action any  
set-option -g set-titles on  
set-option -g set-titles-string '#H:#S.#I.#P #W #T' # window number,program name,active (or not)  
set-option -g visual-bell off  
## Statusbar Adjustments  
set -g status-left ' #[fg=red]#H#[fg=green]:#[fg=white]#S #[fg=green]][#[default] '  
set -g status-interval 5  
#set -g status-right ' #[fg=green]][#[fg=white] #T #[fg=green]][ #[fg=blue]%Y-%m-%d #[fg=white]%H:%M#[default] '  
## Show performance counters in statusbar
#set -g status-right ' #[fg=green]][#[fg=white] #(tmux-mem-cpu-load 5 4) #[fg=green]][ #[fg=yellow]%H:%M#[default] '  
  
  
### Misc  
###########################################################################  
set -g history-limit 4096  
bind r source-file ~/.tmux.conf  
```
### External Resources
Tmux | Home
Manual page
Display CPU/MEM % in statusbar
Archlinux Wiki
Gentoo Wiki