-
Notifications
You must be signed in to change notification settings - Fork 7
/
tmux.remote.conf
176 lines (155 loc) · 11.3 KB
/
tmux.remote.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
#####################################################################################
## ##
## ████████╗███╗ ███╗██╗ ██╗██╗ ██╗ ██████╗ ██████╗ ███╗ ██╗███████╗ ##
## ╚══██╔══╝████╗ ████║██║ ██║╚██╗██╔╝ ██╔════╝██╔═══██╗████╗ ██║██╔════╝ ##
## ██║ ██╔████╔██║██║ ██║ ╚███╔╝ ██║ ██║ ██║██╔██╗ ██║█████╗ ##
## ██║ ██║╚██╔╝██║██║ ██║ ██╔██╗ ██║ ██║ ██║██║╚██╗██║██╔══╝ ##
## ██║ ██║ ╚═╝ ██║╚██████╔╝██╔╝ ██╗.remote.██████╗╚██████╔╝██║ ╚████║██║ ##
## ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ##
## ##
#####################################################################################
# misc. {{{
set-option -g default-shell "/usr/local/bin/zsh"
# set-option -g default-command "/opt/local/bin/reattach-to-user-namespace -l $SHELL"
set-option -sg default-terminal "tmux-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"
set-option -ga terminal-overrides ",tmux-256color:Tc"
set-option -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
set-option -sg escape-time 30
set-option -g focus-events on
set-option -g mouse on
set-option -g status-keys vi
set-option -g set-clipboard on
set-option -g history-limit 50000
set-option -g focus-events on
set-window-option -gq utf8 on
set-window-option -g monitor-activity on
set-window-option -g mode-keys vi
set-window-option -g automatic-rename on
#set-window-option -g xterm-keys on
# }}}
# command-message-status-style {{{
# set -g message-style 'bg=#282828,fg=yellow,bold'
# set -g message-style 'bg=default,fg=yellow,bold'
# set -g status-style 'bg=#282828'
# set -g status-style 'bg=default'
# }}}
# Titles {{{
set -g set-titles on
set -g set-titles-string '#{window_index}.#{pane_index} ☞ #{pane_current_command}'
# }}}
# pane-borders {{{
# set -g pane-border-status top
%if "#{!=:$SSH_CONNECTION,}"
set -gF pane-border-style '#{?pane_synchronized,fg=red,fg=blue}'
set -gF pane-active-border-style '#{?pane_synchronized,fg=brightred,fg=yellow}'
%else
set -gF pane-border-style '#{?pane_synchronized,fg=red,fg=white}'
set -gF pane-active-border-style '#{?pane_synchronized,fg=brightred,fg=green}'
%endif
set -g pane-border-format "(#{pane_index}) #{pane_title} → #{pane_current_command}"
# }}}
# mode style {{{
# setw -g mode-style 'bg=green, fg=colour232, bold'
# }}}
# status line {{{
set -g status-interval 4
set -g status-position bottom
# Powerline glyphs:
# status right {{{
# TMUX_PANE_CURRENT_PATH='#(tmux display-message -p "#{pane_current_path}" | sed "s#$HOME#~#g")'
# TMUX_PANE_CURRENT_PATH_var='#(tmuxcurpath=$(tmux display-message -p "#{pane_current_path}" | sed "s#$HOME#~#g"); \
# winwidth=$(tmux display-message -p "#{window_width}"); \
# winoverflow=$(echo "${#tmuxcurpath} > $winwidth * 0.4" | bc); \
# [[ $winoverflow -eq 1 ]] && echo "$tmuxcurpath" | perl -pE "s|(/.)[^/]*(?![^/]*$)|\1|g"; \
# [[ $winoverflow -eq 1 ]] || echo "$tmuxcurpath")'
# set -g status-right "#[bg=default,fg=white]$TMUX_PANE_CURRENT_PATH_var "
# set -ga status-right "#[fg=brightblack]#U@#[bold]#H #{online_status}"
# set -g status-right-length 150
# memcpu $TMUX_PLUGIN_MANAGER_PATH/tmux-mem-cpu-load/tmux-mem-cpu-load
# cpu {cpu_fg_color}#{cpu_percentage}#{cpu_icon}
# }}}
# statusline plugins {{{
# set -g @online_icon "#[fg=brightgreen,none] #[default]"
# set -g @offline_icon "#[fg=red,none] #[default]"
# }}}
# status left {{{
# set -g status-left '#[fg=black,bold,bg=green]#{pane_mode}#[fg=green,none]'
# set -ga status-left '#{?client_prefix,#[bg=#d65c0d],#[bg=default]} #[fg=brightwhite,bold]#S#[fg=none] '
# set -ga status-left '#[bg=default]#{?client_prefix,#[fg=#d65c0d] ,#[fg=default] }'
# set -g status-left-length 80
# }}}
# }}}
# Windows status {{{
# setw -g window-status-activity-style fg=yellow
# setw -g window-status-bell-style fg=red
# setw -g window-status-format "#[fg=yellow]#I#[fg=green]#F #[fg=white]#W"
# setw -g window-status-current-format "#[fg=brightyellow]#I#[fg=brightgreen]#F #[fg=brightwhite]#W"
# setw -g window-status-separator "#[fg=brightblack,bold] | "
# setw -g window-status-last-style default
# setw -g window-status-current-style
# setw -g window-status-style
# set -g status-justify left
# }}}
# List of plugins {{{
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-pain-control'
# set -g @plugin 'Morantron/tmux-fingers'
# set -g @plugin 'tmux-plugins/tmux-copycat'
# set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
# set -g @plugin 'soyuka/tmux-current-pane-hostname'
# set -g @plugin 'tmux-plugins/tmux-online-status'
# set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
# set -g @plugin 'tmux-plugins/tmux-sensible'
# set -g @plugin 'tmux-plugins/tmux-sessionist'
# set -g @plugin 'thewtex/tmux-mem-cpu-load'
# set -g @plugin 'tmux-plugins/tmux-open'
# set -g @plugin 'tmux-plugins/tmux-sidebar'
# set -g @plugin 'jbnicolai/tmux-fpp'
# set -g @plugin 'tmux-plugins/tmux-cpu'
# }}}
# plugin options {{{
set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"
set -g @scroll-speed-num-lines-per-scroll "1"
# }}}
# Key-Bindings {{{
# set -g prefix C-a
# bind C-a send-prefix
unbind '"'
unbind %
# unbind C-b
unbind -T copy-mode-vi MouseDragEnd1Pane
unbind -T copy-mode-vi y
# tmux controls
bind-key r source-file ~/.tmux.conf \; display-message "tmux reloaded!"
bind-key T command-prompt -p "New pane title:" 'select-pane -T "%%"'
bind-key F2 setw synchronize-panes \; display-message "#{?pane_synchronized,Panes Synchronized,Panes Free}"\; \
set -gF pane-border-style "$TMUX_PANE_BORDER_STYLE"\; \
set -gF pane-active-border-style "$TMUX_PANE_ACTIVE_BORDER_STYLE"
bind-key C-t setw pane-border-status
bind-key @ command-prompt -p "Move pane to (v):" "move-pane -v -t '%%'"
bind-key C-@ command-prompt -p "Move pane to (h):" "move-pane -h -t '%%'"
# Window swapping
bind-key b last-window
bind-key C-p previous-window
bind-key C-n next-window
# Copy mode bindings
# bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy" \; display-message "highlighted selection copied to system clipboard"
# bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy" \; display-message "highlighted selection copied to system clipboard"
bind-key -T copy-mode-vi v send-keys -X begin-selection
# Navigate to previous/next prompt
bind-key -T copy-mode-vi [ send-keys -X start-of-line \; send-keys -X search-backward "❯"
bind-key -T copy-mode-vi ] send-keys -X start-of-line \; send-keys -X search-forward "❯"
# Display menu
bind-key C-m if-shell -F -t = "#{||:#{mouse_any_flag},#{pane_in_mode}}" "select-pane -t=; send-keys -M" "display-menu -t= -xM -yM -T \"#[align=centre]#{pane_index} (#{pane_id})\" '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"} '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \"#{q:mouse_word}\"} '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \"#{q:mouse_word}\"} '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \"#{q:mouse_line}\"} '' 'Horizontal Split' 'h' {split-window -h} 'Vertical Split' 'v' {split-window -v} '' 'Swap Up' 'u' {swap-pane -U} 'Swap Down' 'd' {swap-pane -D} '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane} '' 'Kill' 'X' {kill-pane} 'Respawn' 'R' {respawn-pane -k} '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m} '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}"
bind-key -T root MouseDown3Pane if-shell -F -t = "#{||:#{mouse_any_flag},#{pane_in_mode}}" "select-pane -t=; send-keys -M" "display-menu -t= -xM -yM -T \"#[align=centre]#{pane_index} (#{pane_id})\" '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"} '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \"#{q:mouse_word}\"} '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \"#{q:mouse_word}\"} '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \"#{q:mouse_line}\"} '' 'Horizontal Split' 'h' {split-window -h} 'Vertical Split' 'v' {split-window -v} '' 'Swap Up' 'u' {swap-pane -U} 'Swap Down' 'd' {swap-pane -D} '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane} '' 'Kill' 'X' {kill-pane} 'Respawn' 'R' {respawn-pane -k} '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m} '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}"
bind-key -T root C-MouseDown3Status display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y S "Swap Left" l "swap-window -t:-1" "Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" "New After" w "new-window -a" "New At End" W new-window
bind-key -T root C-MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y S Next n "switch-client -n" Previous p "switch-client -p" Renumber N "move-window -r" Rename n "command-prompt -I \"#S\" \"rename-session -- '%%'\"" "New Session" s new-session "New Window" w new-window
bind-key -T root C-MouseDown3StatusRight display-menu -T "#[align=centre]#{client_name}" -t = -x M -y S Detach d detach-client "Detach & Kill" X "detach-client -P" "Detach Others" o "detach-client -a" Lock l lock-client
bind-key -T root C-MouseDown3Pane display-menu -T "#[align=centre]#{pane_index} (#{pane_id})" -t = -x M -y M "#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}" C-r "copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"" "#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}" C-y "send-keys -l -- \"#{q:mouse_word}\"" "#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}" c "set-buffer -- \"#{q:mouse_word}\"" "#{?mouse_line,Copy Line,}" l "set-buffer -- \"#{q:mouse_line}\"" "Horizontal Split" h "split-window -h" "Vertical Split" v "split-window -v" "Swap Up" u "swap-pane -U" "Swap Down" d "swap-pane -D" "#{?pane_marked_set,,-}Swap Marked" s swap-pane Kill X kill-pane Respawn R "respawn-pane -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" "#{?window_zoomed_flag,Unzoom,Zoom}" z "resize-pane -Z"
# }}}
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.tmux/plugins/tpm/'
run '~/.tmux/plugins/tpm/tpm'
# vim:set et sw=4 ts=4 fdm=marker: