Perfect tmux configuration using putty

3 minutes read

Configuration File.

The following configuration is my favorite so far:

Author:
Hermann Vocke ( http://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/):

######################
### DESIGN CHANGES ###
######################

# panes
set -g pane-border-fg black
set -g pane-active-border-fg brightred

## Status bar design
# status line
set -g status-justify left
set -g status-bg default
set -g status-fg colour12
set -g status-interval 2

# messaging
set -g message-fg black
set -g message-bg yellow
set -g message-command-fg blue
set -g message-command-bg black

#window mode
setw -g mode-bg colour6
setw -g mode-fg colour0

# window status
setw -g window-status-format " #F#I:#W#F "
setw -g window-status-current-format " #F#I:#W#F "
setw -g window-status-format "#[fg=magenta]#[bg=black] #I #[bg=cyan]#[fg=colour8] #W "
setw -g window-status-current-format "#[bg=brightmagenta]#[fg=colour8] #I #[fg=colour8]#[bg=colour14] #W "
setw -g window-status-current-bg colour0
setw -g window-status-current-fg colour11
setw -g window-status-current-attr dim
setw -g window-status-bg green
setw -g window-status-fg black
setw -g window-status-attr reverse

# Info on left (I don't have a session display for now)
set -g status-left ''

# loud or quiet?
set-option -g visual-activity off
set-option -g visual-bell off
set-option -g visual-silence off
set-window-option -g monitor-activity off
set-option -g bell-action none

set -g default-terminal "screen-256color"

# The modes {
setw -g clock-mode-colour colour135
setw -g mode-attr bold
setw -g mode-fg colour196
setw -g mode-bg colour238

# }
# The panes {

set -g pane-border-bg colour235
set -g pane-border-fg colour238
set -g pane-active-border-bg colour236
set -g pane-active-border-fg colour51

# }
# The statusbar {

set -g status-position bottom
set -g status-bg colour234
set -g status-fg colour137
set -g status-attr dim
set -g status-left ''
set -g status-right '#[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour233,bg=colour245,bold] %H:%M:%S '
set -g status-right-length 50
set -g status-left-length 20

setw -g window-status-current-fg colour81
setw -g window-status-current-bg colour238
setw -g window-status-current-attr bold
setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F '

setw -g window-status-fg colour138
setw -g window-status-bg colour235
setw -g window-status-attr none
setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F '

setw -g window-status-bell-attr bold
setw -g window-status-bell-fg colour255
setw -g window-status-bell-bg colour1

# }
# The messages {

set -g message-attr bold
set -g message-fg colour232
set -g message-bg colour166

# }

Binding Keys

For the better usage, it is very useful to bind combination keys to function keys. To swith workspace (ctrl + [0-9]), you can type F1-F9

bind-key -n F1 select-window -t :0
bind-key -n F2 select-window -t :1
bind-key -n F3 select-window -t :2
bind-key -n F4 select-window -t :3
bind-key -n F5 select-window -t :4
bind-key -n F6 select-window -t :5

Also, it is an option to customize next-window, previous-window using ctrl+arrow key. However, this arrow key does not work properly in putty.

To Set it correctly, you should change the terminfo settings[2]:

set -g terminal-overrides "xterm*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"

And then,

bind-key -n C-Right next-window
bind-key -n C-Left previous-window

reloading changes

$ tmux source-file ~/.tmux.conf

or
kill buffers and restart.

$ tmux kill-server
$ tmux new -s workspace

Troubleshoot

However, this is not working in putty environment and difficult to figure out what the cause is. Change next setting will solve you the problem:

putty -> keyboard -> Xterm R6

puty setting for tmux

Additional key settings

set -g terminal-overrides "xterm*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"
unbind M-Up
unbind M-Down
unbind M-Right
unbind M-Left
unbind M-1
unbind M-2
unbind M-3
unbind M-4
unbind M-5
unbind M-n
unbind M-o
unbind M-p
unbind C-Up
unbind C-Down
unbind C-Left
unbind C-Right

# unbind single keys
unbind Up
unbind Down
unbind Right
unbind Left
unbind {
unbind }
unbind l
unbind n
unbind p
unbind o

bind-key -n F1 select-window -t :0
bind-key -n F2 select-window -t :1
bind-key -n F3 select-window -t :2
bind-key -n F4 select-window -t :3
bind-key -n F5 select-window -t :4
bind-key -n F12 new-window

bind-key -n M-Right next-window
bind-key -n M-Left previous-window

bind-key -n M-1 select-layout even-horizontal
bind-key -n M-2 select-layout even-vertical
bind-key -n M-3 select-layout main-horizontal
bind-key -n M-4 select-layout main-vertical
bind-key -n M-5 select-layout main-vertical

bind-key -n C-Right select-pane -R
bind-key -n C-Left  select-pane -L
bind-key -n C-Up    select-pane -U
bind-key -n C-Down  select-pane -D

bind-key -n M-x confirm-before -p "kill-pane #P? (y/n)" kill-pane
bind-key -n M-Pageup swap-pane -U
bind-key -n M-PageDown swap-pane -D

Reference

[1]: http://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/
[2]: https://superuser.com/questions/1165287/ctrl-arrow-keys-for-tmux-not-working-in-putty

Updated:

Leave a Comment