Files
nixos-config/modules/features/zellij.nix

459 lines
14 KiB
Nix
Raw Normal View History

2026-04-04 16:46:30 -04:00
{
flake.modules.homeManager.zellij = {
programs.zellij =
let
mod = "Alt"; # Can be one of "Ctrl", "Alt", "Shift", "Super"
in
{
enable = true;
enableZshIntegration = true;
settings = {
theme = "catppuccin-mocha";
show_startup_tips = false;
keybinds = {
_props = {
clear-defaults = true;
};
_children = [
{
locked._children = [
{
bind = {
_args = [ "${mod} g" ];
_children = [ { SwitchToMode._args = [ "Normal" ]; } ];
};
}
];
}
{
resize._children = [
{
bind = {
_args = [ "${mod} r" ];
_children = [ { SwitchToMode._args = [ "Normal" ]; } ];
};
}
{
bind = {
_args = [ "h" ];
_children = [ { Resize._args = [ "Increase Left" ]; } ];
};
}
{
bind = {
_args = [ "j" ];
_children = [ { Resize._args = [ "Increase Down" ]; } ];
};
}
{
bind = {
_args = [ "k" ];
_children = [ { Resize._args = [ "Increase Up" ]; } ];
};
}
{
bind = {
_args = [ "l" ];
_children = [ { Resize._args = [ "Increase Right" ]; } ];
};
}
];
}
{
pane._children = [
{
bind = {
_args = [ "${mod} p" ];
_children = [ { SwitchToMode._args = [ "Normal" ]; } ];
};
}
{
bind = {
_args = [ "c" ];
_children = [ { Clear = { }; } ];
};
}
{
bind = {
_args = [ "e" ];
_children = [
{ TogglePaneEmbedOrFloating = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "f" ];
_children = [
{ ToggleFocusFullscreen = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "s" ];
_children = [
{ NewPane._args = [ "stacked" ]; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "j" ];
_children = [
{ NewPane._args = [ "Down" ]; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "l" ];
_children = [
{ NewPane._args = [ "Right" ]; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "n" ];
_children = [
{ NewPane = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "p" ];
_children = [
{ SwitchFocus = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "r" ];
_children = [
{ SwitchToMode._args = [ "RenamePane" ]; }
{ PaneNameInput._args = [ 0 ]; }
];
};
}
{
bind = {
_args = [ "w" ];
_children = [
{ ToggleFloatingPanes = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "x" ];
_children = [
{ CloseFocus = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "z" ];
_children = [
{ TogglePaneFrames = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
];
}
{
move._children = [
{
bind = {
_args = [ "${mod} m" ];
_children = [ { SwitchToMode._args = [ "Normal" ]; } ];
};
}
{
bind = {
_args = [ "h" ];
_children = [ { MovePane._args = [ "Left" ]; } ];
};
}
{
bind = {
_args = [ "j" ];
_children = [ { MovePane._args = [ "Down" ]; } ];
};
}
{
bind = {
_args = [ "k" ];
_children = [ { MovePane._args = [ "Up" ]; } ];
};
}
{
bind = {
_args = [ "l" ];
_children = [ { MovePane._args = [ "Right" ]; } ];
};
}
];
}
{
tab._children = [
{
bind = {
_args = [ "${mod} t" ];
_children = [ { SwitchToMode._args = [ "Normal" ]; } ];
};
}
{
bind = {
_args = [ "b" ];
_children = [
{ BreakPane = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "h" ];
_children = [ { MoveTab._args = [ "Left" ]; } ];
};
}
{
bind = {
_args = [ "l" ];
_children = [ { MoveTab._args = [ "Right" ]; } ];
};
}
{
bind = {
_args = [ "n" ];
_children = [
{ NewTab = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
{
bind = {
_args = [ "r" ];
_children = [
{ SwitchToMode._args = [ "RenameTab" ]; }
{ TabNameInput._args = [ 0 ]; }
];
};
}
{
bind = {
_args = [ "x" ];
_children = [
{ CloseTab = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
];
}
{
renametab._children = [
{
bind = {
_args = [ "${mod} c" ];
_children = [ { SwitchToMode._args = [ "Normal" ]; } ];
};
}
{
bind = {
_args = [ "Esc" ];
_children = [
{ UndoRenameTab = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
];
}
{
renamepane._children = [
{
bind = {
_args = [ "${mod} c" ];
_children = [ { SwitchToMode._args = [ "Normal" ]; } ];
};
}
{
bind = {
_args = [ "Esc" ];
_children = [
{ UndoRenamePane = { }; }
{ SwitchToMode._args = [ "Normal" ]; }
];
};
}
];
}
{
shared_except = {
_args = [ "locked" ];
_children = [
{
bind = {
_args = [ "${mod} g" ];
_children = [ { SwitchToMode._args = [ "Locked" ]; } ];
};
}
{
bind = {
_args = [ "${mod} h" ];
_children = [ { MoveFocusOrTab._args = [ "Left" ]; } ];
};
}
{
bind = {
_args = [ "${mod} l" ];
_children = [ { MoveFocusOrTab._args = [ "Right" ]; } ];
};
}
{
bind = {
_args = [ "${mod} j" ];
_children = [ { MoveFocus._args = [ "Down" ]; } ];
};
}
{
bind = {
_args = [ "${mod} k" ];
_children = [ { MoveFocus._args = [ "Up" ]; } ];
};
}
{
bind = {
_args = [ "${mod} [" ];
_children = [ { PreviousSwapLayout = { }; } ];
};
}
{
bind = {
_args = [ "${mod} ]" ];
_children = [ { NextSwapLayout = { }; } ];
};
}
];
};
}
{
shared_except = {
_args = [
"normal"
"locked"
];
_children = [
{
bind = {
_args = [
"Enter"
"Esc"
];
_children = [ { SwitchToMode = [ "Normal" ]; } ];
};
}
];
};
}
{
shared_except = {
_args = [
"pane"
"locked"
];
_children = [
{
bind = {
_args = [ "${mod} p" ];
_children = [ { SwitchToMode = [ "Pane" ]; } ];
};
}
];
};
}
{
shared_except = {
_args = [
"resize"
"locked"
];
_children = [
{
bind = {
_args = [ "${mod} r" ];
_children = [ { SwitchToMode = [ "Resize" ]; } ];
};
}
];
};
}
{
shared_except = {
_args = [
"tab"
"locked"
];
_children = [
{
bind = {
_args = [ "${mod} t" ];
_children = [ { SwitchToMode = [ "Tab" ]; } ];
};
}
];
};
}
{
shared_except = {
_args = [
"move"
"locked"
];
_children = [
{
bind = {
_args = [ "${mod} m" ];
_children = [ { SwitchToMode = [ "Move" ]; } ];
};
}
];
};
}
];
};
plugins = {
compact-bar = {
_props = {
location = "zellij:compact-bar";
};
};
};
simplified_ui = true;
pane_frames = false;
copy_on_select = true;
};
};
};
}