diff --git a/hosts/hermit/programs.nix b/hosts/hermit/programs.nix index 196dffa..b1b3157 100644 --- a/hosts/hermit/programs.nix +++ b/hosts/hermit/programs.nix @@ -81,6 +81,7 @@ wordgrinder xournalpp zathura + zellij ; }; } diff --git a/modules/programs/tui/zellij/config.kdl b/modules/programs/tui/zellij/config.kdl deleted file mode 100644 index 1b4604f..0000000 --- a/modules/programs/tui/zellij/config.kdl +++ /dev/null @@ -1,161 +0,0 @@ -// taken from https://lobste.rs/s/ft797a/why_zellij#c_4g7k3x - - -// Make the default layout compact and non-disturbing -default_layout "compact" -// do not pane frames -pane_frames false -// do not show startup tips -show_startup_tips false - -// Choose the mode that zellij uses when starting up. -// Default: normal -// -default_mode "locked" - -default_shell "fish" - -theme "catppuccin-frappe" - -// Toggle enabling the mouse mode. On certain configurations, or terminals this -// could potentially interfere with copying text. -// Default: true -// -mouse_mode true - - -// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" -keybinds clear-defaults=true { - - scroll { - bind "Esc" "Ctrl s" { SwitchToMode "Locked"; } - bind "e" { EditScrollback; SwitchToMode "Locked"; } - bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; } - bind "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; } - bind "j" "Down" { ScrollDown; } - bind "k" "Up" { ScrollUp; } - bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } - bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } - bind "d" { HalfPageScrollDown; } - bind "u" { HalfPageScrollUp; } - bind "g" { ScrollToTop; } - bind "G" { ScrollToBottom; } - } - - search { - bind "Ctrl s" { SwitchToMode "Locked"; } - bind "Esc" "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; } - bind "j" "Down" { ScrollDown; } - bind "k" "Up" { ScrollUp; } - bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } - bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } - bind "d" { HalfPageScrollDown; } - bind "u" { HalfPageScrollUp; } - bind "n" { Search "down"; } - bind "p" { Search "up"; } - bind "c" { SearchToggleOption "CaseSensitivity"; } - bind "w" { SearchToggleOption "Wrap"; } - bind "o" { SearchToggleOption "WholeWord"; } - } - - entersearch { - bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } - bind "Enter" { SwitchToMode "Search"; } - } - - renametab { - bind "Ctrl c" { SwitchToMode "Locked"; } - bind "Esc" { UndoRenameTab; SwitchToMode "Tmux"; } - } - - renamepane { - bind "Ctrl c" { SwitchToMode "Locked"; } - bind "Esc" { UndoRenamePane; SwitchToMode "Tmux"; } - } - - tmux { - bind "[" { SwitchToMode "Scroll"; } - bind "Ctrl Space" { Write 1; SwitchToMode "Locked"; } - bind "z" { ToggleFocusFullscreen; SwitchToMode "Locked"; } - - // manipulate tabs - bind "c" { NewTab; SwitchToMode "Locked"; } - bind "K" { CloseTab; SwitchToMode "Locked"; } - bind "R" { SwitchToMode "RenameTab"; } - - // switch modes - bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; } - - // miscellaneous - bind "s" { ToggleActiveSyncTab; SwitchToMode "Locked"; } - bind "m" { ToggleMouseMode; SwitchToMode "Locked"; } - bind "y" { Run "yazi"; SwitchToMode "Locked"; } - - // create new pane - bind "Space" { NewPane; SwitchToMode "Locked"; } - bind "-" "_" { NewPane "Down"; SwitchToMode "Locked"; } - bind "|" "\\" { NewPane "Right"; SwitchToMode "Locked"; } - bind "r" { SwitchToMode "RenamePane"; } - - // switch between tabs - bind "h" { GoToPreviousTab; SwitchToMode "Locked"; } - bind "l" { GoToNextTab; SwitchToMode "Locked"; } - 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"; } - - // switch between panes - bind "Left" { MoveFocus "Left"; } - bind "Right" { MoveFocus "Right"; } - bind "Down" { MoveFocus "Down"; } - bind "Up" { MoveFocus "Up"; } - bind "Tab" { FocusNextPane; } - - // move panes - bind "H" { MovePane "Left"; } - bind "J" { MovePane "Down"; } - bind "K" { MovePane "Up"; } - bind "L" { MovePane "Right"; } - - // manipulate panes - bind "W" { CloseFocus; SwitchToMode "Locked"; } - - // exit etc - bind "Enter" "Esc" { SwitchToMode "Locked"; } - bind "d" { Detach; SwitchToMode "Locked"; } - bind "Q" { Quit; } - - // resizing - bind "Ctrl h" { Resize "Increase Left"; } - bind "Ctrl j" { Resize "Increase Down"; } - bind "Ctrl k" { Resize "Increase Up"; } - bind "Ctrl l" { Resize "Increase Right"; } - } - - shared { - bind "Alt n" { NewPane; } - bind "Alt h" { MoveFocus "Left"; } - bind "Alt j" { MoveFocus "Down"; } - bind "Alt l" { MoveFocus "Right"; } - bind "Alt k" { MoveFocus "Up"; } - bind "Ctrl h" { MoveFocus "Left"; } - bind "Ctrl j" { MoveFocus "Down"; } - bind "Ctrl l" { MoveFocus "Right"; } - bind "Ctrl k" { MoveFocus "Up"; } - bind "Alt [" { PreviousSwapLayout; } - bind "Alt ]" { NextSwapLayout; } - bind "Alt =" "Alt +" { Resize "Increase"; } - bind "Alt -" "Alt _" { Resize "Decrease"; } - } - - shared_except "tmux" { - bind "Ctrl Space" { SwitchToMode "Tmux"; } - } - -} diff --git a/modules/programs/tui/zellij/module.nix b/modules/programs/tui/zellij/module.nix index e7ccd93..a0ccdc3 100644 --- a/modules/programs/tui/zellij/module.nix +++ b/modules/programs/tui/zellij/module.nix @@ -1,15 +1,12 @@ {pkgs, ...}: let - zellij-wrapped = pkgs.symlinkJoin { - name = "zellij-wrapped"; - paths = [pkgs.zellij]; - nativeBuildInputs = [pkgs.makeWrapper]; - postBuild = '' - wrapProgram $out/bin/zellij --add-flags "\ - --config ${./config.kdl}" - ''; - }; + # I am patching zellij because of this issue: + # https://github.com/zellij-org/zellij/pull/2548 + patched-zellij = pkgs.zellij.overrideAttrs (old: { + patches = [./zellij-good-scrolling.patch]; + doCheck = false; + }); in { environment.systemPackages = builtins.attrValues { - inherit zellij-wrapped; + # inherit patched-zellij; }; }