-
Notifications
You must be signed in to change notification settings - Fork 2
/
.tmux.conf
174 lines (139 loc) · 6.44 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
# Universal tmux.conf for both local and remote sessions.
set -g default-terminal "screen-256color"
# mouse scroll
set-window-option -g mouse on
#up
bind-key k select-pane -U
#down
bind-key j select-pane -D
#left
bind-key h select-pane -L
#right
bind-key l select-pane -R
# Open new windows in current directory.
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
set -g @plugin 'tmux-plugins/tpm'
%if #{==:#{REMOTE_SERVER},true}
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
bind-key C-a last-window
# support OSC52
# See test:
# `printf "\e]52;c;%s\a" "$(echo -n 'THE TEXT TO COPY' | openssl base64 -A)"`
set -s set-clipboard on
set -as terminal-overrides ',screen-256color:Ms=\E]52;%p1%s;%p2%s\007'
set -g pane-border-style fg='#6272a4'
set -g pane-active-border-style fg='#ff79c6'
set -g status-style bg='#4c566a',fg='#d8dee9'
set -g status-interval 1
set -g status-left ' #{?client_prefix,Ω,ω} | #[default]'
set -g status-right '#[fg=#6272a4,bg=#4c566a]#($TMUX_PLUGIN_MANAGER_PATH/tmux-mem-cpu-load/tmux-mem-cpu-load --colors --powerline-right --interval 1)#[default]'
set -g status-left-length 60
set -g @plugin 'thewtex/tmux-mem-cpu-load'
set -g @plugin 'tmux-plugins/tmux-sensible'
# '@pane-is-vim' is a pane-local option that is set by the plugin on load,
# and unset when Neovim exits or suspends; note that this means you'll probably
# not want to lazy-load smart-splits.nvim, as the variable won't be set until
# the plugin is loaded
# Smart pane switching with awareness of Neovim splits.
bind-key -n C-h if -F "#{@pane-is-vim}" 'send-keys C-h' 'select-pane -L'
bind-key -n C-j if -F "#{@pane-is-vim}" 'send-keys C-j' 'select-pane -D'
bind-key -n C-k if -F "#{@pane-is-vim}" 'send-keys C-k' 'select-pane -U'
bind-key -n C-l if -F "#{@pane-is-vim}" 'send-keys C-l' 'select-pane -R'
# Alternatively, if you want to disable wrapping when moving in non-neovim panes, use these bindings
# bind-key -n C-h if -F '#{@pane-is-vim}' { send-keys C-h } { if -F '#{pane_at_left}' '' 'select-pane -L' }
# bind-key -n C-j if -F '#{@pane-is-vim}' { send-keys C-j } { if -F '#{pane_at_bottom}' '' 'select-pane -D' }
# bind-key -n C-k if -F '#{@pane-is-vim}' { send-keys C-k } { if -F '#{pane_at_top}' '' 'select-pane -U' }
# bind-key -n C-l if -F '#{@pane-is-vim}' { send-keys C-l } { if -F '#{pane_at_right}' '' 'select-pane -R' }
# Smart pane resizing with awareness of Neovim splits.
bind-key -n M-h if -F "#{@pane-is-vim}" 'send-keys M-h' 'resize-pane -L 3'
bind-key -n M-j if -F "#{@pane-is-vim}" 'send-keys M-j' 'resize-pane -D 3'
bind-key -n M-k if -F "#{@pane-is-vim}" 'send-keys M-k' 'resize-pane -U 3'
bind-key -n M-l if -F "#{@pane-is-vim}" 'send-keys M-l' 'resize-pane -R 3'
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if -F \"#{@pane-is-vim}\" 'send-keys C-\\' 'select-pane -l'"
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if -F \"#{@pane-is-vim}\" 'send-keys C-\\\\' 'select-pane -l'"
bind-key -T copy-mode-vi 'C-h' select-pane -L
bind-key -T copy-mode-vi 'C-j' select-pane -D
bind-key -T copy-mode-vi 'C-k' select-pane -U
bind-key -T copy-mode-vi 'C-l' select-pane -R
bind-key -T copy-mode-vi 'C-\' select-pane -l
%else
### Assume in local
set-option -sa terminal-overrides ',alacritty:Tc'
# OSC52
set -g set-clipboard on
set -g status-right-length 120
set -g status-left-length 25
# tmux-battery
set -g @batt_icon_charge_tier8 ""
set -g @batt_icon_charge_tier7 ""
set -g @batt_icon_charge_tier6 ""
set -g @batt_icon_charge_tier5 ""
set -g @batt_icon_charge_tier4 ""
set -g @batt_icon_charge_tier3 ""
set -g @batt_icon_charge_tier2 ""
set -g @batt_icon_charge_tier1 ""
set -g @pomodoro_toggle 'a' # Start a Pomodoro with tmux-prefix + p
set -g @pomodoro_cancel 'A' # Cancel a Pomodoro with tmux-prefix key + P
#
set -g @pomodoro_mins 25 # The duration of the pomodoro
set -g @pomodoro_break_mins 5 # The duration of the break after the pomodoro
#
set -g @pomodoro_on " "
set -g @pomodoro_complete " "
#
set -g @pomodoro_notifications 'on' # Turn on/off desktop notifications
bg="#303446"
text="#c6d0f5"
surface="#51576d"
seg_color_a="$bg $text"
set -g "@nova-status-style-bg" "$bg"
set -g "@nova-status-style-fg" "$text"
set -g "@nova-status-style-bg" "$bg"
set -g "@nova-status-style-active-fg" "$text"
set -g "@nova-status-style-active-bg" "$surface"
set -g @nova-rows 0
set -g @nova-nerdfonts true
set -g @nova-nerdfonts-left
set -g @nova-nerdfonts-right
set -g @nova-pane "#I#{?pane_in_mode, #{pane_mode},} #W"
set -g @nova-segment-datetime "%R"
set -g @nova-segment-datetime-colors "$seg_color_a"
set -g @nova-segment-cpu " #{cpu_percentage} #{ram_percentage}"
set -g @nova-segment-cpu-colors "$seg_color_a"
set -g @nova-segment-battery "#{battery_icon_charge} #{battery_percentage}"
set -g @nova-segment-battery-colors "$seg_color_a"
set -g @nova-segment-mode "#{?client_prefix,Ω,ω} #{pomodoro_status} "
set -g @nova-segment-mode-colors "$seg_color_a"
set -g @nova-segment-whoami "#(whoami)@#h"
set -g @nova-segment-whoami-colors "$seg_color_a"
set -g @nova-segment-pomodoro "#{pomodoro_status}"
set -g @nova-segment-pomodoro-colors "$seg_color_a"
set -g @nova-pane-justify "left"
set -g @nova-segments-0-left "mode pomodoro"
set -g @nova-segments-0-right "battery cpu datetime whoami"
# last Window
bind-key C-b last-window
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'o0th/tmux-nova'
set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-open'
set -g @plugin 'olimorris/tmux-pomodoro-plus'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'laktak/extrakto'
%endif
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
# Bring back clear screen under tmux prefix
bind C-l send-keys 'C-l'