mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-01 21:47:45 +00:00
chore(config): tmux config tweaks
moved config around, did cleanup and moved TMUX_TMPDIR under XDG_STATE_HOME. added the state/tmux folder creation to the dotbot install config.
This commit is contained in:
@@ -468,6 +468,7 @@ export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
# tmux
|
||||
# https://tmux.github.io/
|
||||
msg "Setting up tmux configuration"
|
||||
export TMUX_TMPDIR="$XDG_STATE_HOME/tmux"
|
||||
export TMUX_PLUGINS="$XDG_CONFIG_HOME/tmux/plugins"
|
||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
## These settings are for zsh-tmux
|
||||
|
||||
@@ -4,91 +4,6 @@
|
||||
# - https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html
|
||||
# - https://github.com/dreamsofcode-io/tmux/blob/main/tmux.conf
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Bindings │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
# bind flags
|
||||
# -r = repeatable, only needs prefix once
|
||||
# -n = doesn't need prefix
|
||||
# -t = binds to a certain key-table (root, copy-mode, prefix, etc.)
|
||||
|
||||
# Set <prefix> to Control + Space, keeping the default of C-b intact.
|
||||
# C-Space send-prefix line doubles the prefix when in nested tmux session.
|
||||
# unbind C-b
|
||||
set -g prefix C-Space
|
||||
bind C-Space send-prefix
|
||||
|
||||
# Use Alt-arrow keys without prefix key to switch panes
|
||||
bind -n M-Left select-pane -L
|
||||
bind -n M-Right select-pane -R
|
||||
bind -n M-Up select-pane -U
|
||||
bind -n M-Down select-pane -D
|
||||
|
||||
# Smart pane switching with awareness of vim splits
|
||||
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'
|
||||
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
|
||||
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
|
||||
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
|
||||
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
|
||||
|
||||
# Reload tmux config with <prefix> + r
|
||||
unbind r
|
||||
bind r source-file ~/.dotfiles/config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
||||
|
||||
# Switch to next client with <prefix>( and previous with <prefix>)
|
||||
# Repeatable, only needs prefix once
|
||||
bind -r '(' switch-client -p\; refresh-client -S
|
||||
bind -r ')' switch-client -n\; refresh-client -S
|
||||
|
||||
# Switch between previous and next windows with repeatable
|
||||
# <prefix> + n and <prefix> + p
|
||||
bind -r n next-window
|
||||
bind -r p previous-window
|
||||
|
||||
# Switch between two most recently used windows
|
||||
bind Space last-window
|
||||
|
||||
# Move the current window to the next window or previous window position
|
||||
bind -r N run-shell "tmux swap-window -t $(expr $(tmux list-windows | grep \"(active)\" | cut -d \":\" -f 1) + 1)"
|
||||
bind -r P run-shell "tmux swap-window -t $(expr $(tmux list-windows | grep \"(active)\" | cut -d \":\" -f 1) - 1)"
|
||||
|
||||
bind-key > swap-window -t +1 \; next
|
||||
bind-key < swap-window -t -1 \; prev
|
||||
|
||||
# Open a new window with <prefix> + N
|
||||
bind N new-window
|
||||
|
||||
# Set default directory for new windows in this session to current directory:
|
||||
bind M-c attach-session -c "#{pane_current_path}"
|
||||
|
||||
# Open a new window in the current directory
|
||||
bind C new-window -c "#{pane_current_path}"
|
||||
|
||||
# Copy mode
|
||||
bind -T copy-mode-vi v send-keys -X begin-selection
|
||||
bind -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
||||
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
||||
|
||||
# Splits
|
||||
bind '"' split-window -v -c "#{pane_current_path}"
|
||||
bind '!' split-window -h -c "#{pane_current_path}"
|
||||
|
||||
# .local/bin/t triggers
|
||||
bind -r T new-window ~/.local/bin/t
|
||||
bind -r D run-shell "t ~/Code/ivuorinen/dotfiles"
|
||||
|
||||
# synchronize all panes in a window
|
||||
bind y setw synchronize-panes
|
||||
|
||||
#### copy mode : vim ####
|
||||
# copy mode using 'Esc'
|
||||
unbind [
|
||||
bind Escape copy-mode
|
||||
|
||||
# paste using 'p'
|
||||
unbind p
|
||||
bind p paste-buffer
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Settings │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
@@ -103,22 +18,21 @@ bind p paste-buffer
|
||||
set -g default-terminal "tmux-256color"
|
||||
# set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
|
||||
# Undercurl
|
||||
# set -g default-terminal "${TERM}"
|
||||
# undercurl
|
||||
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support
|
||||
set -as terminal-overrides ',*:Setulc=\E[58::2::::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colors - needs tmux-3.0
|
||||
|
||||
# Enable hyperlinks
|
||||
set -as terminal-overrides ',*:Hls=\E]8;id=%p1%s;%p2%s\E\\:Hlr=\E]8;;\E\\''
|
||||
# set -as terminal-overrides ',*:Hls=\E]8;id=%p1%s;%p2%s\E\\:Hlr=\E]8;;\E\\''
|
||||
|
||||
# Setting status on
|
||||
set -g status "on"
|
||||
|
||||
# Allow tmux to set the terminal title
|
||||
set -g set-titles on
|
||||
|
||||
# Hide clock
|
||||
set -g display-time 0
|
||||
set -g status-keys vi # vi keys to move between panes
|
||||
set -g detach-on-destroy off # don't detach tmux when killing a session
|
||||
set -g display-time 0 # Hide clock
|
||||
set -g focus-events on # Focus events enabled for terminals that support them
|
||||
set -g mouse on # Mouse support
|
||||
set -g set-titles "on" # Allow tmux to set the terminal title
|
||||
set -g set-titles on # Expose window title
|
||||
set -g status "on" # Setting status on
|
||||
|
||||
# Activity Monitoring (for when something happens in another pain)
|
||||
set -g monitor-activity on
|
||||
@@ -128,63 +42,28 @@ set -g visual-bell off
|
||||
# A bell in another window should cause a bell in the current window
|
||||
set -g bell-action any
|
||||
|
||||
# Expose window title
|
||||
set-option -g set-titles on
|
||||
|
||||
# Set bigger history limit
|
||||
set -g history-limit 20000
|
||||
|
||||
# Keep Tmux alive when the initial command is finished
|
||||
set -g remain-on-exit off
|
||||
|
||||
# Mouse support
|
||||
set -g mouse on
|
||||
|
||||
# Make delay shorter
|
||||
set -sg escape-time 0
|
||||
|
||||
# Start windows and panes at 1, not 0
|
||||
set -g base-index 1
|
||||
set -g pane-base-index 1
|
||||
set-window-option -g pane-base-index 1
|
||||
set-option -g renumber-windows on
|
||||
|
||||
# set vi-mode
|
||||
set-window-option -g mode-keys vi
|
||||
|
||||
# don't detach tmux when killing a session
|
||||
set -g detach-on-destroy off
|
||||
|
||||
# address vim mode switching delay (http://superuser.com/a/252717/65504)
|
||||
set -s escape-time 0
|
||||
|
||||
# Focus events enabled for terminals that support them
|
||||
set -g focus-events on
|
||||
|
||||
# Useful when using sharing a session with different size terminals
|
||||
setw -g aggressive-resize on
|
||||
set -g renumber-windows on
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Theme │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
set -g status-left-length "0"
|
||||
set -g status-right-length "30"
|
||||
|
||||
set-option -g status-position "bottom"
|
||||
set-option -g status-justify left
|
||||
set-option -g status-left ''
|
||||
set-option -g window-status-format ' #I:#W '
|
||||
set-option -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||
|
||||
set-option -g status-right "#S@#{hostname_short} #{tmux_mode_indicator}"
|
||||
|
||||
set -g pane-border-style "fg=#3b4261"
|
||||
set -g pane-active-border-style "fg=#7aa2f7"
|
||||
|
||||
# https://github.com/erikw/tmux-dark-notify
|
||||
set -g @dark-notify-theme-path-light '~/.dotfiles/config/tmux/theme-light.conf'
|
||||
set -g @dark-notify-theme-path-dark '~/.dotfiles/config/tmux/theme-dark.conf'
|
||||
set -g pane-border-style "fg=#3b4261"
|
||||
set -g status-justify "left"
|
||||
set -g status-left ''
|
||||
set -g status-left-length "0"
|
||||
set -g status-position "bottom"
|
||||
set -g status-right "#S@#{hostname_short} #{tmux_mode_indicator}"
|
||||
set -g status-right-length "30"
|
||||
set -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||
set -g window-status-format ' #I:#W '
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Plugins related configurations │
|
||||
@@ -200,33 +79,68 @@ set -g @suspend_key 'F12'
|
||||
### Maximum name length of a window
|
||||
set -g @tmux_window_name_max_name_len "20"
|
||||
### Replace $HOME with ~ in window names
|
||||
set -g @tmux_window_name_use_tilde "True"
|
||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh']"
|
||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'antidote', 'direnv', 'md5']" # Default is []
|
||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh']"
|
||||
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
||||
set -g @tmux_window_name_use_tilde "True"
|
||||
|
||||
## https://github.com/tmux-plugins/tmux-continuum
|
||||
# set -g @continuum-restore 'on'
|
||||
# https://github.com/erikw/tmux-dark-notify
|
||||
set -g @dark-notify-theme-path-light '~/.dotfiles/config/tmux/theme-light.conf'
|
||||
set -g @dark-notify-theme-path-dark '~/.dotfiles/config/tmux/theme-dark.conf'
|
||||
|
||||
## https://github.com/MunifTanjim/tmux-mode-indicator
|
||||
set -g @mode_indicator_prefix_mode_style 'bg=default,fg=#7aa2f7'
|
||||
set -g @mode_indicator_copy_mode_style 'bg=default,fg=yellow'
|
||||
set -g @mode_indicator_empty_mode_style 'bg=default,fg=#7aa2f7'
|
||||
set -g @mode_indicator_prefix_mode_style 'bg=default,fg=#7aa2f7'
|
||||
set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
|
||||
|
||||
# https://github.com/wfxr/tmux-fzf-url
|
||||
set -g @fzf-url-bind 'u'
|
||||
set -g @fzf-url-history-limit '2000'
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Bindings │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
# bind flags
|
||||
# -r = repeatable, only needs prefix once
|
||||
# -n = doesn't need prefix
|
||||
# -t = binds to a certain key-table (root, copy-mode, prefix, etc.)
|
||||
|
||||
# Set <prefix> to Control + Space, keeping the default of C-b intact.
|
||||
# C-Space send-prefix line doubles the prefix when in nested tmux session.
|
||||
set -g prefix C-Space
|
||||
bind C-Space send-prefix
|
||||
|
||||
# Use Alt-arrow keys without prefix key to switch panes
|
||||
bind -n M-Down select-pane -D
|
||||
bind -n M-Left select-pane -L
|
||||
bind -n M-Right select-pane -R
|
||||
bind -n M-Up select-pane -U
|
||||
|
||||
# Easier switching between window
|
||||
bind C-n next-window
|
||||
bind C-p previous-window
|
||||
bind C-a last-window
|
||||
|
||||
# Reload tmux config with <prefix> + r
|
||||
unbind r
|
||||
bind r "source-file ~/.dotfiles/config/tmux/tmux.conf; display 'tmux cfg reloaded!'"
|
||||
|
||||
# copy mode using 'Esc'
|
||||
unbind [
|
||||
bind Escape copy-mode
|
||||
|
||||
# paste using 'p'
|
||||
unbind p
|
||||
bind p paste-buffer
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ Plugins │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-sensible/sensible.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-window-name/tmux_window_name.tmux
|
||||
# run-shell ~/.dotfiles/config/tmux/plugins/tmux-continuum/continuum.tmux
|
||||
# run-shell ~/.dotfiles/config/tmux/plugins/tmux-sessionist/sessionist.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-mode-indicator/mode_indicator.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
~/.local/share/gnupg:
|
||||
mode: 0700
|
||||
~/.local/state:
|
||||
~/.local/state/tmux:
|
||||
~/.local/state/zsh:
|
||||
~/.ssh:
|
||||
mode: 0700
|
||||
|
||||
Reference in New Issue
Block a user