Refactor dotfiles - 2026-01-18
Changes: - Refactored .zshrc into modular oh-my-zsh/custom/ files - Created aliases.zsh, functions.zsh, path.zsh, keybindings.zsh - Added bira-time.zsh-theme (bira with timestamp) - Added tools/*.zsh for pyenv, nvm, kubectl - Updated .tmux.conf.local with cross-platform support - Updated gpakosz/.tmux framework - Cleaned up .zshenv
This commit is contained in:
parent
58ef6d327f
commit
47120112ad
12 changed files with 811 additions and 453 deletions
|
|
@ -1,358 +1,405 @@
|
|||
# https://github.com/gpakosz/.tmux
|
||||
# (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license,
|
||||
# without any warranty.
|
||||
# Copyright 2012— Gregory Pakosz (@gpakosz).
|
||||
# ~/.tmux.conf.local - Personal tmux configuration
|
||||
# Oh my tmux! https://github.com/gpakosz/.tmux
|
||||
# Updated: 2025-01
|
||||
# Cross-platform: Linux (Ubuntu) + macOS
|
||||
|
||||
# ==============================================================================
|
||||
# BINDINGS
|
||||
# ==============================================================================
|
||||
|
||||
tmux_conf_preserve_stock_bindings=false
|
||||
|
||||
|
||||
# -- navigation ----------------------------------------------------------------
|
||||
# ==============================================================================
|
||||
# SESSION CREATION
|
||||
# ==============================================================================
|
||||
|
||||
# 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"
|
||||
tmux_conf_new_session_prompt=false
|
||||
tmux_conf_new_session_retain_current_path=false
|
||||
|
||||
|
||||
# -- windows & pane creation ---------------------------------------------------
|
||||
# ==============================================================================
|
||||
# WINDOWS & PANES
|
||||
# ==============================================================================
|
||||
|
||||
# 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_window_reconnect_ssh=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
|
||||
# ==============================================================================
|
||||
|
||||
# Auto-detect 24-bit color support
|
||||
tmux_conf_24b_colour=auto
|
||||
|
||||
|
||||
# -- display -------------------------------------------------------------------
|
||||
# ==============================================================================
|
||||
# THEME
|
||||
# ==============================================================================
|
||||
|
||||
# RGB 24-bit colour support (tmux >= 2.2), possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
tmux_conf_theme_24b_colour=false
|
||||
tmux_conf_theme=enabled
|
||||
|
||||
# window style
|
||||
tmux_conf_theme_window_fg='default'
|
||||
tmux_conf_theme_window_bg='default'
|
||||
# Color palette (dark theme)
|
||||
tmux_conf_theme_colour_1="#080808" # dark gray
|
||||
tmux_conf_theme_colour_2="#303030" # gray
|
||||
tmux_conf_theme_colour_3="#8a8a8a" # light gray
|
||||
tmux_conf_theme_colour_4="#00afff" # light blue
|
||||
tmux_conf_theme_colour_5="#ffff00" # yellow
|
||||
tmux_conf_theme_colour_6="#080808" # dark gray
|
||||
tmux_conf_theme_colour_7="#e4e4e4" # white
|
||||
tmux_conf_theme_colour_8="#080808" # dark gray
|
||||
tmux_conf_theme_colour_9="#ffff00" # yellow
|
||||
tmux_conf_theme_colour_10="#ff00af" # pink
|
||||
tmux_conf_theme_colour_11="#5fff00" # green
|
||||
tmux_conf_theme_colour_12="#8a8a8a" # light gray
|
||||
tmux_conf_theme_colour_13="#e4e4e4" # white
|
||||
tmux_conf_theme_colour_14="#080808" # dark gray
|
||||
tmux_conf_theme_colour_15="#080808" # dark gray
|
||||
tmux_conf_theme_colour_16="#d70000" # red
|
||||
tmux_conf_theme_colour_17="#e4e4e4" # white
|
||||
|
||||
# highlight focused pane (tmux >= 2.1), possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
# Window style
|
||||
tmux_conf_theme_window_fg="default"
|
||||
tmux_conf_theme_window_bg="default"
|
||||
|
||||
# Pane settings
|
||||
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_focused_pane_bg="$tmux_conf_theme_colour_2"
|
||||
tmux_conf_theme_pane_border_style=thin
|
||||
tmux_conf_theme_pane_border="$tmux_conf_theme_colour_2"
|
||||
tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4"
|
||||
%if #{>=:#{version},3.2}
|
||||
tmux_conf_theme_pane_active_border="#{?pane_in_mode,$tmux_conf_theme_colour_9,#{?synchronize-panes,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_4}}"
|
||||
%endif
|
||||
|
||||
# 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="$tmux_conf_theme_colour_4"
|
||||
tmux_conf_theme_pane_active_indicator="$tmux_conf_theme_colour_4"
|
||||
|
||||
# pane indicator colours
|
||||
tmux_conf_theme_pane_indicator='#00afff' # light blue
|
||||
tmux_conf_theme_pane_active_indicator='#00afff' # light blue
|
||||
# Message/command style
|
||||
tmux_conf_theme_message_fg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_message_bg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_message_attr="bold"
|
||||
tmux_conf_theme_message_command_fg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_message_command_bg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_message_command_attr="bold"
|
||||
|
||||
# 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'
|
||||
|
||||
# status line style
|
||||
tmux_conf_theme_status_fg='#8a8a8a' # light gray
|
||||
tmux_conf_theme_status_bg='#080808' # dark gray
|
||||
tmux_conf_theme_status_attr='none'
|
||||
|
||||
# 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='\uE0B0' # /!\ you don't need to install Powerline
|
||||
tmux_conf_theme_left_separator_sub='\uE0B1' # you only need fonts patched with
|
||||
tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone
|
||||
tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md
|
||||
|
||||
# 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_y}
|
||||
# - #{uptime_d} (modulo 365 when #{uptime_y} is used)
|
||||
# - #{uptime_h}
|
||||
# - #{uptime_m}
|
||||
# - #{uptime_s}
|
||||
# - #{username}
|
||||
# - #{username_ssh}
|
||||
|
||||
# CPU info
|
||||
# CPU: #{cpu_icon} #{cpu_percentage} RAM: #{ram_icon} #{ram_percentage} ,
|
||||
|
||||
# #(curl wttr.in/Southampton?format=3) , # - for weather
|
||||
cpu_percentage_format="%3.1f%%" # printf format to use to display percentage
|
||||
tmux_conf_theme_status_left=' ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?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} '
|
||||
tmux_conf_theme_status_right=" IP:#(ip route get 8.8.8.8 | head -1 | cut -d' ' -f7) , \
|
||||
DNS:#(echo $(cat /etc/resolv.conf | grep 'nameserver [0-9]' | awk '{print $2}')) , \
|
||||
Gateway:#(echo $(route -n | sed -n '3p' | awk '{print $2}')) #{prefix}#{pairing} #[fg=green]#($TMUX_PLUGIN_MANAGER_PATH/tmux-mem-cpu-load/tmux-mem-cpu-load --colors --powerline-right --interval 2) , #{?battery_status, #{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname}"
|
||||
# Mode style
|
||||
tmux_conf_theme_mode_fg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_mode_bg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_mode_attr="bold"
|
||||
|
||||
|
||||
# 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 BAR
|
||||
# ==============================================================================
|
||||
|
||||
# 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'
|
||||
tmux_conf_theme_status_fg="$tmux_conf_theme_colour_3"
|
||||
tmux_conf_theme_status_bg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_status_attr="none"
|
||||
|
||||
# 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'
|
||||
# Terminal title
|
||||
tmux_conf_theme_terminal_title="#h ❐ #S ● #I #W"
|
||||
|
||||
# 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'
|
||||
# Window status
|
||||
tmux_conf_theme_window_status_fg="$tmux_conf_theme_colour_3"
|
||||
tmux_conf_theme_window_status_bg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_window_status_attr="none"
|
||||
tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||
|
||||
# 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'
|
||||
# Current window
|
||||
tmux_conf_theme_window_status_current_fg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_window_status_current_bg="$tmux_conf_theme_colour_4"
|
||||
tmux_conf_theme_window_status_current_attr="bold"
|
||||
tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||
|
||||
# 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'
|
||||
# Activity/bell/last window
|
||||
tmux_conf_theme_window_status_activity_fg="default"
|
||||
tmux_conf_theme_window_status_activity_bg="default"
|
||||
tmux_conf_theme_window_status_activity_attr="underscore"
|
||||
tmux_conf_theme_window_status_bell_fg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_window_status_bell_bg="default"
|
||||
tmux_conf_theme_window_status_bell_attr="blink,bold"
|
||||
tmux_conf_theme_window_status_last_fg="$tmux_conf_theme_colour_4"
|
||||
tmux_conf_theme_window_status_last_bg="$tmux_conf_theme_colour_2"
|
||||
tmux_conf_theme_window_status_last_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='·'
|
||||
# Powerline separators
|
||||
tmux_conf_theme_left_separator_main='\uE0B0'
|
||||
tmux_conf_theme_left_separator_sub='\uE0B1'
|
||||
tmux_conf_theme_right_separator_main='\uE0B2'
|
||||
tmux_conf_theme_right_separator_sub='\uE0B3'
|
||||
|
||||
# battery bar length (in number of symbols), possible values are:
|
||||
# - auto
|
||||
# - a number, e.g. 5
|
||||
tmux_conf_battery_bar_length='auto'
|
||||
# Status left: session name + uptime
|
||||
tmux_conf_theme_status_left=" ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} "
|
||||
|
||||
# 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
|
||||
# Status right: network info + mem/cpu + battery + time + user@host
|
||||
# Battery vars use #{?...} conditionals so they're safe on non-laptop systems
|
||||
tmux_conf_theme_status_right=" #{local_ip}#{gateway} #{prefix}#{mouse}#{pairing}#{synchronized} #{mem_cpu}#{battery_fallback} , %R , %d %b | #{username}#{root} | #{hostname} "
|
||||
|
||||
# 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
|
||||
# Status left colors: yellow, pink, green
|
||||
tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_6,$tmux_conf_theme_colour_7,$tmux_conf_theme_colour_8"
|
||||
tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_9,$tmux_conf_theme_colour_10,$tmux_conf_theme_colour_11"
|
||||
tmux_conf_theme_status_left_attr="bold,none,none"
|
||||
|
||||
# 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 # if you can't see this, fonts are not working
|
||||
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'
|
||||
# Status right colors: gray, red, white
|
||||
tmux_conf_theme_status_right_fg="$tmux_conf_theme_colour_12,$tmux_conf_theme_colour_13,$tmux_conf_theme_colour_14"
|
||||
tmux_conf_theme_status_right_bg="$tmux_conf_theme_colour_15,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_17"
|
||||
tmux_conf_theme_status_right_attr="none,none,bold"
|
||||
|
||||
|
||||
# -- clipboard -----------------------------------------------------------------
|
||||
# ==============================================================================
|
||||
# INDICATORS
|
||||
# ==============================================================================
|
||||
|
||||
tmux_conf_theme_pairing="👓"
|
||||
tmux_conf_theme_pairing_fg="none"
|
||||
tmux_conf_theme_pairing_bg="none"
|
||||
tmux_conf_theme_pairing_attr="none"
|
||||
|
||||
tmux_conf_theme_prefix="⌨"
|
||||
tmux_conf_theme_prefix_fg="none"
|
||||
tmux_conf_theme_prefix_bg="none"
|
||||
tmux_conf_theme_prefix_attr="none"
|
||||
|
||||
tmux_conf_theme_mouse="↗"
|
||||
tmux_conf_theme_mouse_fg="none"
|
||||
tmux_conf_theme_mouse_bg="none"
|
||||
tmux_conf_theme_mouse_attr="none"
|
||||
|
||||
tmux_conf_theme_root="!"
|
||||
tmux_conf_theme_root_fg="none"
|
||||
tmux_conf_theme_root_bg="none"
|
||||
tmux_conf_theme_root_attr="bold,blink"
|
||||
|
||||
tmux_conf_theme_synchronized="🔒"
|
||||
tmux_conf_theme_synchronized_fg="none"
|
||||
tmux_conf_theme_synchronized_bg="none"
|
||||
tmux_conf_theme_synchronized_attr="none"
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# BATTERY
|
||||
# ==============================================================================
|
||||
|
||||
tmux_conf_battery_bar_symbol_full="♥"
|
||||
tmux_conf_battery_bar_symbol_empty="·"
|
||||
tmux_conf_battery_bar_length="auto"
|
||||
tmux_conf_battery_bar_palette="gradient"
|
||||
tmux_conf_battery_hbar_palette="gradient"
|
||||
tmux_conf_battery_vbar_palette="gradient"
|
||||
tmux_conf_battery_status_charging="🔌"
|
||||
tmux_conf_battery_status_discharging="🔋"
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# CLOCK
|
||||
# ==============================================================================
|
||||
|
||||
tmux_conf_theme_clock_colour="$tmux_conf_theme_colour_4"
|
||||
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
|
||||
# ==============================================================================
|
||||
# URLSCAN
|
||||
# ==============================================================================
|
||||
|
||||
# increase history size
|
||||
#set -g history-limit 10000
|
||||
tmux_conf_urlscan_options="--compact --dedupe"
|
||||
|
||||
# start with mouse mode enabled
|
||||
#set -g mouse on
|
||||
|
||||
# force Vi mode
|
||||
# really you should export VISUAL or EDITOR environment variable, see manual
|
||||
# ==============================================================================
|
||||
# USER CUSTOMIZATIONS (keybindings, settings)
|
||||
# ==============================================================================
|
||||
|
||||
# Vi mode
|
||||
set -g status-keys vi
|
||||
set -g mode-keys vi
|
||||
|
||||
# replace C-b by C-a instead of using both prefixes
|
||||
# Prefix key: Alt-x (instead of C-b)
|
||||
set -gu prefix2
|
||||
unbind C-a
|
||||
# unbind C-b
|
||||
# set -g prefix C-a
|
||||
# bind C-a send-prefix
|
||||
set -g prefix M-x
|
||||
bind M-x send-prefix
|
||||
|
||||
# move status line to top
|
||||
#set -g status-position top
|
||||
# Mouse support
|
||||
set -g mouse on
|
||||
|
||||
bind \\ split-window -h -c "#{pane_current_path}" # Split panes horizontal
|
||||
bind - split-window -v -c "#{pane_current_path}" # Split panes vertical
|
||||
# Mouse scroll support
|
||||
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
|
||||
|
||||
# Use Alt-vim keys without prefix key to switch panes
|
||||
# Split panes with | and -
|
||||
bind \\ split-window -h -c "#{pane_current_path}"
|
||||
bind - split-window -v -c "#{pane_current_path}"
|
||||
|
||||
# Vim-style pane navigation (Alt + hjkl)
|
||||
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
|
||||
|
||||
# Arrow key pane navigation (Alt + arrows)
|
||||
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
|
||||
set -g mouse on
|
||||
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
|
||||
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
|
||||
|
||||
# Pane resizing (prefix + hjkl)
|
||||
bind j resize-pane -D 5
|
||||
bind k resize-pane -U 5
|
||||
bind l resize-pane -R 5
|
||||
bind h resize-pane -L 5
|
||||
|
||||
# Copy to system clipboard using xlip
|
||||
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
|
||||
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
|
||||
# Copy to system clipboard - cross-platform (Linux: xclip/xsel, macOS: pbcopy)
|
||||
# Uses a helper script approach for portability
|
||||
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "sh -c 'if command -v pbcopy >/dev/null 2>&1; then pbcopy; elif command -v xclip >/dev/null 2>&1; then xclip -in -selection clipboard; elif command -v xsel >/dev/null 2>&1; then xsel --clipboard --input; else cat > /dev/null; fi'"
|
||||
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "sh -c 'if command -v pbcopy >/dev/null 2>&1; then pbcopy; elif command -v xclip >/dev/null 2>&1; then xclip -in -selection clipboard; elif command -v xsel >/dev/null 2>&1; then xsel --clipboard --input; else cat > /dev/null; fi'"
|
||||
|
||||
# Toggle synchronize-panes
|
||||
bind-key s set-window-option synchronize-panes\; display-message "synchronize-panes is now #{?pane_synchronized,on,off}"
|
||||
|
||||
set-option -g default-shell /bin/zsh
|
||||
# Default shell - use zsh if available, otherwise fall back to default
|
||||
if-shell "command -v zsh >/dev/null 2>&1" "set-option -g default-shell /bin/zsh"
|
||||
|
||||
# Aggressive resize
|
||||
set-window-option -g aggressive-resize
|
||||
|
||||
# Putting this in .tmux.conf.local does not work :/ 3.0a
|
||||
# Custom added - MUST be in the end
|
||||
# List of plugins
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||
|
||||
# ==============================================================================
|
||||
# TPM PLUGINS
|
||||
# ==============================================================================
|
||||
|
||||
# Plugin auto-update on launch/reload
|
||||
tmux_conf_update_plugins_on_launch=true
|
||||
tmux_conf_update_plugins_on_reload=true
|
||||
tmux_conf_uninstall_plugins_on_reload=true
|
||||
|
||||
# Plugins (installed/updated automatically)
|
||||
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||
set -g @resurrect-processes 'vi vim nvim man less more tail top htop'
|
||||
|
||||
set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||
|
||||
#set -g @continuum-restore 'on'
|
||||
set -g @continuum-restore 'off'
|
||||
|
||||
set -g @plugin 'thewtex/tmux-mem-cpu-load'
|
||||
|
||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||
run -b '~/.tmux/plugins/tpm/tpm'
|
||||
|
||||
# ==============================================================================
|
||||
# ==============================================================================
|
||||
# CUSTOM VARIABLES (cross-platform)
|
||||
# ==============================================================================
|
||||
|
||||
# /!\ do not remove the following line
|
||||
# EOF
|
||||
|
||||
# /!\ do not "uncomment" the functions: the leading "# " characters are needed
|
||||
|
||||
# usage: #{local_ip}
|
||||
# Cross-platform: Linux (ip/hostname) and macOS (ipconfig/route)
|
||||
local_ip() {
|
||||
# Try Linux first (ip command)
|
||||
if command -v ip >/dev/null 2>&1; then
|
||||
result=$(ip route get 8.8.8.8 2>/dev/null | grep -oP 'src \K[0-9.]+' | head -1)
|
||||
[ -n "$result" ] && printf 'IP:%s' "$result" && return
|
||||
fi
|
||||
# macOS fallback (route + ifconfig)
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
iface=$(route get 8.8.8.8 2>/dev/null | awk '/interface:/ {print $2}')
|
||||
if [ -n "$iface" ]; then
|
||||
result=$(ipconfig getifaddr "$iface" 2>/dev/null)
|
||||
[ -n "$result" ] && printf 'IP:%s' "$result" && return
|
||||
fi
|
||||
fi
|
||||
# Final fallback: hostname -I (Linux)
|
||||
result=$(hostname -I 2>/dev/null | awk '{print $1}')
|
||||
[ -n "$result" ] && printf 'IP:%s' "$result" && return
|
||||
# No IP found
|
||||
printf 'IP:offline'
|
||||
}
|
||||
|
||||
# usage: #{gateway}
|
||||
# Cross-platform: Linux and macOS
|
||||
gateway() {
|
||||
# Try Linux first (ip command)
|
||||
if command -v ip >/dev/null 2>&1; then
|
||||
gw=$(ip route 2>/dev/null | awk '/default/ {print $3; exit}')
|
||||
[ -n "$gw" ] && printf ' GW:%s' "$gw" && return
|
||||
fi
|
||||
# macOS fallback
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
gw=$(route -n get default 2>/dev/null | awk '/gateway:/ {print $2}')
|
||||
[ -n "$gw" ] && printf ' GW:%s' "$gw" && return
|
||||
fi
|
||||
# No gateway - common on VPN or special network configs, don't show error
|
||||
printf ''
|
||||
}
|
||||
|
||||
# usage: #{mem_cpu}
|
||||
# Shows memory/CPU if tmux-mem-cpu-load plugin is installed
|
||||
mem_cpu() {
|
||||
# Check common installation paths
|
||||
for path in \
|
||||
"${TMUX_PLUGIN_MANAGER_PATH:-$HOME/.tmux/plugins}/tmux-mem-cpu-load/tmux-mem-cpu-load" \
|
||||
"$HOME/.tmux/plugins/tmux-mem-cpu-load/tmux-mem-cpu-load" \
|
||||
"/usr/local/bin/tmux-mem-cpu-load" \
|
||||
"/usr/bin/tmux-mem-cpu-load"
|
||||
do
|
||||
if [ -x "$path" ]; then
|
||||
"$path" --colors --powerline-right --interval 2 2>/dev/null
|
||||
return
|
||||
fi
|
||||
done
|
||||
# Plugin not installed - show basic load average as fallback
|
||||
if [ -f /proc/loadavg ]; then
|
||||
load=$(cut -d' ' -f1-3 /proc/loadavg 2>/dev/null)
|
||||
[ -n "$load" ] && printf 'Load:%s' "$load" && return
|
||||
fi
|
||||
# macOS fallback
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
load=$(sysctl -n vm.loadavg 2>/dev/null | awk '{print $2, $3, $4}')
|
||||
[ -n "$load" ] && printf 'Load:%s' "$load" && return
|
||||
fi
|
||||
printf ''
|
||||
}
|
||||
|
||||
# usage: #{battery_fallback}
|
||||
# Shows battery status or nothing on desktops/servers
|
||||
battery_fallback() {
|
||||
# Linux: check /sys/class/power_supply
|
||||
if [ -d /sys/class/power_supply/BAT0 ]; then
|
||||
cap=$(cat /sys/class/power_supply/BAT0/capacity 2>/dev/null)
|
||||
status=$(cat /sys/class/power_supply/BAT0/status 2>/dev/null)
|
||||
if [ -n "$cap" ]; then
|
||||
icon="🔋"
|
||||
[ "$status" = "Charging" ] && icon="🔌"
|
||||
printf '%s%s%%' "$icon" "$cap"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
# macOS: use pmset
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
battery=$(pmset -g batt 2>/dev/null | grep -o '[0-9]*%' | head -1)
|
||||
if [ -n "$battery" ]; then
|
||||
charging=$(pmset -g batt 2>/dev/null | grep -q 'AC Power' && echo 1)
|
||||
icon="🔋"
|
||||
[ -n "$charging" ] && icon="🔌"
|
||||
printf '%s%s' "$icon" "$battery"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
# No battery (desktop/server) - show nothing
|
||||
printf ''
|
||||
}
|
||||
|
||||
"$@"
|
||||
# /!\ do not remove the previous line
|
||||
# do not write below this line
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue