# =============================

run-shell "tmux setenv -g TMUX_VERSION $(tmux -V | sed 's/[^0-9.]//g')"
run-shell "tmux setenv -g TMUX_VERSION_29 $(awk 'BEGIN {print (\"'$(tmux -V | sed 's/[^0-9.]//g')'\" >= 2.9)}')"

# -----------------------------
# Global settings
# -----------------------------
# set -g default-terminal xterm-256color
set -g default-terminal screen-256color
set-option -ga terminal-overrides ",*256col*:Tc"

set -g allow-passthrough on
set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM

# scrollback buffer n lines
set -g history-limit 10000

# listen for activity on all windows 
set -g bell-action any

# start window indexing at 1 window so the <prefix> 1 is easier to reach
set -g base-index 1

# xterm-style function key sequences
setw -g xterm-keys on

# control automatic window renaming
setw -g automatic-rename off

# enable wm window titles
set -g set-titles on

# remove <esc> key press delay
set -sg escape-time 0

# -----------------------------
# Key bindings
# -----------------------------
unbind-key C-v

# Create window
bind-key C-n new-window
# use C-n to create new windows because C-c is to interrupt

# split windows (create pane)
bind-key _ split-window -v -c '#{pane_current_path}'
bind-key | split-window -h -c '#{pane_current_path}'

# kill current pane when the inner process is unable to exit for whatever reason
# bind-key q confirm-before kill-pane

# <prefix> or Ctrl- or <prefix> Ctrl-
#   k --- previous pane
# h   l --- previous window / next window
#   j --- next pane

# navigate windows
unbind-key l
bind-key h select-window -t :-
bind-key C-h select-window -t :-
bind-key -n C-h select-window -t :-
bind-key l select-window -t :+
bind-key C-l select-window -t :+
bind-key -n C-l select-window -t :+

# navigate panes
# bind-key j select-pane -t :.-
# bind-key C-j select-pane -t :.-
# bind-key -n C-j select-pane -t :.-
# bind-key k select-pane -t :.+
# bind-key C-k select-pane -t :.+
# bind-key -n C-k select-pane -t :.+

# Copy-mode (vi-mode)
#

# vi-style controls for copy mode
setw -g mode-keys vi

# C-v (the original '[' is still availible) to enter vi-mode
bind-key [ copy-mode

# select and copy like vi in vi-mode
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-selection
# if encounter incompatible with send-keys/send -X, use lagacy setting:
# bind-key -t vi-copy 'v' begin-selection
# bind-key -t vi-copy 'y' copy-selection

# enable navigation in vi mode
bind-key -T copy-mode-vi C-h select-window -t :-
bind-key -T copy-mode-vi C-l select-window -t :+
bind-key -T copy-mode-vi C-j select-pane -t :.-
bind-key -T copy-mode-vi C-k select-pane -t :.+

# reload settings
bind-key R source-file ~/.tmux.conf

# -----------------------------
# Statusbar settings
# -----------------------------

# use vi-style key bindings in the status line
set -g status-keys vi

# amount of time for which status line messages and other indicators
# are displayed. time is in milliseconds.
set -g display-time 2000

# default statusbar colors
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
  "set -g status-fg white \
    set -g status-bg default \
    set -g status-attr default"
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
  "set -g status-style fg=white,bg=default"

# default window title colors
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
  "setw -g window-status-fg white \
    setw -g window-status-bg default \
    setw -g window-status-attr dim"
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
  "set -g window-status-style fg=white,bg=default,dim"

# active window title colors
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
  "setw -g window-status-current-fg cyan \
    setw -g window-status-current-bg default \
    setw -g window-status-current-attr bright \
    setw -g window-status-current-attr underscore"
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
  "set -g window-status-current-style fg=cyan,bg=default,bright,underscore"

# command/message line colors
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
  "set -g message-fg white \
    set -g message-bg black \
    set -g message-attr bright"
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
  "set -g message-style fg=white,bg=black,bright"

set -g @batt_icon_charge_tier8 '🌕'
set -g @batt_icon_charge_tier7 '🌖'
set -g @batt_icon_charge_tier6 '🌖'
set -g @batt_icon_charge_tier5 '🌗'
set -g @batt_icon_charge_tier4 '🌗'
set -g @batt_icon_charge_tier3 '🌘'
set -g @batt_icon_charge_tier2 '🌘'
set -g @batt_icon_charge_tier1 '🌑'
set -g @batt_icon_status_charged '🔋'
set -g @batt_icon_status_charging '⚡'
set -g @batt_icon_status_discharging '👎'
set -g @batt_color_status_primary_charged '#3daee9'
set -g @batt_color_status_primary_charging '#3daee9'

# what to be displayed on the right status
set -g status-interval 1
set -g status-right ' } Batt: #{battery_icon} #{battery_percentage} | #( ~/bin/tmux-right.sh ) | %Y-%m-%d %H:%M:%S'
set -g status-right-length 80

# what to be displayed on the left status
set -g status-left-length 30
set-option -g status-left "#[fg=green]#(echo $USER)#[default].#[fg=blue]#h#[default] { "

# -----------------------------
# Platform fix
# -----------------------------

if-shell "hash reattach-to-user-namespace 2> /dev/null" 'set-option -g default-command "reattach-to-user-namespace bash"'

#-----------------------------
# Plugins 
#-----------------------------
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-battery'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
