mirror of
https://github.com/gaschz/dotfiles.git
synced 2025-06-06 18:08:31 +02:00
143 lines
5.5 KiB
Bash
143 lines
5.5 KiB
Bash
## tmux.conf
|
|
|
|
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
|
##
|
|
## SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
#! {{{ Options
|
|
## Usage
|
|
set-window-option -g wrap-search off
|
|
set-window-option -g aggressive-resize on
|
|
set-window-option -g pane-base-index 1
|
|
set-option -g base-index 1
|
|
set-option -g status-keys emacs
|
|
set-option -g mode-keys vi
|
|
set-option -g mouse on
|
|
set-option -g history-limit 10000
|
|
set-option -g repeat-time 2000
|
|
set-option -g escape-time 50
|
|
set-option -g status-position top
|
|
set-option -g default-terminal screen-256color
|
|
# set-option -g default-terminal tmux-256color # on newer ncurses
|
|
set-option -g display-panes-time 2000
|
|
set-option -g display-time 2000
|
|
set-option -g focus-events on
|
|
set-option -g status-interval 5
|
|
set-option -g set-titles on
|
|
|
|
## Visual
|
|
set-option -g display-panes-active-colour 'red'
|
|
set-option -g display-panes-colour 'white'
|
|
set-option -g message-command-style 'default'
|
|
set-option -g message-style 'default'
|
|
set-option -g clock-mode-colour 'red'
|
|
set-option -g clock-mode-style '24'
|
|
set-option -g mode-style 'bg=brightred'
|
|
set-option -g pane-active-border-style 'fg=brightcyan'
|
|
set-option -g pane-border-style 'default'
|
|
set-option -g window-status-activity-style 'fg=brightyellow,bg=black'
|
|
set-option -g window-status-current-format ' #I:#W#F '
|
|
set-option -g window-status-current-style 'fg=black,bg=brightred'
|
|
set-option -g window-status-format ' #I:#W#F '
|
|
set-option -g window-status-separator ''
|
|
|
|
## Status
|
|
set-option -g status-interval '1'
|
|
set-option -g status-justify 'centre'
|
|
set-option -g status-style 'fg=brightcyan,bg=black'
|
|
set-option -g status-left '#{?client_prefix,#[bg=brightred]#[fg=black]+#[bg=black] , }#[bg=black]#[fg=brightgreen]#S #[fg=brightyellow]#I #[fg=brightcyan]#P'
|
|
set-option -g status-left-length '40'
|
|
set-option -g status-left-style 'fg=green,bg=black'
|
|
set-option -g status-right '#{tmux_mode_indicator} #[fg=brightcyan]#H #[fg=brightyellow]%H:%M:%S'
|
|
set-option -g status-right-length '40'
|
|
set-option -g status-right-style 'fg=brightcyan,bg=black'
|
|
|
|
## Terminal capabilities and update environment
|
|
set-option -g terminal-overrides '*256color:Tc,xterm*:XT:Cc=\E]12;%p1%s\007:Cr=\E]112\007:Cs=\E[%p1%d q,rxvt-unicode*:XT:sitm@:ritm@'
|
|
set-option -g update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP"
|
|
set-environment -gu DBUS_SESSION_BUS_ADDRESS
|
|
|
|
## }}}
|
|
#! {{{ Bindings
|
|
## Prefix
|
|
set-option -g prefix C-s
|
|
unbind-key C-b
|
|
bind-key C-s send-prefix
|
|
bind-key C-s last-window
|
|
## Prompt
|
|
unbind-key \;
|
|
bind-key \; command-prompt
|
|
## Window
|
|
bind-key | split-window -h
|
|
bind-key - split-window -v
|
|
unbind-key '"'
|
|
unbind-key %
|
|
bind-key C-c new-window
|
|
bind-key ` select-window -t 0
|
|
bind-key -r C-p select-window -t :- # equiv: previous-window
|
|
bind-key -r C-n select-window -t :+ # equiv: next-window
|
|
## Pane
|
|
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 C-h resize-pane -L 5
|
|
bind-key -r C-j resize-pane -D 5
|
|
bind-key -r C-k resize-pane -U 5
|
|
bind-key -r C-l resize-pane -R 5
|
|
bind-key _ resize-pane -Z
|
|
bind-key H join-pane -b -h -t !
|
|
bind-key J join-pane -t !
|
|
bind-key @ join-pane -t !
|
|
bind-key K kill-pane
|
|
bind-key -r "<" swap-window -d -t -1
|
|
bind-key -r ">" swap-window -d -t +1
|
|
## Copy mode
|
|
bind-key Escape copy-mode
|
|
unbind-key p
|
|
bind-key p paste-buffer
|
|
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
|
bind-key -T copy-mode-vi 'y' send -X copy-selection
|
|
bind-key -T copy-mode-vi 'Space' send -X halfpage-down
|
|
bind-key -T copy-mode-vi 'Bspace' send -X halfpage-up
|
|
# bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xsel -i -p && xsel -o -p | xsel -i -b"
|
|
# bind p run "xsel -o | tmux load-buffer - ; tmux paste-buffer"
|
|
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -i -sel clip > /dev/null"
|
|
bind-key p run "xclip -o -sel clip | tmux load-buffer - ; tmux paste-buffer"
|
|
## Miscellaneous
|
|
bind-key C attach-session -t . -c '#{pane_current_path}' \; display-message "Session directory set to #{pane_current_path}"
|
|
bind-key E set-option mouse \; display-message "Mouse #{?mouse,on,off}"
|
|
bind-key X set-window-option synchronize-panes\; display-message "synchronize-panes is now #{?pane_synchronized,on,off}"
|
|
bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < /tmp/tmux-buffer"'
|
|
bind-key R run-shell '\
|
|
: "${XDG_CONFIG_HOME:=$HOME/.config}"; \
|
|
if test -f "$XDG_CONFIG_HOME/tmux/tmux.conf"; then \
|
|
tmux source "$XDG_CONFIG_HOME/tmux/tmux.conf"; \
|
|
tmux display-message "Reloaded configuration: $XDG_CONFIG_HOME/tmux/tmux.conf"; \
|
|
elif test -f "$HOME/.tmux/tmux.conf"; then \
|
|
tmux source "$HOME/.tmux/tmux.conf"; \
|
|
tmux display-message "Reloaded configuration: $HOME/.tmux/tmux.conf"; \
|
|
elif test -f "$HOME/.tmux.conf"; then \
|
|
tmux source "$HOME/.tmux.conf"; \
|
|
tmux display-message "Reloaded configuration: $HOME/.tmux.conf"; \
|
|
fi'
|
|
## }}}
|
|
|
|
#! {{{ Plugins
|
|
## 'tmux-plugins/tmux-resurrect'
|
|
set -g @resurrect-capture-pane-contents 'on'
|
|
set -g @resurrect-save 'M-S'
|
|
set -g @resurrect-restore 'M-R'
|
|
## 'tmux-plugins/tmux-continuum', dep tmux-resurrect
|
|
set -g @continuum-restore 'on'
|
|
## 'MunifTanjim/tmux-suspend'
|
|
set -g @suspend_key 'F12'
|
|
## }}}
|
|
|
|
#! {{{ End
|
|
if-shell 'test -f "$HOME/.tmux.conf.local"' 'source "$HOME/.tmux.conf.local"'
|
|
run-shell 'command -v tmux-sorcerer >/dev/null && tmux-sorcerer ~/.config/tmux/plugins ~/src/tmux/plugins'
|
|
## }}}
|
|
|
|
## vim:set foldmethod=expr foldexpr=getline(v\:lnum)=~'^#!'?'>1'\:'=':
|