Last active
June 26, 2019 21:45
-
-
Save a-eid/ae80fdaabc8cdb1e4409c8afdf74109f to your computer and use it in GitHub Desktop.
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
# https://github.com/gpakosz/.tmux | |
# (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license, | |
# without any warranty. | |
# Copyright 2012— Gregory Pakosz (@gpakosz). | |
# -- navigation ---------------------------------------------------------------- | |
# if you're running tmux within iTerm2 | |
# - and tmux is 1.9 or 1.9a | |
# - and iTerm2 is configured to let option key act as +Esc | |
# - and iTerm2 is configured to send [1;9A -> [1;9D for option + arrow keys | |
# then uncomment the following line to make Meta + arrow keys mapping work | |
# set -ga terminal-overrides "*:kUP3=\e[1;9A,*:kDN3=\e[1;9B,*:kRIT3=\e[1;9C,*:kLFT3=\e[1;9D" | |
# -- windows & pane creation --------------------------------------------------- | |
# new window retains current path, possible values are: | |
# - true | |
# - false (default) | |
tmux_conf_new_window_retain_current_path=false | |
# new pane retains current path, possible values are: | |
# - true (default) | |
# - false | |
tmux_conf_new_pane_retain_current_path=true | |
# new pane tries to reconnect ssh sessions (experimental), possible values are: | |
# - true | |
# - false (default) | |
tmux_conf_new_pane_reconnect_ssh=false | |
# prompt for session name when creating a new session, possible values are: | |
# - true | |
# - false (default) | |
tmux_conf_new_session_prompt=false | |
# -- display ------------------------------------------------------------------- | |
# RGB 24-bit colour support (tmux >= 2.2), possible values are: | |
# - true | |
# - false (default) | |
tmux_conf_theme_24b_colour=false | |
# window style | |
tmux_conf_theme_window_fg='default' | |
tmux_conf_theme_window_bg='default' | |
# highlight focused pane (tmux >= 2.1), possible values are: | |
# - true | |
# - false (default) | |
tmux_conf_theme_highlight_focused_pane=false | |
# focused pane colours: | |
tmux_conf_theme_focused_pane_fg='default' | |
tmux_conf_theme_focused_pane_bg='#0087d7' # light blue | |
# pane border style, possible values are: | |
# - thin (default) | |
# - fat | |
tmux_conf_theme_pane_border_style=thin | |
# pane borders colours: | |
tmux_conf_theme_pane_border='#444444' # gray | |
tmux_conf_theme_pane_active_border='#00afff' # light blue | |
# pane indicator colours | |
tmux_conf_theme_pane_indicator='#00afff' # light blue | |
tmux_conf_theme_pane_active_indicator='#00afff' # light blue | |
# status line style | |
tmux_conf_theme_message_fg='#000000' # black | |
tmux_conf_theme_message_bg='#ffff00' # yellow | |
tmux_conf_theme_message_attr='bold' | |
# status line command style (<prefix> : Escape) | |
tmux_conf_theme_message_command_fg='#ffff00' # yellow | |
tmux_conf_theme_message_command_bg='#000000' # black | |
tmux_conf_theme_message_command_attr='bold' | |
# window modes style | |
tmux_conf_theme_mode_fg='#000000' # black | |
tmux_conf_theme_mode_bg='#ffff00' # yellow | |
tmux_conf_theme_mode_attr='bold' | |
# terminal title | |
# - built-in variables are: | |
# - #{circled_window_index} | |
# - #{circled_session_name} | |
# - #{hostname} | |
# - #{hostname_ssh} | |
# - #{username} | |
# - #{username_ssh} | |
tmux_conf_theme_terminal_title='#h ❐ #S ● #I #W' | |
# window status style | |
# - built-in variables are: | |
# - #{circled_window_index} | |
# - #{circled_session_name} | |
# - #{hostname} | |
# - #{hostname_ssh} | |
# - #{username} | |
# - #{username_ssh} | |
tmux_conf_theme_window_status_fg='#8a8a8a' # light gray | |
tmux_conf_theme_window_status_bg='#080808' # dark gray | |
tmux_conf_theme_window_status_attr='none' | |
tmux_conf_theme_window_status_format='#I #W' | |
#tmux_conf_theme_window_status_format='#{circled_window_index} #W' | |
#tmux_conf_theme_window_status_format='#I #W#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}' | |
# window current status style | |
# - built-in variables are: | |
# - #{circled_window_index} | |
# - #{circled_session_name} | |
# - #{hostname} | |
# - #{hostname_ssh} | |
# - #{username} | |
# - #{username_ssh} | |
tmux_conf_theme_window_status_current_fg='#000000' # black | |
tmux_conf_theme_window_status_current_bg='#00afff' # light blue | |
tmux_conf_theme_window_status_current_attr='bold' | |
tmux_conf_theme_window_status_current_format='#I #W' | |
#tmux_conf_theme_window_status_current_format='#{circled_window_index} #W' | |
#tmux_conf_theme_window_status_current_format='#I #W#{?window_zoomed_flag,🔍,}' | |
# window activity status style | |
tmux_conf_theme_window_status_activity_fg='default' | |
tmux_conf_theme_window_status_activity_bg='default' | |
tmux_conf_theme_window_status_activity_attr='underscore' | |
# window bell status style | |
tmux_conf_theme_window_status_bell_fg='#ffff00' # yellow | |
tmux_conf_theme_window_status_bell_bg='default' | |
tmux_conf_theme_window_status_bell_attr='blink,bold' | |
# window last status style | |
tmux_conf_theme_window_status_last_fg='#00afff' # light blue | |
tmux_conf_theme_window_status_last_bg='default' | |
tmux_conf_theme_window_status_last_attr='none' | |
# status left/right sections separators | |
tmux_conf_theme_left_separator_main='' | |
tmux_conf_theme_left_separator_sub='|' | |
tmux_conf_theme_right_separator_main='' | |
tmux_conf_theme_right_separator_sub='|' | |
#tmux_conf_theme_left_separator_main='' # /!\ you don't need to install Powerline | |
#tmux_conf_theme_left_separator_sub='' # you only need fonts patched with | |
#tmux_conf_theme_right_separator_main='' # Powerline symbols or the standalone | |
#tmux_conf_theme_right_separator_sub='' # PowerlineSymbols.otf font | |
# status left/right content: | |
# - separate main sections with '|' | |
# - separate subsections with ',' | |
# - built-in variables are: | |
# - #{battery_bar} | |
# - #{battery_hbar} | |
# - #{battery_percentage} | |
# - #{battery_status} | |
# - #{battery_vbar} | |
# - #{circled_session_name} | |
# - #{hostname_ssh} | |
# - #{hostname} | |
# - #{loadavg} | |
# - #{pairing} | |
# - #{prefix} | |
# - #{root} | |
# - #{synchronized} | |
# - #{uptime_d} | |
# - #{uptime_h} | |
# - #{uptime_m} | |
# - #{uptime_s} | |
# - #{username} | |
# - #{username_ssh} | |
tmux_conf_theme_status_left=' ❐ #S | ↑#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} ' | |
tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #{?battery_status, #{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} ' | |
# status left style | |
tmux_conf_theme_status_left_fg='#000000,#e4e4e4,#e4e4e4' # black, white , white | |
tmux_conf_theme_status_left_bg='#ffff00,#ff00af,#00afff' # yellow, pink, white blue | |
tmux_conf_theme_status_left_attr='bold,none,none' | |
# status right style | |
tmux_conf_theme_status_right_fg='#8a8a8a,#e4e4e4,#000000' # light gray, white, black | |
tmux_conf_theme_status_right_bg='#080808,#d70000,#e4e4e4' # dark gray, red, white | |
tmux_conf_theme_status_right_attr='none,none,bold' | |
# pairing indicator | |
tmux_conf_theme_pairing='👓 ' # U+1F453 | |
tmux_conf_theme_pairing_fg='none' | |
tmux_conf_theme_pairing_bg='none' | |
tmux_conf_theme_pairing_attr='none' | |
# prefix indicator | |
tmux_conf_theme_prefix='⌨ ' # U+2328 | |
tmux_conf_theme_prefix_fg='none' | |
tmux_conf_theme_prefix_bg='none' | |
tmux_conf_theme_prefix_attr='none' | |
# root indicator | |
tmux_conf_theme_root='!' | |
tmux_conf_theme_root_fg='none' | |
tmux_conf_theme_root_bg='none' | |
tmux_conf_theme_root_attr='bold,blink' | |
# synchronized indicator | |
tmux_conf_theme_synchronized='🔒' # U+1F512 | |
tmux_conf_theme_synchronized_fg='none' | |
tmux_conf_theme_synchronized_bg='none' | |
tmux_conf_theme_synchronized_attr='none' | |
# battery bar symbols | |
tmux_conf_battery_bar_symbol_full='◼' | |
tmux_conf_battery_bar_symbol_empty='◻' | |
#tmux_conf_battery_bar_symbol_full='♥' | |
#tmux_conf_battery_bar_symbol_empty='·' | |
# battery bar length (in number of symbols), possible values are: | |
# - auto | |
# - a number, e.g. 5 | |
tmux_conf_battery_bar_length='auto' | |
# battery bar palette, possible values are: | |
# - gradient (default) | |
# - heat | |
# - 'colour_full_fg,colour_empty_fg,colour_bg' | |
tmux_conf_battery_bar_palette='gradient' | |
#tmux_conf_battery_bar_palette='#d70000,#e4e4e4,#000000' # red, white, black | |
# battery hbar palette, possible values are: | |
# - gradient (default) | |
# - heat | |
# - 'colour_low,colour_half,colour_full' | |
tmux_conf_battery_hbar_palette='gradient' | |
#tmux_conf_battery_hbar_palette='#d70000,#ff5f00,#5fff00' # red, orange, green | |
# battery vbar palette, possible values are: | |
# - gradient (default) | |
# - heat | |
# - 'colour_low,colour_half,colour_full' | |
tmux_conf_battery_vbar_palette='gradient' | |
#tmux_conf_battery_vbar_palette='#d70000,#ff5f00,#5fff00' # red, orange, green | |
# symbols used to indicate whether battery is charging or discharging | |
tmux_conf_battery_status_charging='↑' # U+2191 | |
tmux_conf_battery_status_discharging='↓' # U+2193 | |
#tmux_conf_battery_status_charging='⚡ ' # U+26A1 | |
#tmux_conf_battery_status_charging='🔌 ' # U+1F50C | |
#tmux_conf_battery_status_discharging='🔋 ' # U+1F50B | |
# clock style (when you hit <prefix> + t) | |
# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right | |
tmux_conf_theme_clock_colour='#00afff' # light blue | |
tmux_conf_theme_clock_style='24' | |
# -- clipboard ----------------------------------------------------------------- | |
# in copy mode, copying selection also copies to the OS clipboard | |
# - true | |
# - false (default) | |
# on macOS, this requires installing reattach-to-user-namespace, see README.md | |
# on Linux, this requires xsel or xclip | |
tmux_conf_copy_to_os_clipboard=false | |
# -- user customizations ------------------------------------------------------- | |
# this is the place to override or undo settings | |
# increase history size | |
#set -g history-limit 10000 | |
# start with mouse mode enabled | |
set -g mouse on | |
# force Vi mode | |
# really you should export VISUAL or EDITOR environment variable, see manual | |
#set -g status-keys vi | |
#set -g mode-keys vi | |
# replace C-b by C-a instead of using both prefixes | |
# set -gu prefix2 | |
# unbind C-a | |
# unbind C-b | |
# set -g prefix C-a | |
# bind C-a send-prefix | |
# move status line to top | |
#set -g status-position top | |
set -g base-index 1 | |
# Automatically set window title | |
set-window-option -g automatic-rename on | |
set-option -g set-titles on | |
#set -g default-terminal screen-256color | |
set -g status-keys vi | |
set -g history-limit 10000 | |
setw -g mode-keys vi | |
setw -g monitor-activity on | |
bind-key v split-window -h | |
# bind-key " split-window -v | |
# Vim style pane selection | |
# bind h select-pane -L | |
# bind j select-pane -D | |
# bind k select-pane -U | |
# bind l select-pane -R | |
# Use Alt-vim keys without prefix key to switch panes | |
# bind -n M-h select-pane -L | |
# bind -n M-j select-pane -D | |
# bind -n M-k select-pane -U | |
# bind -n M-l select-pane -R | |
# 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 | |
# Shift arrow to switch windows | |
#bind -n S-Left previous-window | |
#bind -n S-Right next-window | |
# No delay for escape key press | |
set -sg escape-time 0 | |
# Reload tmux config | |
bind r source-file ~/.tmux.conf | |
# THEME | |
set -g status-bg black | |
set -g status-fg white | |
set -g status-interval 60 | |
set -g status-left-length 30 | |
set -g status-left '#[fg=green](#S) #(whoami)' | |
set -g status-right '#[fg=yellow]#(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=white]%H:%M#[default]' | |
### move btw panes | |
bind -n C-h select-pane -L | |
bind -n C-j select-pane -D | |
bind -n C-k select-pane -U | |
bind -n C-l select-pane -R | |
is_view_vim_diff="echo '#{pane_current_command}' | grep -iqE '(view|vim)(diff)?'" | |
bind -n C-h run "$is_view_vim_diff && tmux send-keys C-h || tmux select-pane -L" | |
bind -n C-j run "$is_view_vim_diff && tmux send-keys C-j || tmux select-pane -D" | |
bind -n C-k run "$is_view_vim_diff && tmux send-keys C-k || tmux select-pane -U" | |
bind -n C-l run "$is_view_vim_diff && tmux send-keys C-l || tmux select-pane -R" | |
# tmux plugin manager | |
# List of plugins | |
set -g @plugin 'tmux-plugins/tpm' | |
set -g @plugin 'tmux-plugins/tmux-sensible' | |
set -g @plugin 'tmux-plugins/tmux-yank' | |
set -g @plugin 'tmux-plugins/tmux-open' | |
set -g @plugin 'tmux-plugins/tmux-copycat' | |
set -g @yank_selection 'primary' | |
set -g @shell_mode 'vi' | |
# Other examples: | |
# set -g @plugin 'github_username/plugin_name' | |
# set -g @plugin 'git@github.com/user/plugin' | |
# set -g @plugin 'git@bitbucket.com/user/plugin' | |
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) | |
run '~/.tmux/plugins/tpm/tpm' | |
#fix opening new window/horizontal/vertical splits in current dir | |
bind c new-window -c "#{pane_current_path}" | |
bind '"' split-window -c "#{pane_current_path}" | |
bind % split-window -h -c "#{pane_current_path}" | |
bind '"' split-window -c "#{pane_current_path}" | |
bind "'" split-window -c "#{pane_current_path}" | |
bind v split-window -h -c "#{pane_current_path}" | |
bind N previous-window | |
bind n next-window | |
# clear while running tmux | |
bind A send-keys -R \; send-keys C-l \; clear-history | |
bind a send-keys -R \; send-keys C-l \; clear-history | |
# reload conf | |
bind r source-file ~/.tmux.conf \; display "Reloaded tmux.conf" | |
# resizing panes | |
bind-key -r J resize-pane -D 10 | |
bind-key -r K resize-pane -U 10 | |
bind-key -r H resize-pane -L 10 | |
bind-key -r L resize-pane -R 10 | |
bind-key -r j resize-pane -D 5 | |
bind-key -r k resize-pane -U 5 | |
bind-key -r h resize-pane -L 5 | |
bind-key -r l resize-pane -R 5 | |
bind-key -r M-j resize-pane -D | |
bind-key -r M-k resize-pane -U | |
bind-key -r M-h resize-pane -L | |
bind-key -r M-l resize-pane -R | |
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-h) || tmux select-pane -L" | |
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-j) || tmux select-pane -D" | |
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-k) || tmux select-pane -U" | |
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-l) || tmux select-pane -R" | |
bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-\\') || tmux select-pane -l" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment