2019-02-27 13:42:45 +00:00
|
|
|
# Layout of this conf file:
|
|
|
|
# 1. Global Settings
|
|
|
|
# 2. Keybinds
|
|
|
|
# 3. Keybinds
|
|
|
|
# 4. Theme
|
|
|
|
|
|
|
|
# For rapid change prototyping, disabled normally:
|
|
|
|
# bind-key r source-file ~/.config/tmux/tmux.conf \; display-message "config reloaded."
|
|
|
|
|
|
|
|
######################
|
|
|
|
### 1. GLOBAL SETTINGS
|
|
|
|
######################
|
2019-02-04 12:12:59 +00:00
|
|
|
|
|
|
|
# show that activity happens but don't display a huge 'activity happening' notification
|
|
|
|
setw -g monitor-activity on
|
|
|
|
set -g visual-activity off
|
|
|
|
|
|
|
|
# Start counting windows and panes at 1
|
|
|
|
set -g base-index 1
|
|
|
|
setw -g pane-base-index 1
|
2019-02-27 13:42:45 +00:00
|
|
|
set -g renumber-windows on
|
2019-02-04 12:12:59 +00:00
|
|
|
|
|
|
|
# Terminal improvements
|
|
|
|
set -g terminal-overrides "xterm*:XT:smcup@:rmcup@"
|
|
|
|
set-window-option -g automatic-rename on
|
|
|
|
set-option -g set-titles on
|
|
|
|
set -g mouse on
|
|
|
|
set -g default-terminal screen-256color
|
|
|
|
set -g status-keys vi
|
|
|
|
set -g history-limit 10000
|
|
|
|
|
2019-02-27 13:42:45 +00:00
|
|
|
# Screen size is based on the smallest client looking at the current windows, not the smallest
|
|
|
|
# client connected to the overall session. If two clients are connected to the same session but not
|
|
|
|
# looking at the same window, why would they care about each others screen size?
|
|
|
|
setw -g aggressive-resize on
|
2019-02-04 12:12:59 +00:00
|
|
|
|
|
|
|
# No delay for escape key press
|
|
|
|
set -sg escape-time 0
|
|
|
|
|
2019-02-27 13:42:45 +00:00
|
|
|
# Set Cursor terminal override, so nvim can change cursor style when changing modes
|
|
|
|
# more info see nvim, :help tui-cursor-shape
|
|
|
|
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
|
2019-02-04 12:12:59 +00:00
|
|
|
|
2019-02-27 13:42:45 +00:00
|
|
|
####################
|
|
|
|
## 2. PLUGINS ##
|
|
|
|
####################
|
2019-02-04 12:12:59 +00:00
|
|
|
|
2019-02-04 14:41:57 +00:00
|
|
|
# Plugins -- TO INITALLY SET UP THE PLUGINS PRESS bind-key I (that is shift i)
|
|
|
|
# -- a message will appear after a second saying succes
|
2019-02-04 14:27:49 +00:00
|
|
|
#run-shell ~/.tmux-plugins/resurrect/resurrect.tmux
|
2019-02-04 14:41:57 +00:00
|
|
|
set -g @plugin 'tmux-plugins/tpm'
|
|
|
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
2019-02-04 16:15:31 +00:00
|
|
|
set -g @plugin 'tmux-plugins/tmux-yank'
|
2019-02-25 09:33:48 +00:00
|
|
|
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
|
2019-02-04 16:15:31 +00:00
|
|
|
set -g @plugin 'Morantron/tmux-fingers'
|
|
|
|
|
2019-03-12 14:47:07 +00:00
|
|
|
run "${TMUX_PLUGIN_MANAGER_PATH}/tpm/tpm"
|
2019-02-25 09:33:48 +00:00
|
|
|
|
2019-02-27 13:42:45 +00:00
|
|
|
#####################
|
|
|
|
## 3. KEYBINDINGS ##
|
|
|
|
#####################
|
|
|
|
|
|
|
|
# Unbind some defaults
|
|
|
|
unbind '"'
|
|
|
|
unbind %
|
|
|
|
|
|
|
|
# Custom modifier key
|
|
|
|
set -g prefix C-a
|
|
|
|
unbind-key C-b
|
|
|
|
bind-key -r C-a send-prefix
|
|
|
|
|
|
|
|
# Pane Navigation - Vim Keys
|
|
|
|
bind-key -n C-h select-pane -L
|
|
|
|
bind-key -n C-j select-pane -D
|
|
|
|
bind-key -n C-k select-pane -U
|
|
|
|
bind-key -n C-l select-pane -R
|
|
|
|
|
|
|
|
# Window Navigation - Prefix + Vim Keys
|
|
|
|
bind-key -r C-h select-window -t :-
|
|
|
|
bind-key -r C-l select-window -t :+
|
|
|
|
|
|
|
|
# Resize Panes
|
|
|
|
bind-key -r H resize-pane -L 3
|
|
|
|
bind-key -r J resize-pane -D 1
|
|
|
|
bind-key -r K resize-pane -U 1
|
|
|
|
bind-key -r L resize-pane -R 3
|
|
|
|
|
|
|
|
bind-key -r C-H resize-pane -L 10
|
|
|
|
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 10
|
|
|
|
|
|
|
|
# Send Pane to a new window (but stay on current window), join it back into the current window
|
|
|
|
bind-key B break-pane -d
|
|
|
|
bind-key C-b command-prompt -p "join pane from: " "join-pane -h -s '%%'"
|
|
|
|
|
|
|
|
# Swap panes within the current window (swaps pane # entered with currently selected pane)
|
|
|
|
bind-key b display-panes\; command-prompt -p "pane #: " "swap-pane -t '%%'"
|
|
|
|
|
|
|
|
# Kill tabs quicker
|
|
|
|
bind-key x kill-pane
|
|
|
|
bind-key C-x kill-window
|
|
|
|
|
|
|
|
# Split Window into panes - automatically handled by plugin
|
|
|
|
bind-key \ split-window -h -c '#{pane_current_path}'
|
|
|
|
bind-key - split-window -v -c '#{pane_current_path}'
|
|
|
|
|
|
|
|
# Open a sessions chooser
|
|
|
|
bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
|
|
|
|
|
|
|
|
# Quick-View Panes
|
|
|
|
bind-key h split-window -h 'top'
|
|
|
|
bind-key t split-window -h 'vim ~/Documents/ROADMAP.md'
|
|
|
|
|
|
|
|
#####################
|
|
|
|
## 4. THEME ##
|
|
|
|
#####################
|
2019-02-26 09:45:28 +00:00
|
|
|
|
2019-02-27 13:42:45 +00:00
|
|
|
## theme from github.com/jimeh/tmux-themepack, the powerline/default/blue theme.
|
2019-02-25 09:33:48 +00:00
|
|
|
## It is integrated with prefix highlight for this tmux conf
|
|
|
|
|
|
|
|
# Status update interval
|
|
|
|
set -g status-interval 1
|
|
|
|
|
|
|
|
# Basic status bar colors
|
|
|
|
set -g status-fg colour238
|
|
|
|
set -g status-bg colour233
|
|
|
|
|
|
|
|
# Left side of status bar
|
|
|
|
set -g status-left-bg colour233
|
|
|
|
set -g status-left-fg colour243
|
|
|
|
set -g status-left-length 40
|
|
|
|
set -g status-left "#[fg=colour232,bg=colour24,bold] #S #[fg=colour24,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
|
|
|
|
|
|
|
# Right side of status bar
|
|
|
|
set -g status-right-bg colour233
|
|
|
|
set -g status-right-fg colour243
|
|
|
|
set -g status-right-length 150
|
2019-02-04 16:15:31 +00:00
|
|
|
set -g status-right "#{prefix_highlight} #[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
2019-02-25 09:33:48 +00:00
|
|
|
# Sets both Prefix mode and Copy mode to be highlighted in the status bar.
|
|
|
|
set -g @prefix_highlight_show_copy_mode 'on'
|
|
|
|
set -g @prefix_highlight_copy_mode_attr 'fg=black,bg=yellow,bold' # default is 'fg=default,bg=yellow'
|
|
|
|
set -g @prefix_highlight_prefix_prompt 'Command'
|
|
|
|
set -g @prefix_highlight_copy_prompt 'Copy'
|
2019-02-04 16:15:31 +00:00
|
|
|
|
2019-02-25 09:33:48 +00:00
|
|
|
# Window status
|
|
|
|
set -g window-status-format " #I:#W#F "
|
|
|
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour33,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
|
|
|
|
|
|
|
# Current window status
|
|
|
|
set -g window-status-current-bg colour100
|
|
|
|
set -g window-status-current-fg colour235
|
|
|
|
|
|
|
|
# Window with activity status
|
|
|
|
set -g window-status-activity-bg colour245 # fg and bg are flipped here due to
|
|
|
|
set -g window-status-activity-fg colour233 # a bug in tmux
|
|
|
|
|
|
|
|
# Window separator
|
|
|
|
set -g window-status-separator ""
|
|
|
|
|
|
|
|
# Window status alignment
|
|
|
|
set -g status-justify centre
|
|
|
|
|
|
|
|
# Pane border
|
|
|
|
set -g pane-border-bg default
|
|
|
|
set -g pane-border-fg colour238
|
|
|
|
|
|
|
|
# Active pane border
|
|
|
|
set -g pane-active-border-bg default
|
|
|
|
set -g pane-active-border-fg colour24
|
|
|
|
|
|
|
|
# Pane number indicator
|
|
|
|
set -g display-panes-colour colour233
|
|
|
|
set -g display-panes-active-colour colour245
|
|
|
|
|
|
|
|
# Clock mode
|
|
|
|
set -g clock-mode-colour colour24
|
|
|
|
set -g clock-mode-style 24
|
|
|
|
|
|
|
|
# Message
|
|
|
|
set -g message-bg colour24
|
|
|
|
set -g message-fg black
|
|
|
|
|
|
|
|
# Command message
|
|
|
|
set -g message-command-bg colour233
|
|
|
|
set -g message-command-fg black
|
|
|
|
|
|
|
|
# Mode
|
|
|
|
set -g mode-bg colour24
|
|
|
|
set -g mode-fg colour231
|
2019-02-04 14:41:57 +00:00
|
|
|
|