summaryrefslogtreecommitdiff
path: root/home/tmux.nix
blob: f6c59da1817d75bf9d9acc00c2cc5d6a6a8b3a1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{ pkgs, ... }:

{
  programs.tmux = {
    enable = true;
    mouse = true;
    keyMode = "vi";
    baseIndex = 1;
    prefix = "C-b";
    terminal = "xterm-ghostty";
    plugins = with pkgs.tmuxPlugins; [
      sensible
      yank
      resurrect
      continuum
      {
        plugin = rose-pine;
        extraConfig = ''
          set -g @rose_pine_variant 'main'
          set -g @rose_pine_left_separator ' > '
          set -g @rose_pine_right_separator '  '
          set -g @rose_pine_field_separator ' | '
          set -g @rose_pine_window_separator ':'
          set -g @rose_pine_window_status_separator '  '
        '';
      }
    ];
    extraConfig = ''
      set -g status-position top
      set -s set-clipboard on
      set -s get-clipboard both
      set -g set-titles on
      set -g set-titles-string "#{session_name}"
      setw -g pane-base-index 1
      set -g allow-passthrough all
      set -as terminal-features ",xterm-ghostty:hyperlinks"
      set -ga terminal-overrides ",xterm-ghostty:Tc"

      unbind C-b
      set -g prefix C-\\
      bind -N "Send the prefix key through to the application" C-\\ send-prefix
      bind -N "Refresh system clipboard via OSC 52" Y refresh-client -l

      bind v split-window -h -c "#{pane_current_path}"
      bind b split-window -v -c "#{pane_current_path}"
      bind c new-window -c "#{pane_current_path}"
      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
    '';
  };

}