{ pkgs, lib, ... }: let sessionizer = lib.getExe (pkgs.writeShellScriptBin "tmux-sessionizer" (lib.readFile ./sessionizer.sh)); in { programs.tmux = { enable = true; baseIndex = 1; escapeTime = 0; keyMode = "vi"; mouse = true; terminal = "screen-256color"; historyLimit = 5000; extraConfig = '' bind -n M-s split-window -v bind -n M-v split-window -h bind -n M-S-s split-window -h -c "#{pane_current_path}" bind -n M-S-v split-window -h -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 bind -n M-q kill-pane bind -n M-< resize-pane -L 10 bind -n M-> resize-pane -R 10 bind -n M-- resize-pane -D 10 bind -n M-+ resize-pane -U 10 bind -n M-z resize-pane -Z bind -n M-u copy-mode bind -n M-p previous-window bind -n M-n next-window bind-key -r f run-shell "tmux neww ${sessionizer}" set-option -g renumber-windows on ''; }; programs.zsh.initContent = '' bindkey -s ^f "${sessionizer}\n" ''; }