######################################################################
# START OF PLUGINS
######################################################################

# Plugin manager for tmux 
set -g @plugin 'tmux-plugins/tpm'

set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.tmux/plugins/'

# Simple tmux options for anyone
set -g @plugin 'tmux-plugins/tmux-sensible'

#set -g @plugin 'odedlaz/tmux-onedark-theme'

# Gruvbox theme
set -g @plugin 'egel/tmux-gruvbox'
set -g @tmux-gruvbox 'dark' # or 'light'

# Persistent tmux envs across system restarts
set -g @plugin 'tmux-plugins/tmux-resurrect'

# Continuous saving of tmux environment
set -g @plugin 'tmux-plugins/tmux-continuum'

#######################################################
# TMUX-CONTINUUM 
#######################################################

# Enables restoral of saved tmux config
set -g @continuum-restore 'on'

# How often to save a tmux layout
set -g @continuum-save-interval '10'

#######################################################
# TMUX-RESURRECT
#######################################################

# Capture contents of each pane 
set -g @resurrect-capture-pane-contents 'on'

# Set to resurrect neovim sessions 
set -g @resurrect-strategy-nvim 'session'

# Processes to resurrect 
set -g @resurrect-processes '~julia'

#######################################################
# TMUX-SENSIBLE
#######################################################

# Increase scrollback buffer size
set -g history-limit 5000

######################################################################
# END OF PLUGINS
######################################################################




######################################################################
# START OF GENERAL CONFIGURATIONS
######################################################################

# Turn on interactivity with mouse 
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

# Enables italics in tmux
#set -g default-terminal "tmux-256color"
set -g default-terminal "screen-256color"

# Terminal type configuration
set -ga terminal-overrides ",screen-256color:RGB"
set -ag terminal-overrides ",alacritty:RGB"

# Start window numbering at specific num
set -g base-index 1          

# Renumber windows on window close
set -g renumber-windows on    

# Set vi mode
setw -g mode-keys vi

#######################################################
# KEY BINDING
#######################################################

# hjkl pane traversal
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# Remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

# Bind popup display commands 
# bind t popup -KER "topydo columns"
# bind d popup -h80% -w80% -KR "gcalcli --calendar \"JZ Calendar\" calw"
# bind s popup -h80% -w80% -KER "spt"
# bind C-t popup -KR "$SHELL"

bind-key -r f run-shell "tmux neww ~/.local/bin/tmux-sessionizer"

bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
bind P paste-buffer
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"

######################################################################
# END OF GENERAL CONFIGURATIONS
######################################################################




# Initialize tpm plugin manager - DO NOT MOVE
run '~/.tmux/plugins/tpm/tpm'
