From 9a7cb95be8aa07983ea2915b76f01d50e5709b43 Mon Sep 17 00:00:00 2001 From: Bloxx12 Date: Mon, 26 May 2025 10:38:15 +0200 Subject: [PATCH 1/2] zellij: init --- modules/programs/tui/zellij/config.kdl | 161 +++++++++++++++++++++++++ modules/programs/tui/zellij/module.nix | 17 +-- 2 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 modules/programs/tui/zellij/config.kdl diff --git a/modules/programs/tui/zellij/config.kdl b/modules/programs/tui/zellij/config.kdl new file mode 100644 index 0000000..1b4604f --- /dev/null +++ b/modules/programs/tui/zellij/config.kdl @@ -0,0 +1,161 @@ +// 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 a0ccdc3..e7ccd93 100644 --- a/modules/programs/tui/zellij/module.nix +++ b/modules/programs/tui/zellij/module.nix @@ -1,12 +1,15 @@ {pkgs, ...}: let - # 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; - }); + zellij-wrapped = pkgs.symlinkJoin { + name = "zellij-wrapped"; + paths = [pkgs.zellij]; + nativeBuildInputs = [pkgs.makeWrapper]; + postBuild = '' + wrapProgram $out/bin/zellij --add-flags "\ + --config ${./config.kdl}" + ''; + }; in { environment.systemPackages = builtins.attrValues { - # inherit patched-zellij; + inherit zellij-wrapped; }; } From 0eaf1282d5b183e1a228e9a86b63f267c20ba7c1 Mon Sep 17 00:00:00 2001 From: Bloxx12 Date: Mon, 26 May 2025 12:23:17 +0200 Subject: [PATCH 2/2] hermit: programs: remove zellij --- hosts/hermit/programs.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/hosts/hermit/programs.nix b/hosts/hermit/programs.nix index b1b3157..196dffa 100644 --- a/hosts/hermit/programs.nix +++ b/hosts/hermit/programs.nix @@ -81,7 +81,6 @@ wordgrinder xournalpp zathura - zellij ; }; }