Last active
October 7, 2023 16:42
-
-
Save luckylittle/1d999e38f65aa0fed76feab549ab0dff to your computer and use it in GitHub Desktop.
Ultimate tmux.conf files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source ~/.tmux/.tmux.conf | |
source ~/.tmux/.tmux.conf.ui |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Setting the prefix from C-b to C-a | |
set -g prefix C-a | |
# Free the original Ctrl-b prefix keybinding | |
unbind C-b | |
# setting the delay between prefix and command | |
set -s escape-time 1 | |
# Ensure that we can send Ctrl-A to other apps | |
bind C-a send-prefix | |
# Set the base index for windows to 1 instead of 0 | |
set -g base-index 1 | |
# Set the base index for panes to 1 instead of 0 | |
setw -g pane-base-index 1 | |
# Reload the file with Prefix r | |
bind r source-file ~/.tmux.conf \; display "Reloaded!" | |
# splitting panes with | and - | |
bind | split-window -h | |
bind - split-window -v | |
# moving between panes with Prefix h,j,k,l | |
bind h select-pane -L | |
bind j select-pane -D | |
bind k select-pane -U | |
bind l select-pane -R | |
# Quick window selection | |
bind -r C-h select-window -t :- | |
bind -r C-l select-window -t :+ | |
# Pane resizing panes with Prefix H,J,K,L | |
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 | |
# mouse support - set to on if you want to use the mouse | |
set -g mouse off | |
# enable activity alerts | |
setw -g monitor-activity on | |
set -g visual-activity on | |
# enable vi keys. | |
setw -g mode-keys vi | |
# escape turns on copy mode | |
bind Escape copy-mode | |
# v in copy mode starts making selection | |
bind-key -T copy-mode-vi v send -X begin-selection | |
# make Prefix p paste the buffer. | |
unbind p | |
bind p paste-buffer | |
# shortcut for synchronize-panes toggle | |
bind C-s set-window-option synchronize-panes | |
# split pane and retain the current directory of existing pane | |
bind _ split-window -v -c "#{pane_current_path}" | |
bind \\ split-window -h -c "#{pane_current_path}" | |
# Log output to a text file on demand | |
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log" | |
# load private settings if they exist | |
if-shell "[ -f ~/.tmux/.tmux.private]" "source ~/.tmux/.tmux.private" | |
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" | |
bind-key -n C-\\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l" | |
bind C-l send-keys 'C-l' | |
# load plugins | |
set -g @plugin 'tmux-plugins/tpm' | |
set -g @plugin 'tmux-plugins/tmux-resurrect' | |
# set -g @plugin 'dracula/tmux' | |
run '~/.tmux/plugins/tpm/tpm' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Set the default terminal mode to 256color mode | |
set -g default-terminal "screen-256color" | |
# set the status line's colors | |
set -g status-style fg=white,bg=black | |
# set the color of the window list | |
setw -g window-status-style fg=cyan,bg=black | |
# set colors for the active window | |
setw -g window-status-current-style fg=white,bold,bg=red | |
# colors for pane borders | |
setw -g pane-border-style fg=green,bg=black | |
setw -g pane-active-border-style fg=white,bg=yellow | |
# active pane normal, other shaded out | |
#setw -g window-style fg=colour240,bg=colour235 | |
#setw -g window-active-style fg=white,bg=black | |
# Command / message line | |
setw -g message-style fg=white,bold,bg=black | |
# Status line left side to show Session:window:pane | |
set -g status-left-length 40 | |
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P" | |
# Status line right side - 50% | 31 Oct 13:37 | |
set -g status-right "#(~/battery Discharging) | #[fg=cyan]%d %b %R" | |
# Update the status line every sixty seconds | |
set -g status-interval 60 | |
# Center the window list in the status line | |
set -g status-justify centre |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source-file ~/.tmux.conf | |
# new window 'downloads' | |
new-session -s default -n downloads -d | |
send-keys -t default:1 'cd ~/Downloads' C-m | |
send-keys -t default '/home/lmaly/Projects/audible-cli/audible-last-3-manning.sh' C-m | |
send-keys -t default '/home/lmaly/Projects/predb-ovh-cli/whatsnew.sh' C-m | |
# new window 'dcs_prjcts' | |
new-window -n dcs_prjcts -t default | |
send-keys -t default 'cd ~/Documents' C-m | |
split-window -v -t default | |
split-window -h -t default | |
# select-layout -t default even-vertical | |
# select-layout -t default even-horizontal | |
select-layout -t default main-horizontal | |
send-keys -t default:2.2 'cd ~/Projects' C-m | |
# select first window (dcs_prjcts) | |
select-window -t default:1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment