From 3d2508a785e74910196407fa38c5333fc63e38f0 Mon Sep 17 00:00:00 2001 From: dissimulo Date: Mon, 23 Mar 2026 04:20:35 -0700 Subject: [PATCH] Replace .tmux.conf symlink with real file; add IP to status-right, interval 60 --- .tmux.conf | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) mode change 120000 => 100644 .tmux.conf diff --git a/.tmux.conf b/.tmux.conf deleted file mode 120000 index fcd940ea..00000000 --- a/.tmux.conf +++ /dev/null @@ -1 +0,0 @@ -/home/dissimulo/.yadr/tmux/tmux.conf \ No newline at end of file diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 00000000..cb2f2e75 --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,103 @@ +# Ring the bell if any background window rang a bell +set -g bell-action any + +# Default termtype. If the rcfile sets $TERM, that overrides this value. +set -g default-terminal screen-256color + +# Keep your finger on ctrl, or don't +bind-key ^D detach-client + +# Create splits and vertical splits +bind-key v split-window -h -p 50 -c "#{pane_current_path}" +bind-key ^V split-window -h -p 50 -c "#{pane_current_path}" +bind-key s split-window -p 50 -c "#{pane_current_path}" +bind-key ^S split-window -p 50 -c "#{pane_current_path}" + +# Pane resize in all four directions using vi bindings. +# Can use these raw but I map them to shift-ctrl- in iTerm. +bind -r H resize-pane -L 5 +bind -r J resize-pane -D 5 +bind -r K resize-pane -U 5 +bind -r L resize-pane -R 5 + +# Smart pane switching with awareness of Vim splits. +# See: https://github.com/christoomey/vim-tmux-navigator +is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ + | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" +bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' +bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' +bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' +bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' + +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-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" +if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ + "bind-key -n 'C-\\' if-shell \"$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 + +# Use vi keybindings for tmux commandline input. +# Note that to get command mode you need to hit ESC twice... +set -g status-keys vi + +# Use vi keybindings in copy and choice modes +setw -g mode-keys vi + +# easily toggle synchronization (mnemonic: e is for echo) +# sends input to all panes in a given window. +bind e setw synchronize-panes on +bind E setw synchronize-panes off + +# set first window to index 1 (not 0) to map more to the keyboard layout... +set-option -g base-index 1 +set-window-option -g pane-base-index 1 +set-window-option -g mouse on + +# color scheme (styled as vim-powerline) +set -g status-left-length 52 +set -g status-right-length 451 +set -g status-style fg=white,bg=colour234 +set -g pane-border-style fg=colour245 +set -g pane-active-border-style fg=colour39 +set -g message-style fg=colour16,bg=colour221,bold +set -g status-left '#[fg=colour235,bg=colour252,bold] ❐ #S #[fg=colour252,bg=colour238,nobold]❯#[fg=colour245,bg=colour238,bold] #(whoami) ' +set -g status-right '#[bold][#[nobold,fg=colour229]#H#[fg=default] / #[fg=colour229]#(~/.local/bin/tmux-ip)#[fg=default,bold]]#[nobold,fg=colour255] %H:%M %d-%b-%Y ' +set -g window-status-format '#[fg=colour235,bg=colour252,nobold] #(~/.local/bin/tmux-window-icon #{window_index}) #(pwd="#{pane_current_path}"; echo ${pwd####*/}) #W ' +set -g window-status-current-format '#[fg=colour234,bg=colour39,bold] [#[fg=colour232,bold]#{?window_zoomed_flag,#[fg=colour228],} #(~/.local/bin/tmux-window-icon #{window_index}) #(pwd="#{pane_current_path}"; echo ${pwd####*/}) #W #[fg=colour234,bold]] ' +set-option -g status-interval 60 + +# Patch for OS X pbpaste and pbcopy under tmux. +set-option -g default-command "which reattach-to-user-namespace > /dev/null && reattach-to-user-namespace -l $SHELL || $SHELL" + +# Screen like binding +unbind C-b +set -g prefix C-a +bind a send-prefix + +# No escape time for vi mode +set -sg escape-time 0 + +# Screen like binding for last window +unbind l +bind C-a last-window + +# Bigger history +set -g history-limit 10000 + +# New windows/pane in $PWD +bind c new-window -c "#{pane_current_path}" + +# Fix key bindings broken in tmux 2.1 +set -g assume-paste-time 0 + +# force a reload of the config file +unbind r +bind r source-file ~/.tmux.conf \; display "Reloaded!" + +# Local config +if-shell "[ -f ~/.tmux.conf.user ]" 'source ~/.tmux.conf.user'