aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/home/.config/tmux/tmux.conf
blob: c100ac9b97bbe7127fe571472c0f137412d3236c (plain) (blame)
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
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'tmux-plugins/tmux-sessionist'
set -g @plugin 'tmux-plugins/tmux-copycat'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-urlview'
set -g @plugin 'lawabidingcactus/tmux-gruvbox-truecolor'
set -g @plugin 'tmux-plugins/tmux-resurrect'

unbind C-b
set -g prefix `
set -g prefix2 C-Space
# Start window numbering at 1
set -g base-index 1

setw -g mode-keys vi

bind-key R run-shell 'tmux source-file ~/.config/tmux/tmux.conf > /dev/null; \
    tmux display-message "Sourced tmux.conf!"'
## Join windows: <prefix> s, <prefix> j
bind-key j command-prompt -p "join pane from:"  "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:"  "join-pane -t '%%'"

unbind-key -T copy-mode-vi v
unbind-key -T copy-mode-vi 'C-v'
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi 'C-v' send -X begin-selection \; send -X rectangle-toggle;
bind-key -T copy-mode-vi 'y' send -X copy-selection
bind-key -T copy-mode-vi 'C-e' send -X end-of-line
bind-key -T copy-mode-vi 'C-a' send -X start-of-line

is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"

bind -n 'M-h' if-shell "$is_vim" 'send-keys M-h' 'resize-pane -L 1'
bind -n 'M-j' if-shell "$is_vim" 'send-keys M-j' 'resize-pane -D 1'
bind -n 'M-k' if-shell "$is_vim" 'send-keys M-k' 'resize-pane -U 1'
bind -n 'M-l' if-shell "$is_vim" 'send-keys M-l' 'resize-pane -R 1'

bind-key -T copy-mode-vi M-h resize-pane -L 1
bind-key -T copy-mode-vi M-j resize-pane -D 1
bind-key -T copy-mode-vi M-k resize-pane -U 1
bind-key -T copy-mode-vi M-l resize-pane -R 1

set-option -g default-shell $SHELL

set -g default-terminal tmux-256color
# determine if we should enable 256-colour support
if '[ $TERM = st-256color ]' "set -as terminal-overrides ',st*:Tc'"
## update the TERM variable of terminal emulator when creating a new session or attaching a existing session
set -g update-environment 'DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY TERM'

# If you SSH into a host in a tmux window, you'll notice the window title of your terminal emulator remains to be user@localhost rather than user@server. To allow the title bar to adapt to whatever host you connect to, set the following in ~/.tmux.conf
set -g set-titles on
set -g set-titles-string "#T"

set -g automatic-rename-format "#{?pane_in_mode,[tmux],#{?#{==:#{pane_current_command},zsh}, #{b:pane_current_path}, #{b:pane_current_path}:#{pane_current_command}}}#{?pane_dead,[dead],}"

set-option -g renumber-windows on
#https://github.com/neovim/neovim/wiki/FAQ#esc-in-tmux-or-gnu-screen-is-delayed
set -sg escape-time 0

set -g focus-events on

set -g @resurrect-dir '$HOME/.local/share/tmux/resurrect'
# for vim
# set -g @resurrect-strategy-vim 'session'
# for neovim
# set -g @resurrect-strategy-nvim 'session'

# set -g @resurrect-capture-pane-contents 'on'

set -g @resurrect-save-shell-history 'off'

set -g @resurrect-processes 'ssh aerc spt newsboat btop gomuks "python /usr/bin/ikhal"'

set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.local/share/tmux/plugins'
if "test ! -d ~/.local/share/tmux/plugins/tpm" \
   "run 'git clone https://github.com/tmux-plugins/tpm ~/.local/share/tmux/plugins/tpm && ~/.local/share/tmux/plugins/tpm/bin/install_plugins'"
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.local/share/tmux/plugins/tpm/tpm'

# The default key bindings include <Ctrl-l> which is the readline key binding
# for clearing the screen. The following binding can be added to your
# ~/.tmux.conf file to provide an alternate mapping to clear-screen.
bind C-l send-keys 'C-l'