zellij: init

This commit is contained in:
Bloxx12 2025-05-26 10:38:15 +02:00
commit 9a7cb95be8
Signed by: faukah
SSH key fingerprint: SHA256:Uj2AXqvtdCA4hn5Hq0ZonhIAyUqI1q4w2sMG3Z1TH7E
2 changed files with 171 additions and 7 deletions

View file

@ -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"; }
}
}

View file

@ -1,12 +1,15 @@
{pkgs, ...}: let {pkgs, ...}: let
# I am patching zellij because of this issue: zellij-wrapped = pkgs.symlinkJoin {
# https://github.com/zellij-org/zellij/pull/2548 name = "zellij-wrapped";
patched-zellij = pkgs.zellij.overrideAttrs (old: { paths = [pkgs.zellij];
patches = [./zellij-good-scrolling.patch]; nativeBuildInputs = [pkgs.makeWrapper];
doCheck = false; postBuild = ''
}); wrapProgram $out/bin/zellij --add-flags "\
--config ${./config.kdl}"
'';
};
in { in {
environment.systemPackages = builtins.attrValues { environment.systemPackages = builtins.attrValues {
# inherit patched-zellij; inherit zellij-wrapped;
}; };
} }