mirror of
https://gitlab.com/sagidayan/linux-config.git
synced 2024-10-31 21:15:25 +00:00
164 lines
5.6 KiB
Bash
164 lines
5.6 KiB
Bash
# Send prefix - Ctrl+a
|
|
set-option -g prefix C-a
|
|
unbind-key C-a
|
|
bind-key C-a send-prefix
|
|
|
|
# Esc fast
|
|
set -s escape-time 0
|
|
|
|
# For gapless window numbers
|
|
set-option -g renumber-windows on
|
|
|
|
# Use Alt+[hjkl] to switch panes - also (esc - h|j|k|l)
|
|
bind -n M-h select-pane -L
|
|
bind -n M-l select-pane -R
|
|
bind -n M-k select-pane -U
|
|
bind -n M-j select-pane -D
|
|
|
|
# <prefix>-h|l|Left|Right
|
|
bind-key h previous-window
|
|
bind-key Left previous-window
|
|
bind-key l next-window
|
|
bind-key Right next-window
|
|
|
|
# Mouse mode
|
|
setw -g mouse on
|
|
|
|
# Set easier window split keys
|
|
bind-key | split-window -h -c "#{pane_current_path}"
|
|
bind-key \ split-window -h -c "#{pane_current_path}"
|
|
bind-key - split-window -v -c "#{pane_current_path}"
|
|
# close window with <prefix-q>
|
|
bind-key q kill-window
|
|
# refresh window with <prefix-e>
|
|
bind-key e respawn-window -k -c "#{pane_current_path}"
|
|
|
|
# <prefix>-j/k for up down (useful to move between history commands)
|
|
bind-key k send-keys Up
|
|
bind-key j send-keys Down
|
|
|
|
# Easy config reload
|
|
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded."
|
|
|
|
# Lookup the cheat sheet <prefix>-i
|
|
bind-key i run-shell "tmux neww -n '🏳️ CHEATER\! 😎' ~/.shellconfig/cheat.sh"
|
|
|
|
# Open Workspace
|
|
bind-key o run-shell "tmux neww -n '🖥 Workspace Manager' ~/.shellconfig/workspaces/open_workspace.sh"
|
|
|
|
# Add/Save Workspace
|
|
bind-key a run-shell "tmux neww -n '🖥 Workspace Manager' 'cd #{pane_current_path} && ~/.shellconfig/workspaces/add_workspace.sh'"
|
|
|
|
# Delete (x) Workspace
|
|
bind-key x run-shell "tmux neww -n '🖥 Workspace Manager' ~/.shellconfig/workspaces/delete_workspace.sh"
|
|
|
|
# Change git branches fast <prefix>-b
|
|
#bind-key b send-keys "gitB" C-m
|
|
bind-key b run-shell "tmux neww -n ' Git Branches' 'cd #{pane_current_path} && (zsh -c \"source ~/.shellconfig/common.sh && gitB\" || sleep 1)' "
|
|
|
|
# Git add + fzf
|
|
bind-key g run-shell "tmux neww -n ' 🞥 Git Add' 'cd #{pane_current_path} && (git ls-files -m -o --exclude-standard | fzf -m --print0 --reverse --header \"🞥 Select files to stage. use [tab] for multi selection\" --preview \"bat --diff --color=always --style=numbers,changes,grid {}\" | xargs -0 -o -t git add)'"
|
|
|
|
# Get weather (Prefix-!)
|
|
bind-key ! run-shell "tmux neww -n '🌡️ Weather Peek' '(echo \"Fetching Weather...\" && curl -s \"https://wttr.in/?lang=en\") | bat --paging always -p'"
|
|
|
|
############################
|
|
# Themes
|
|
###########################
|
|
# Nord theme
|
|
# set -g @plugin "arcticicestudio/nord-tmux"
|
|
# Gruvbox Theme
|
|
# set -g @plugin 'egel/tmux-gruvbox'
|
|
# set -g @tmux-gruvbox 'dark' # or 'light'
|
|
|
|
############################
|
|
# Plugins
|
|
###########################
|
|
# Tmux yank (For clipboard integration)
|
|
set -g @plugin 'tmux-plugins/tmux-yank'
|
|
# Mouse select to clipboard
|
|
set -g @yank_selection_mouse 'clipboard' # or 'primary' or 'secondary'
|
|
|
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
|
run '~/.tmux/plugins/tpm/tpm'
|
|
|
|
# Buffer line size (History)
|
|
set -g history-limit 5000
|
|
|
|
# Use Ctrl-K to clear buffer
|
|
bind -n C-k clear-history
|
|
|
|
# Default Colors
|
|
set -g default-terminal "xterm-256color"
|
|
set-option -ga terminal-overrides ",xterm-256color:Tc"
|
|
|
|
# Home/End support
|
|
bind -n End send-key C-e
|
|
bind -n Home send-key C-a
|
|
|
|
# Set active pane border background
|
|
#set-option -g pane-active-border-style bg=#8abeb7
|
|
|
|
############################
|
|
# Tomorrow-Night Theme
|
|
###########################
|
|
## set status bar
|
|
set -g status-style bg=default
|
|
setw -g window-status-current-style bg="#282a2e"
|
|
setw -g window-status-current-style fg="#81a2be"
|
|
|
|
## highlight active window
|
|
#setw -g window-style 'bg=#282a2e'
|
|
#setw -g window-active-style 'bg=#1d1f21'
|
|
setw -g pane-active-border-style ''
|
|
|
|
## highlight activity in status bar
|
|
setw -g window-status-activity-style fg="#8abeb7"
|
|
setw -g window-status-activity-style bg="#1d1f21"
|
|
|
|
## pane border and colors
|
|
set -g pane-active-border-style bg=default
|
|
set -g pane-active-border-style fg="#373b41"
|
|
set -g pane-border-style bg=default
|
|
set -g pane-border-style fg="#373b41"
|
|
|
|
set -g clock-mode-colour "#81a2be"
|
|
set -g clock-mode-style 24
|
|
|
|
set -g message-style bg="#8abeb7"
|
|
set -g message-style fg="#000000"
|
|
|
|
set -g message-command-style bg="#8abeb7"
|
|
set -g message-command-style fg="#000000"
|
|
|
|
# message bar or "prompt"
|
|
set -g message-style bg="#2d2d2d"
|
|
set -g message-style fg="#cc99cc"
|
|
|
|
set -g mode-style bg="#1d1f21"
|
|
set -g mode-style fg="#de935f"
|
|
|
|
set -g status-left '#[fg=#f99157,bg=#2d2d2d] #S #[fg=#f99157,bg=colour235] '
|
|
|
|
# right side of status bar holds "[host name] (date time)"
|
|
set -g status-right-length 100
|
|
set -g status-right-style fg=black
|
|
set -g status-right-style bold
|
|
set -g status-right '#[fg=#6699cc,bg=#464646] #[fg=#f99157,bg=#2d2d2d] %H:%M:%S #[fg=colour235]|#[fg=#6699cc,bg=#464646] #[fg=#f99157,bg=#2d2d2d] %y/%m/%d #[fg=colour235]|#[fg=#6699cc,bg=#464646] #[fg=#f99157,bg=#2d2d2d] @#H '
|
|
|
|
# make background window look like white tab
|
|
set-window-option -g window-status-style bg=default
|
|
set-window-option -g window-status-style fg=white
|
|
set-window-option -g window-status-style none
|
|
set-window-option -g window-status-format '#[fg=#6699cc,bg=#464646] #I #[fg=#999999,bg=#2d2d2d] #W #[default]'
|
|
|
|
# make foreground window look like bold yellow foreground tab
|
|
set-window-option -g window-status-current-style none
|
|
set-window-option -g window-status-current-format '#[fg=#f99157]#[fg=#6699cc]#I #{?window_zoomed_flag,[🔎] ,}#[fg=#ffffff,bg=#6699cc] #W #[default]'
|
|
|
|
# active terminal yellow border, non-active white
|
|
set -g pane-border-style bg=default
|
|
set -g pane-border-style fg="#999999"
|
|
set -g pane-active-border-style fg="#f99157"
|
|
|
|
#set-hook -g after-resize-pane 'if "[ #{window_zoomed_flag} -eq 1 ]" "run \"tmux select-pane -P bg=red\"" "run \"tmux select-pane -P bg=black\""'
|