summaryrefslogtreecommitdiff
path: root/config/common/tmux/tmux.conf
blob: 7508667be75d4c435b279ec1f4629f7a29962c76 (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#
# By Nicholas Marriott. Public domain.
# but -now- me.
#


###########################################################################
################# MISC. ###################################################
###########################################################################
###########################################################################
# Some tweaks to the status line
set -g status-right "%H:%M"
set -g window-status-current-style "underscore"

# If running inside (nested) tmux ($TMUX is set), then change the status line to red
%if #{TMUX}
set -g status-bg red
%endif

# Enable RGB color if running in xterm
set-option -sa terminal-overrides ",xterm*:Tc"

# Change the default $TERM to xterm-256color
# Necessary because vim ctrl arrows must be defined through TERM
set -g default-terminal "xterm-256color"
set-window-option -g xterm-keys on

# No bells at all
set -g bell-action none

# Keep windows around after they exit
set -g remain-on-exit off

# More history lines
set -g history-limit 16384

# Base window is Numero Uno
set -g base-index 1
set-window-option -g pane-base-index 1

# Set vi mode when copying
set-window-option -g mode-keys vi
# compatibility with vim for focus based events
set -g focus-events on

###########################################################################
################# KEYBINDINGS #############################################
###########################################################################
###########################################################################


# Reload config file
unbind r
bind r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf"

########## CLIPBOARD  ##########
unbind -T copy-mode-vi Space; #Default for begin-selection
unbind -T copy-mode-vi Enter; #Default for copy-selection
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -r -selection clipboard"
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -r -selection clipboard"

# Unbind ESC
set -sg escape-time 0

# Toggle status bar
unbind t
bind t set-option status

# Toggle monitoring window activity
bind m set monitor-activity\; display 'monitor-activity #{?monitor-activity,on,off}'

bind M run-shell "tmux set monitor-silence #{?monitor-silence,0,10}"\; display "monitor-silence #{?monitor-silence,on,off}"




# if-shell "true" {
#   if-shell "#{?monitor-silence,true,false}" {
#     set monitor-silence 0
#   }
#   if-shell "#{?monitor-silence,false,true}" {
#     set monitor-silence 10
#   }
#   display "monitor-silence #{?monitor-silence,on,off} #{monitor-silence}"
# }

# Toggle synchronized panes (sending keys to every pane)
unbind y 
bind y set synchronize-panes\; display 'synchronize-panes #{?synchronize-panes,on,off}'

# Paste from tmux buffer
unbind p
bind p paste-buffer

# Kill all windows
bind  x     confirm -p "Kill Pane?"     kill-pane
bind  X     confirm -p "Kill Window?"   kill-window
bind  M-x   confirm -p "Kill Session?"  kill-session
bind  M-X   confirm -p "Kill Server?"   kill-server
# Restart pane
bind k run -C "respawn-pane -k; send-keys !! 'C-j'"

########## SPLIT AND SWAP ###########
# Splitting
unbind v 
bind v split-window -h -c "#{pane_current_path}"
unbind h 
bind h split-window -v -c "#{pane_current_path}"
# Swapping left and right a la vim
unbind -n M-H
unbind -n M-L
bind -n M-H swap-pane -U
bind -n M-L swap-pane -D
## Resizing panes
bind -r C-H  resize-pane -L 5
bind -r C-J  resize-pane -D 5
bind -r C-K  resize-pane -U 5
bind -r C-L  resize-pane -R 5

## Default keybindings for resizing
unbind C-Up
unbind C-Left
unbind C-Down
unbind C-Right
unbind M-Up
unbind M-Left
unbind M-Down
unbind M-Right

# Join and break windows
unbind j
bind j command-prompt -1p "Take window:" "join-pane -s %%"
unbind J
bind J command-prompt -1p "Send to window:" "join-pane -t \:%% ; select-window -l"
# Break pane without losing focus
unbind b
bind b break-pane -t :
# Reset length and shit
unbind z 
bind z select-layout main-vertical

########## NAVIGATION ##########
# Pane navigating with h|j|k|l a la vim
unbind -n M-h
unbind -n M-j
unbind -n M-k
unbind -n M-l
bind -n -N "select leftwards pane"  M-h select-pane -L
bind -n -N "select downwards pane"  M-j select-pane -D
bind -n -N "select upwards pane"    M-k select-pane -U
bind -n -N "select rightwards pane" M-l select-pane -R
# Window navigating with M-u|i
unbind -n M-u
unbind -n M-i
bind -n M-u previous-window
bind -n M-i next-window
# Session navigeting with S-M-u|i
unbind -n M-y
unbind -n M-o
bind -n M-U switch-client -p
bind -n M-I switch-client -n

########## Windows ##########
# Rename window and open new window
unbind n # DEFAULT KEY: move to next window
unbind N
unbind w # DEFAULT KEY: change current window interactively aka choose-tree -zW
bind n command-prompt "rename-window '%%'"
bind N command-prompt "rename-session '%%'"
# Start new window where tmux started, will be home because of xmonad
bind w new-window -c "#{pane_current_path}" #-c "#{pane_current_path}"
bind W new-session -c "$HOME"

# Show tree 
unbind S
bind S choose-tree -Z

# Turn the mouse on, but without copy mode dragging
# set -g mouse on
# unbind -n MouseDrag1Pane
# unbind -T copy-mode MouseDrag1Pane

# Menu for mounting and ejecting devices.
unbind E 
bind E display-menu -T "#[align=centre]#I:#W" -x W -y W '' Mount 0 "display-popup -E 'amount'"