-
Notifications
You must be signed in to change notification settings - Fork 1
/
.tmux.conf
194 lines (159 loc) · 7.07 KB
/
.tmux.conf
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
187
188
189
190
191
192
193
194
# Credits to https://github.com/klaxalk/linux-setup
set-option -g assume-paste-time 1
set-option -g default-command ""
set-option -g destroy-unattached off
set-option -g detach-on-destroy on
set-option -g display-panes-active-colour red
set-option -g display-panes-colour blue
set-option -g display-panes-time 1000
set-option -g display-time 750
set-option -g history-limit 5000
set-option -g key-table "root"
set-option -g lock-after-time 0
set-option -g lock-command "lock -np"
set-option -g message-command-style fg=yellow,bg=black
set-option -g message-style fg=black,bg=yellow
set-option -g mouse off
set-option -g prefix C-b
set-option -g prefix2 None
set-option -g renumber-windows on
set-option -g repeat-time 500
set-option -g set-titles off
set-option -g set-titles-string "#S:#I:#W - "#T" #{session_alerts}"
set-option -g status on
set-option -g status-interval 15
set-option -g status-justify left
set-option -g status-keys vi
set-option -g status-left "[#S] "
set-option -g status-left-length 10
set-option -g status-left-style default
set-option -g status-position bottom
set-option -g status-right " "#{=21:pane_title}" %H:%M"
set-option -g status-right-length 40
set-option -g status-right-style default
set-option -g status-style fg=black,bg=green
set-option -g update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-option -g visual-activity off
set-option -g visual-bell off
set-option -g visual-silence off
set-option -g word-separators " -_@"
set-option -g aggressive-resize on
set-window-option -g allow-rename off
set-window-option -g automatic-rename off
## 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
# 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 "
# 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
# }
# The statusbar {
set -g status-position bottom
set -g status-bg colour234
set -g status-fg colour15
# EPIGEN_DEL_BLOCK_COLORSCHEME_LIGHT {
set -g status-left "#[fg=colour15,bg=colour26] #S #[fg=colour103,bg=colour236,nobold,nounderscore,noitalics]"
set -g status-right "#[fg=colour239] #(echo $ROS_MASTER_URI) #[fg=colour239,bg=colour236,nobold,nounderscore,noitalics]#[fg=colour248,bg=colour239] %H:%M #[fg=colour15,bg=colour26] #H"
# EPIGEN_DEL_BLOCK_COLORSCHEME_LIGHT }
# EPIGEN_ADD_BLOCK_COLORSCHEME_LIGHT {
# set -g status-left ''
# set -g status-right '#[fg=colour15,bg=colour241,bold] %d/%m #[fg=colour15,bg=colour245,bold] %H:%M:%S #[fg=colour15,bg=colour241,bold] #H '
# EPIGEN_ADD_BLOCK_COLORSCHEME_LIGHT }
set -g status-right-length 50
set -g status-left-length 20
setw -g window-status-current-format "#[fg=colour236,bg=colour239,nobold,nounderscore,noitalics]#[fg=colour253,bg=colour239] #I |#[fg=colour253,bg=colour239] #W #[fg=colour239,bg=colour236,nobold,nounderscore,noitalics]" # EPIGEN_DEL_LINE_COLORSCHEME_LIGHT
# setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F ' # EPIGEN_ADD_LINE_COLORSCHEME_LIGHT
setw -g window-status-format "#[fg=colour244,bg=colour236] #I |#[fg=colour244,bg=colour236] #W " # EPIGEN_DEL_LINE_COLORSCHEME_LIGHT
# setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F ' # EPIGEN_ADD_LINE_COLORSCHEME_LIGHT
# }
# set vim control
setw -g mode-keys vi
bind -n F2 copy-mode
bind-key -Tcopy-mode-vi 'v' send -X begin-selection
bind-key -Tcopy-mode-vi 'y' send -X copy-pipe-and-cancel "xclip -selection clipboard -i"
bind-key -Tcopy-mode-vi 'C-V' send -X rectangle-toggle
unbind p
bind p run-shell "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# key bindings for moving over pannels
# binded to arrows for normal people
bind-key -n M-Left select-pane -L
bind-key -n M-Right select-pane -R
bind-key -n M-Up select-pane -U
bind-key -n M-Down select-pane -D
# binded to yuio for me
bind-key -n M-y select-pane -L
bind-key -n M-o select-pane -R
bind-key -n M-i select-pane -U
bind-key -n M-u select-pane -D
# colors
set-option -g default-terminal "screen-256color"
# remap kill button
bind-key k \
split-window \; \
setw synchronize-panes on \; \
send-keys "sleep 1; pwd >> /tmp/tmux_restore_path.txt; tmux list-panes -s -F \"#{pane_pid} #{pane_current_command}\" | grep -v tmux | awk '{print $1}' | while read in; do killp \$in; done" C-m exit C-m
# you still want the original bindings for splitting? CTRL+0 for horizontal, CTRL+9 for vertical?
# EPIGEN_ADD_BLOCK_TMUX_OLD_BINDINGS {
# bind -n C-s split-window -v -c "#{pane_current_path}"
# bind -n C-d split-window -h -c "#{pane_current_path}"
# EPIGEN_ADD_BLOCK_TMUX_OLD_BINDINGS }
# the new key bindings for splitting, CTRL-9 ( like CTRL-( ) for vertical, CTRL-0 ( like CTRL-) ) for horizontal
bind -n C-9 split-window -v -c "#{pane_current_path}"
bind -n C-0 split-window -h -c "#{pane_current_path}"
# bind c new-window -c "#{pane_current_path}"
# remap Ctrl-b
set-option -g prefix C-a
# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
# bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# allow to use vim's ctrlp from terminal
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
bind -n C-t new-window -a -c "#{pane_current_path}"
bind -n M-u next
bind -n M-i prev
# EPIGEN_DEL_BLOCK_TOMAS {
bind -n S-Right next
bind -n S-Left prev
# EPIGEN_DEL_BLOCK_TOMAS }
bind -n C-S-Left swap-window -t -1
bind -n C-S-Right swap-window -t +1
# reload config file (change file location to your the tmux.conf you want to use)
bind r source-file ~/.tmux.conf
# make delay shorter
set -sg escape-time 0
# Toggle synchronize-panes with ^S m
bind s \
set synchronize-panes \;\
display "Sync #{?synchronize-panes,ON,OFF}"
# make window/pane index start with 1
# set -g base-index 1
# setw -g pane-base-index 1
# example of interactive tmux commands... maybe it could be used in some way..
# bind C-e command-prompt -p "session?,message?" "run-shell \"tmux list-windows -t %1 \| cut -d: -f1\|xargs -I\{\} tmux send-keys -t %1:\{\} %2\""
bind-key m run-shell "~/git/linux-setup/scripts/tmux_mount.sh"
bind-key u run-shell "~/git/linux-setup/scripts/tmux_unmount.sh"