#
# Tmux
#

{ pkgs, ... }:

{
  programs = {
    tmux = {
      enable = true;
      terminal = "screen-256color";
      escapeTime = 300;
      newSession = false;
      keyMode = "vi";
      historyLimit = 10000;
      clock24 = true;
      shortcut = "Space";
      baseIndex = 1;
      plugins = with pkgs.tmuxPlugins; [
          yank
          sidebar
#          {
          #    plugin = dracula;
          #    extraConfig = "
          #      set -g @dracula-show-powerline true
          #      set -g @dracula-plugins 'git cpu-usage ram-usage battery time'
          #      set -g @dracula-border-contrast true
          #    ";
#            plugin = catppuccin;
#            extraConfig = "
#              set -g @catppuccin_flavour 'macchiato'
#              set -g @catppuccin_window_tabs_enabled 'on'
#              set -g @catppuccin_host 'on'
#              set -g @catppuccin_user 'on'
#              set -g @catppuccin_date_time '%Y-%m-%d %H:%M'
#            ";
#          }
      ];
      extraConfig = ''
        set -g mouse on
        set-option -sa terminal-features ',alacritty:RGB'

        # More friendly split pane
        bind-key s split-window -h -c "#{pane_current_path}"
        bind-key v split-window -v -c "#{pane_current_path}"
        unbind '"'
        unbind '%'
        
        # moving between windows with vim movement keys
        bind m select-pane -L
        bind n select-pane -D
        bind e select-pane -U
        bind i select-pane -R

        # moving between windows with vim movement keys
        bind -r C-m select-window -t :-
        bind -r C-i select-window -t :+
        
        # Vim style X clipboard integration↲
        bind-key -T copy-mode-vi 'v' send-keys -X begin-selection
        bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
        bind-key -T copy-mode-vi 'y' send-keys -X copy-selection-and-cancel
        bind-key P run "xsel -o | tmux load-buffer - ; tmux paste-buffer"
        
        # resize panes with vim movement keys
        bind -r M resize-pane -L 5
        bind -r N resize-pane -D 5
        bind -r E resize-pane -U 5
        bind -r I resize-pane -R 5
        
        # bindings for pane joining and breaking
        bind < split-window -h \; choose-window 'kill-pane ; join-pane -hs %%'
        bind > break-pane -d

        run-shell ${pkgs.tmuxPlugins.sidebar}/share/tmux-plugins/sidebar/sidebar.tmux
      '';
    };
  };
}