-
Notifications
You must be signed in to change notification settings - Fork 6
/
tmux.conf
203 lines (159 loc) · 6.75 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
195
196
197
198
199
200
201
202
203
# vim: set ft=conf:
# ----------------------------------------------------------------------
# tmux plugin manager
# ----------------------------------------------------------------------
# set -g @plugin 'tmux-plugins/tpm'
# set -g @plugin 'catppuccin/tmux'
# set -g @plugin 'tmux-plugins/tmux-sensible'
# set -g @plugin 'tmux-plugins/tmux-copycat'
# set -g @plugin 'tmux-plugins/tmux-yank'
# set -g @plugin 'tmux-plugins/tmux-open'
# set -g @catppuccin_flavour 'mocha'
# set -g @catppuccin_window_tabs_enabled on
# run '~/.tmux/plugins/tpm/tpm'
# ----------------------------------------------------------------------
# personal settings
# ----------------------------------------------------------------------
# number of windows
# set-option -g base-index 1
set-option -g renumber-windows on
set-option -g history-limit 30000
set-option -g set-titles on
set-window-option -g automatic-rename on
set-window-option -g monitor-activity on
# set-option -g status-utf8 on
set-option -g status-interval 1
# escape time
set -sg escape-time 1
set-option -g allow-rename off
# reload config file
bind r source-file ~/.tmux.conf
# disable annoying notification
setw -g monitor-activity off
# --------------------
# looks of status bar
# --------------------
# color code: http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
# support 256 colors
set-option -g default-terminal "xterm-256color"
set -ag terminal-overrides ",alacritty:RGB,xterm-256color:RGB"
# potision of status bar
# set-option -g status-position bottom
## Colorscheme: Solarized {{{2
#### COLOUR (Solarized 256)
# default statusbar colors
#set-option -g status-bg colour235 #base02
#set-option -g status-fg colour136 #yellow
#set-option -g status-attr default
set-option -g status-style fg=colour136,bg=colour235
# default window title colors
#set-window-option -g window-status-fg colour244 #base0
#set-window-option -g window-status-bg default
#set-window-option -g window-status-attr dim
set-window-option -g window-status-style fg=colour244,bg=black
# active window title colors
#set-window-option -g window-status-current-fg colour166 #orange
#set-window-option -g window-status-current-bg default
#set-window-option -g window-status-current-attr bright
set-window-option -g window-status-current-style fg=colour166,bg=default,bright
# pane border
#set-option -g pane-border-fg colour235 #base02
#set-option -g pane-active-border-fg colour240 #base01
set-option -g pane-border-style fg=colour235
set-option -g pane-border-style fg=colour240,bg=black
set-option -g pane-active-border-style fg=colour166
# set -g window-style bg=black
# set -g window-active-style bg=terminal
# message text
#set-option -g message-bg colour235 #base02
#set-option -g message-fg colour166 #orange
set-option -g message-style fg=colour166,bg=colour235
# pane number display
set-option -g display-panes-active-colour colour33 #blue
set-option -g display-panes-colour colour166 #orange
# clock
# set-window-option -g clock-mode-colour colour64 #green
# bell
# set-window-option -g window-status-bell-style fg=colour235,bg=colour160 #base02, red
#}}}
# set-option -g status-right "[#(tmux show-options -g prefix)] [%Y/%m/%d(%a) %T]"
set-option -g status-right-length 50
set-option -g status-left-length 50
# to make current_path is default
bind '"' split-window -c "#{pane_current_path}"
bind s split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind v split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Setup 'v' to begin selection as in Vim
bind-key -T copy-mode-vi v send-keys -X begin-selection
if-shell "uname | grep -q Darwin" 'bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"'
if-shell "uname | grep -q Linux" 'bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"'
# # Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
if-shell "uname | grep -q Darwin" 'bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"'
if-shell "uname | grep -q Darwin" 'bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"'
# reattach on OS X
if-shell "uname | grep -q Darwin" 'set -g default-command "reattach-to-user-namespace -l zsh"'
# bindkey for copy mode
bind-key -T copy-mode Escape send-keys -X clear-selection
bind-key -T copy-mode C-c send-keys -X cancel
bind-key -T copy-mode C-v send-keys -X rectangle-toggle
bind-key -T copy-mode V send-keys -X select-line
bind-key -T copy-mode-vi _ send-keys -X start-of-line
bind-key -T copy-mode-vi C-a send-keys -X start-of-line
bind-key -T copy-mode-vi 1 send-keys -X start-of-line
bind-key -T copy-mode-vi C-e send-keys -X end-of-line
bind-key -T copy-mode-vi 0 send-keys -X end-of-line
bind-key -T copy-mode w send-keys -X next-word
bind-key -T copy-mode e send-keys -X next-word-end
bind-key -T copy-mode b send-keys -X previous-word
bind-key -T copy-mode H send-keys -X top-line
bind-key -T copy-mode L send-keys -X bottom-line
bind-key -T copy-mode / send-keys -X search-forward
bind-key -T copy-mode ? send-keys -X search-backward
bind-key -T copy-mode C-b send-keys -X page-up
bind-key -T copy-mode C-f send-keys -X page-down
bind-key -T copy-mode C-u send-keys -X scroll-up
bind-key -T copy-mode C-d send-keys -X scroll-down
# move pane
# bind-key -r C-h select-window -t :-
# bind-key -r C-l select-window -t :+
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R
bind-key r send-keys "clear"\; send-keys "Enter"\; clear-history
bind-key -n M-C-h resize-pane -L -t 1
bind-key -n M-C-l resize-pane -R -t 1
bind-key -n M-C-k resize-pane -U -t 1
bind-key -n M-C-j resize-pane -D -t 1
# scroll with mouse
# you can select text by pushing option key
# set-window-option -g mode-mouse on
# set-option -g mouse-select-window on
# set-option -g mouse-select-pane on
# set-option -g mouse-resize-pane on
# set-option -g mouse on
# bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
# bind-key -n C-o select-pane -t :.+
# bind-key -n C-@ select-pane -t :.+
# # Screensaver
# set -g lock-after-time 600
# set -g lock-command "cmatrix -s -b"
# bind ^X lock-server
unbind C-b
set-option -g prefix C-t
# set-environment -gu VIRTUAL_ENV
bind-key -n M-C-p swap-window -t -1\; select-window -t -1
bind-key -n M-C-n swap-window -t +1\; select-window -t +1
bind -n M-c new-window -c "#{pane_current_path}"
bind -n M-p previous-window
bind -n M-n next-window
bind -n M-h select-pane -L
bind -n M-l select-pane -R
bind -n M-k select-pane -U
bind -n M-j select-pane -D
bind-key -r f run-shell "tmux neww tmux-sessionizer"