TMUX is a terminal multiplexer, a command line tool for enabling time travel, and a utility that can be utilized for safe trans-dimensional travel. Note however, that only the first part of that last sentence is actually true.
The purpose of this post is not to teach you (or me) how to be come TMUX experts, rather we are just going to learn how to do a few simple, yet very useful things that I feel are the best features of TMUX
Creating your TMUX Config File
First you need to install tmux via your favorite package installer. Next you can drop this .tmux.conf profile in your home directory. Don’t forget to source it. This file was given to me by a fellow co-worker and seems to make tmux pretty and functional.
This .tmux.conf sets your bind-key to “ctrl-A”. From here on out we will refer to this as our bind-key
#.tmux.conf in home directory
set -g prefix C-a
#bind C-c run "tmux show-buffer | xclip -i -selection clipboard"
bind C-c run "tmux show-buffer | xclip -i -selection primary"
bind-key C-a last-window
bind-key a send-key C-a
#bind-key M-a send-prefix
bind-key h select-pane -L
bind-key ^H select-pane -L
bind-key k select-pane -U
bind-key ^K select-pane -U
bind-key j select-pane -D
bind-key ^J select-pane -D
bind-key l select-pane -R
bind-key ^L select-pane -R
bind-key J resize-pane -D 5
bind-key K resize-pane -U 5
bind-key H resize-pane -L 5
bind-key L resize-pane -R 5
bind-key S setw synchronize-panes
#set-option -g lock-command '/usr/bin/vlock'
set-option -g lock-after-time 300
bind-key X lock-client
# vi ftw
set-window-option -g mode-keys vi
# bind-key N new-session
# Enhanced new-session: set session name
bind-key N command-prompt -p name: "new-session -s %1"
#### COLOR (Solarized dark)
# default statusbar colors
set-option -g status-bg black #base02
set-option -g status-fg yellow #yellow
set-option -g status-attr default
# default window title colors
#set-window-option -g window-status-fg brightblue #base0
#set-window-option -g window-status-bg default
#set-window-option -g window-status-attr dim
# active window title colors
#set-window-option -g window-status-current-fg brightred #orange
#set-window-option -g window-status-current-bg default
#set-window-option -g window-status-current-attr bright
# pane border
#set-option -g pane-border-fg black #base02
#set-option -g pane-active-border-fg brightgreen #base01
# message text
#set-option -g message-bg black #base02
#set-option -g message-fg brightred #orange
# pane number display
#set-option -g display-panes-active-colour blue #blue
#set-option -g display-panes-colour brightred #orange
#set-window-option -g clock-mode-colour green #green
Split Window Panes
This is my favorite feature of TMUX. Need to monitor several logs at once across multiple machines without having to switch back and forth between tabs or separate terminal windows, then you are in luck. See the screenshot below for an example of this. Here I have three separate windows.
To create a virtual split run the command below.
Run the command below to split a screen vertically.
Run the command below to split a screen horizontally
Now that you have created a bunch of windows/panes you now need to move between them. Use the commands below to accomplish this.
bind-key <UP ARROW>
bind-key <DOWN ARROW>
bind-key <RIGHT ARROW>
bind-key <LEFT ARROW>
To synchronize panes run the command below. For example, lets say I jump between the three panes in my example image above and ssh to separate servers. However I then want to “tail -f /var/log/secure” on each server, but I do not want to type the command three times. Instead I sync my frames, and run the command once. The command below accomplishes this.
To unsyncronize, run the command below.
TMUX operates very similarly to Screen when it comes to session management.
The command below will create a new session called test_session.
$ tmux new -s test_session
To detach from the test session that you just created use the command below
$ tmux detach d
Now lets re-attach to our test session.
$ tmux attach -t test_session
Ok, now after reattaching from our test session we create another session called test_session_2. See below.
$ tmux new -s test_session_2
Now lets detach from our currently active session. Same detach command as shown a few steps above
$ tmux detach d
Now lets list all our open TMUX sessions.
$ tmux list-sessions
test_session: 1 windows (created Wed May 20 13:28:34 2015) [125×33]
test_session_2: 1 windows (created Wed May 20 13:33:35 2015) [125×33]
Finally we can switch between sessions with the switch command.
$ tmux switch -t test_session
Oh, lets not forget, using the following command we can kill a session with the command below.
$ tmux kill-session -t test_session
Also note that you can detach and close an active session with <ctl> d.