zellij: init
This commit is contained in:
parent
9b49d467e8
commit
9a7cb95be8
2 changed files with 171 additions and 7 deletions
161
modules/programs/tui/zellij/config.kdl
Normal file
161
modules/programs/tui/zellij/config.kdl
Normal 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"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue