aboutsummaryrefslogtreecommitdiffstats
path: root/.tmux.conf
blob: 546fda7cfea52364c8bc62563f15af5305111202 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Ring the bell if any background window rang a bell
set -g bell-action any

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

# split windows like vim
# vim's definition of a horizontal/vertical split is reversed from tmux's
bind s split-window -v
bind v split-window -h

# move around panes with hjkl, as one would in vim after pressing ctrl-w
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# Create splits and vertical splits
bind-key v split-window -h
bind-key s split-window

# Pane resize in all four directions using HJKL
bind-key -r H resize-pane -L
bind-key -r J resize-pane -D
bind-key -r K resize-pane -U
bind-key -r L resize-pane -R
# Fix ctrl + L/R
bind-key -n C-Right send-keys w
bind-key -n C-Left send-keys b

# setting titles on
set -g set-titles on
set -g set-titles-string "#T"
set-option -g allow-rename on

set -g history-limit 10000
# set mouse mode on
set -g mouse on

# Wheel scroll in pane
unbind -T root WheelUpPane
unbind -T root WheelDownPane
bind -T root WheelUpPane if -Ft= '#{mouse_any_flag}' 'send-keys -M' 'if -Ft= "#{pane_in_mode}" "send-keys -M" "copy-mode -u"'

# Wheel scroll in pane WHILE in copy-mode
bind -tvi-copy WheelUpPane   halfpage-up
bind -tvi-copy WheelDownPane halfpage-down

# Logout with Ctrl+D
bind-key ^D detach-client

# Use vi keybindings for tmux commandline input.
# Note that to get command mode you need to hit ESC twice...
set -g status-keys vi

# Use vi keybindings in copy and choice modes
setw -g mode-keys vi

# v and y like vi in copy-mode
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
# clipboard settings
set -s set-clipboard on
bind-key C-p run "xclip -o | tmux load-buffer - ; tmux paste-buffer"
bind-key C-y run "tmux save-buffer - | xclip -i"

# set first window to index 1 (not 0) to map more to the keyboard layout...
set -g base-index 1

# color scheme (styled as vim-powerline)
set -g status-left-length 52
set -g status-right-length 451
set -g status-fg white
set -g status-bg colour234
set -g pane-border-fg colour245
set -g pane-active-border-fg colour39
set -g message-fg white
set -g message-bg colour221
set -g message-attr bold

# set status-interval to 2 for tmux-mem-cpu-load
set -g status-interval 1
set -g status-left '#[fg=colour235,bg=colour252,bold] #(hostname) #[fg=colour245,bg=colour238,bold] #(whoami) (#S) '
set -g status-right '#[fg=colour23,bg=colour234]|>#[fg=white,bg=colour234] CPU:#{cpu_percentage}, Battery: #{battery_percentage} #[fg=colour23,bg=colour234]<||>#[fg=white,bg=colour234] %H:%M:%S #[fg=colour23,bg=colour234]<|'
set -g window-status-format '#[fg=colour235,bg=colour252,bold] #I: #W '
set -g window-status-current-format '#[fg=black,bg=colour23,noreverse,bold] #I: #W '

# No escape time for vi mode
set -sg escape-time 0

# next/prev window
bind-key -n M-k next-window
bind-key -n M-j previous-window

# select windows
bind-key -n M-1 select-window -t 1
bind-key -n M-2 select-window -t 2
bind-key -n M-3 select-window -t 3
bind-key -n M-4 select-window -t 4
bind-key -n M-5 select-window -t 5
bind-key -n M-6 select-window -t 6
bind-key -n M-7 select-window -t 7
bind-key -n M-8 select-window -t 8
bind-key -n M-9 select-window -t 9
bind-key -n M-0 select-window -t 0

# Reload config
bind r source-file ~/.tmux.conf

# Swap windows
bind-key m command-prompt -p "move window to:"  "swap-window -t '%%'"


# List of plugins
# Supports `github_username/repo` or full git repo URLs
set -g @tpm_plugins '              \
  tmux-plugins/tpm                 \
  tmux-plugins/tmux-sensible       \
  tmux-plugins/tmux-cpu            \
  tmux-plugins/tmux-yank           \
  tmux-plugins/tmux-open           \
  tmux-plugins/tmux-battery        \
  tmux-plugins/tmux-logging        \
  tmux-plugins/tmux-online-status  \
  tmux-plugins/tmux-sidebar        \
  '
# Other examples:
# github_username/plugin_name    \
# git@github.com/user/plugin     \
# git@bitbucket.com/user/plugin  \

# Initializes TMUX plugin manager.
# Keep this line at the very bottom of tmux.conf.
run-shell '~/.tmux/plugins/tpm/tpm'