Learn tmux (Part 5) – How to Customize tmux and Make It Your Own!

If you want to increase your productivity with the Linux command line, tmux is definitely a great way to do just that! With tmux, you can manage your workflow with sessions, multitask with panes, and it also allows you to easily regain access to existing sessions when your SSH connection drops. In this five part series, you’ll learn everything you need to know in order to use tmux daily! In this episode, we’ll customize tmux and make it our own!

YouTube player


# Initial setup
set -g default-terminal xterm-256color
set -g status-keys vi

# use C-j and C-f for the prefix.
set-option -g prefix C-j
set-option -g prefix2 C-f
unbind-key C-j
bind-key C-j send-prefix
set -g base-index 1

# Use Alt-arrow keys without prefix key to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v

# Shift arrow to switch windows
bind -n S-Left  previous-window
bind -n S-Right next-window

# Easily reorder windows with CTRL+SHIFT+Arrow
bind-key -n C-S-Left swap-window -t -1
bind-key -n C-S-Right swap-window -t +1

# Synchronize panes
bind-key y set-window-option synchronize-panes\; display-message "synchronize mode toggled."

# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded."

# Easy clear history
bind-key L clear-history

# Key bindings for copy-paste
setw -g mode-keys vi
unbind p
bind p paste-buffer
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel

# Mouse Mode
set -g mouse on

# Lengthen the amount of time status messages are displayed
set-option -g display-time 3000
set-option -g display-panes-time 3000

# Set the base-index to 1 rather than 0
set -g base-index 1
set-window-option -g pane-base-index 1

# Automatically set window title
set-window-option -g automatic-rename on
set-option -g set-titles on

# Allow the arrow key to be used immediately after changing windows.
set-option -g repeat-time 0

# No delay for escape key press
set -sg escape-time 0

# Theme
set-window-option -g window-status-current-style bold,bg=blue,fg=colour234
set-window-option -g window-status-style fg=colour35
set -g window-status-activity-style bold,bg=colour234,fg=white
set-option -g message-style bg=colour237,fg=colour231
set-option -g pane-border-style fg=colour36
set-option -g pane-active-border-style fg=colour35

# Change background color of a tab when activity occurs
setw -g monitor-activity on

# Do NOT reset the color of the tab after activity stops occuring
setw -g monitor-silence 0

# Disable bell
setw -g monitor-bell off

# Disable visual text box when activity occurs
set -g visual-activity off

# Status Bar
set -g status-justify centre
set -g status-bg black
set -g status-fg colour35
set -g status-interval 60
set -g status-left-length 50
set -g status-left "#[bg=colour35]💻#[fg=colour234,bold] #H#[bg=colour34]#[bg=colour35,nobold]#[fg=colour234] [#S] $tmux_target_lower"
set -g status-right '#[bg=colour35] 🕔 #[fg=colour234,bold]%H:%M '