nix/home-manager/shared/programs/shell/tmux.nix
2025-09-11 23:50:17 -05:00

91 lines
3.2 KiB
Nix
Executable file

{ config, pkgs, ... }:
{
programs.tmux = {
enable = true;
terminal = "xterm-256color";
keyMode = "vi";
mouse = true;
newSession = true;
prefix = "C-a";
escapeTime = 0;
baseIndex = 1;
# vi mode navigation
customPaneNavigationAndResize = true;
extraConfig = ''
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel '${pkgs.wl-clipboard}/bin/wl-copy'
set -g status-right ""
setw -g status-style 'bg=terminal fg=colour7'
setw -g window-status-current-format '[#P:#W*] '
set-option -g history-limit 50000
bind-key C-a last-window
bind-key C-s run-shell 'export tmpfile=$(mktemp) && tmux capture-pane -pS -32768 > "$tmpfile" && tmux new-window "nvim $tmpfile"'
'';
};
programs.zellij.enable = true;
home.file."${config.xdg.configHome}/zellij/config.kdl".text = ''
show_startup_tips false
on_force_close "quit"
default_layout "compact"
default_mode "locked"
keybinds {
tmux {
bind "Ctrl a" { SwitchToMode "Locked"; }
bind "Ctrl b" { Write 1; }
bind "[" { SwitchToMode "Scroll"; }
bind "\"" { NewPane "Down"; SwitchToMode "Locked"; }
bind "%" { NewPane "Right"; SwitchToMode "Locked"; }
bind "z" { ToggleFocusFullscreen; SwitchToMode "Locked"; }
bind "c" { NewTab; SwitchToMode "Locked"; }
bind "," { SwitchToMode "RenameTab"; }
bind "p" { GoToPreviousTab; SwitchToMode "Locked"; }
bind "n" { GoToNextTab; SwitchToMode "Locked"; }
bind "h" { MoveFocus "Left"; SwitchToMode "Locked"; }
bind "l" { MoveFocus "Right"; SwitchToMode "Locked"; }
bind "j" { MoveFocus "Down"; SwitchToMode "Locked"; }
bind "k" { MoveFocus "Up"; SwitchToMode "Locked"; }
bind "Ctrl h" { MoveFocus "Left"; }
bind "Ctrl l" { MoveFocus "Right"; }
bind "Ctrl j" { MoveFocus "Down"; }
bind "Ctrl k" { MoveFocus "Up"; }
bind "o" { FocusNextPane; }
bind "d" { Detach; }
bind "Space" { NextSwapLayout; }
bind "x" { CloseFocus; SwitchToMode "Locked"; }
bind "/" {
LaunchOrFocusPlugin "zellij-forgot" { floating true; }
}
bind "1" { GoToTab 1; SwitchToMode "Locked"; }
bind "2" { GoToTab 2; SwitchToMode "Locked"; }
bind "3" { GoToTab 3; SwitchToMode "Locked"; }
bind "4" { GoToTab 4; SwitchToMode "Locked"; }
bind "5" { GoToTab 5; SwitchToMode "Locked"; }
bind "6" { GoToTab 6; SwitchToMode "Locked"; }
bind "7" { GoToTab 7; SwitchToMode "Locked"; }
bind "8" { GoToTab 8; SwitchToMode "Locked"; }
bind "9" { GoToTab 9; SwitchToMode "Locked"; }
}
locked {
unbind "Ctrl g"
}
shared_except "tmux" {
bind "Ctrl a" {
SwitchToMode "Tmux"
}
}
}
mouse_mode true
pane_frames false
plugins {
zellij-forgot location="https://github.com/karimould/zellij-forgot/releases/download/0.4.0/zellij_forgot.wasm"
}
simplified_ui true
theme "ansi"
ui {
pane_frames {
hide_session_name true
}
}
'';
}