################################################################################
# Tmux Configuration File
# Location: ~/.tmux.conf
################################################################################

# Basic settings
set -g mouse on
set -s focus-events on
set -q -g status-utf8 on
setw -q -g utf8 on
set -g status-keys emacs
set -g mode-keys vi

################################################################################
# Prefix Key Configuration
################################################################################
unbind C-b
set -g prefix 'C-s'

################################################################################
# Copy Mode Configuration
################################################################################
bind -n M-v copy-mode
bind p paste-buffer

# Clipboard integration (requires xclip on Linux)
bind-key -n -T copy-mode-vi Enter send-keys -X copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'
bind-key -n -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'

# Copy mode key bindings
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind -T copy-mode-vi K send-keys -N 5 -X cursor-up
bind -T copy-mode-vi J send-keys -N 5 -X cursor-down
bind -T copy-mode-vi H send-keys -X start-of-line
bind -T copy-mode-vi L send-keys -X end-of-line
bind -T copy-mode-vi Y send-keys -X copy-end-of-line
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
bind -T copy-mode-vi = send-keys -X search-again
bind -T copy-mode-vi = send-keys -X search-reverse

################################################################################
# Window Navigation
################################################################################
bind -n M-p previous-window
bind -n M-n next-window
bind -n M-o new-window

################################################################################
# Pane Navigation
################################################################################
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
bind -n M-f resize-pane -Z

################################################################################
# Pane Splitting (maintains current path)
################################################################################
bind k split-window -vb -c "#{pane_current_path}"
bind j split-window -v -c "#{pane_current_path}"
bind h split-window -hb -c "#{pane_current_path}"
bind l split-window -h -c "#{pane_current_path}"

################################################################################
# Color and Theme Configuration
################################################################################
set -g default-terminal "tmux-256color"
set -g @catppuccin_flavour 'mocha'
set -g @catppuccin_window_status_style "rounded"

# Load Catppuccin theme
run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux

################################################################################
# Status Bar Configuration
################################################################################
set -g status-right-length 100
set -g status-left-length 100
set -g status-left ""
set -g status-right "#{E:@catppuccin_status_application}"
set -agF status-right "#{E:@catppuccin_status_cpu}"
set -agF status-right "#{E:@catppuccin_status_mem}"
set -ag status-right "#{E:@catppuccin_status_session}"
set -ag status-right "#{E:@catppuccin_status_uptime}"
set -agF status-right "#{E:@catppuccin_status_battery}"

# Load tmux-cpu plugin
run ~/.config/tmux/plugins/tmux-plugins/tmux-cpu/cpu.tmux

################################################################################
# End of Configuration
################################################################################
