# ───────────────────────────────────────────────────────────────────────────
# General tmux Settings
# ───────────────────────────────────────────────────────────────────────────

# ─< Enable 256 color support for tmux >──────────────────────────────────────────────────
set-option -sa terminal-overrides ",xterm-256color*:Tc"

set -s escape-time 3

# ─< Enable mouse support (for scrolling, resizing, etc.) >───────────────────────────────
set -g mouse on

# Set the prefix key to C-Space instead of default C-b
unbind C-b

# ─< set the prefix to "C-Space" >────────────────────────────────────────────────────────
set -g prefix C-Space
bind C-Space send-prefix
bind h copy-mode

set -g visual-activity on
set -g visual-bell on
set -g status-keys vi
# ─< set v for starting selection in copy mode >──────────────────────────────────────────
bind -T copy-mode-vi v send -X begin-selection

# ─< Reload tmux configuration without restarting tmux >──────────────────────────────────
bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"

# ─< Use C-h and C-l to switch between panes >────────────────────────────────────────────
bind -n C-h select-pane -L
bind -n C-l select-pane -R
bind -n C-f resize-pane -Z


# Ensure that when prefix is pressed, the mode indicator is shown
set -g mode-keys vi  # Use vi keybindings in copy mode
set -g status-left-length 30  # Limit length of the left status line
set -g status-right-length 60  # Limit length of the right status line

# ─< Start windows and panes at index 1 instead of 0 >────────────────────────────────────
set -g base-index 1
set -g pane-base-index 1
set-window-option -g pane-base-index 1
set-option -g renumber-windows on

# set -g status-right '#{prefix_highlight} | 󰃭 %d.%m.%Y |  %H:%M'

# prompt to display when tmux prefix key is pressed
set -g @mode_indicator_prefix_prompt ' 󱙝 '

# prompt to display when tmux is in copy mode
set -g @mode_indicator_copy_prompt '  '

# prompt to display when tmux has synchronized panes
set -g @mode_indicator_sync_prompt '  '

# prompt to display when tmux is in normal mode
set -g @mode_indicator_empty_prompt ' 󰊠 '

# style values for prefix prompt
set -g @mode_indicator_prefix_mode_style 'bg=#fe8019,fg=#1d2021'

# style values for copy prompt
set -g @mode_indicator_copy_mode_style 'bg=cyan,fg=#1d2021'

# style values for sync prompt
set -g @mode_indicator_sync_mode_style 'bg=red,fg=#1d2021'

# style values for empty prompt
set -g @mode_indicator_empty_mode_style 'bg=#fabd2f,fg=#1d2021'

# ────────────────────────────────< theme - minimal config >────────────────────────────────
# set -g @plugin 'niksingh710/minimal-tmux-status'
# set -g @minimal-tmux-fg "#1d2021"
# set -g @minimal-tmux-bg "#fabd2f"
# set -g @minimal-tmux-indicator-str " 󰌽 $USER "
# set -g @minimal-tmux-indicator true
# set -g @minimal-tmux-status "bottom"
#
# # Enables or disables the left and right status bar
# set -g @minimal-tmux-right true
# set -g @minimal-tmux-left true
#
# # expanded icon (fullscreen icon)
# set -g @minimal-tmux-expanded-icon "󰊓 "
#
# # on all tabs (default is false)
# # false will make it visible for the current tab only
# set -g @minimal-tmux-show-expanded-icons-for-all-tabs true
#
# # To make the selection box rounded () or edged <>
# # Default is nothing, when set to true default is edged
# set -g @minimal-tmux-use-arrow false
# set -g @minimal-tmux-right-arrow "#[fg=#fabd2f]#[bg=#1d2021]"
# set -g @minimal-tmux-left-arrow "#[fg=#fabd2f]#[bg=#1d2021]"
#
# # Not recommended to change these values
# set -g @minimal-tmux-status-right "#[fg=#fabd2f]#[bg=#1d2021]#[fg=#1d2021]#[bg=#fabd2f]󰃭 %d.%m.%Y -  %H:%M#[fg=#fabd2f]#[bg=black]"
# # set -g @minimal-tmux-status-right "%d.%m.%Y"
# # set -g @minimal-tmux-status-left "refer to code"
#
# # To add or remove extra text in status bar
# set -g @minimal-tmux-status-right-extra "#[fg=#fb4934] #S"
# set -g @minimal-tmux-status-left-extra ""
#
# # If getting strings cut in left status or right
# # Here 20 is the length of the characters in the string
# set -g status-right-length 20
# set -g status-left-length 20
# ───────────────────────────────────< minimal --- end >─────────────────────────────────

# ────────────────────────────────< theme - gruvbox config >────────────────────────────────
# set -g @plugin 'egel/tmux-gruvbox'          # Gruvbox theme for tmux
set -g @plugin 'https://git.k4li.de/mirrors/tmux-gruvbox'
set -g @tmux-gruvbox 'dark256'                  # Can be 'dark', 'dark256', 'light', 'light256'
set -g @tmux-gruvbox-left-status-a '#{tmux_mode_indicator}'
set -g @tmux-gruvbox-right-status-z "$USER@#h "  # Hostname and tmux mode indicator
set -g @tmux-gruvbox-right-status-x '#[fg=yellow] %H:%M'  # Time format 24H
set -g @tmux-gruvbox-right-status-y '󰃭 %d.%m.%Y'  # Date format (e.g., 30.01.2024)

# ───────────────────────────────────< gruvbox --- end >─────────────────────────────────

# ──────────────────────────────< theme - gruvbox 2 - config >──────────────────────────────
# set -g @plugin 'l-lin/tmux-colorscheme'

# set -g @tmux-colorscheme-show-upload-speed true
# set -g @tmux-colorscheme-show-download-speed true
# set -g @tmux-colorscheme-show-prefix-highlight true
# set -g @tmux-colorscheme-show-battery true
# set -g @tmux-colorscheme-show-cpu true
# set -g @tmux-colorscheme-show-cpu-temp true
# set -g @tmux-colorscheme-show-ram true

# set -g @tmux-colorscheme "gruvbox-dark"
# ──────────────────────────────────< gruvbox 2 --- end >────────────────────────────────

# ───────────────────────────────────────────────────────────────────────────
# Key Bindings
# ───────────────────────────────────────────────────────────────────────────

# # ────────────────────────────────────< status configs >────────────────────────────────────

# ───────────────────────────────────────< plugins >─────────────────────────────────────
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
set -g @plugin 'tmux-plugins/tmux-sensible'  # Sensible tmux defaults
set -g @plugin 'tmux-plugins/tmux-yank'      # Yank (copy-paste) support
set -g @plugin 'b0o/tmux-autoreload'        # Auto-reload tmux config when updated
set -g @plugin 'MunifTanjim/tmux-mode-indicator'
# set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'tmux-plugins/tpm'

if "test ! -d ~/.tmux/plugins/tpm" \
   "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"

# Initialize TPM (Tmux Plugin Manager)
run '~/.tmux/plugins/tpm/tpm'
