nix/home-manager/shared/programs/shell/tmux.nix
2024-11-29 20:52:47 -06:00

75 lines
2.4 KiB
Nix
Executable file

{config, ...}: {
programs.tmux = {
enable = true;
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 'xclip -sel clip -i'
set -g status-right ""
setw -g status-style 'bg=colour0 fg=colour7'
setw -g window-status-current-format '[#P:#W*] '
'';
};
programs.zellij = {
enable = true;
enableFishIntegration = true;
};
home.file."${config.xdg.configHome}/zellij/config.kdl".text = ''
on_force_close "quit"
default_layout "compact"
default_mode "locked"
keybinds {
tmux {
bind "Ctrl a" { Write 2; SwitchToMode "Locked"; }
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; }
}
}
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
}
}
'';
}