nix-config/modules/features/programs/cli/cli-zellij.nix
2026-04-17 01:23:31 -04:00

123 lines
5.6 KiB
Nix

{ inputs, ... }:
{
config.dendritic.features.cli-zellij = {
homeModules = [
(
{
config,
pkgs,
...
}:
let
zjstatus-pkg = inputs.zjstatus.packages.${pkgs.system}.default;
in
{
stylix.targets.zellij.enable = false;
stylix.targets.tmux.enable = false;
programs.zellij = {
enable = true;
settings = {
show_startup_tips = false;
pane_frames = false;
default_mode = "locked";
mouse_mode = true;
simplified_ui = true;
on_force_close = "detach";
copy_command = "wl-copy";
default_shell = "zsh";
theme = "dendritic";
themes.dendritic = {
fg = "#${config.lib.stylix.colors.base05}";
bg = "#${config.lib.stylix.colors.base00}";
black = "#${config.lib.stylix.colors.base01}";
red = "#${config.lib.stylix.colors.base08}";
green = "#${config.lib.stylix.colors.base0B}";
yellow = "#${config.lib.stylix.colors.base0A}";
blue = "#${config.lib.stylix.colors.base0D}";
magenta = "#${config.lib.stylix.colors.base0E}";
cyan = "#${config.lib.stylix.colors.base0C}";
white = "#${config.lib.stylix.colors.base07}";
orange = "#${config.lib.stylix.colors.base09}";
};
};
extraConfig = ''
layout {
default_tab_template {
pane size=2 borderless=true {
plugin location="file://${zjstatus-pkg}/bin/zjstatus.wasm" {
format_left "{mode}#[bg=#${config.lib.stylix.colors.base00}] {tabs}"
format_center ""
format_right "#[bg=#${config.lib.stylix.colors.base00},fg=#${config.lib.stylix.colors.base0D}]#[bg=#${config.lib.stylix.colors.base0D},fg=#${config.lib.stylix.colors.base00},bold] #[bg=#${config.lib.stylix.colors.base02},fg=#${config.lib.stylix.colors.base05},bold] {session} "
format_space ""
mode_locked "#[bg=#${config.lib.stylix.colors.base08},fg=#${config.lib.stylix.colors.base00},bold] 🔒 LOCKED #[bg=#${config.lib.stylix.colors.base03},fg=#${config.lib.stylix.colors.base08}]"
mode_normal "#[bg=#${config.lib.stylix.colors.base0B},fg=#${config.lib.stylix.colors.base00},bold] 🔓 NORMAL #[bg=#${config.lib.stylix.colors.base03},fg=#${config.lib.stylix.colors.base0B}]"
mode_scroll "#[bg=#${config.lib.stylix.colors.base0A},fg=#${config.lib.stylix.colors.base00},bold] SCROLL #[bg=#${config.lib.stylix.colors.base03},fg=#${config.lib.stylix.colors.base0A}]"
tab_normal "#[bg=#${config.lib.stylix.colors.base03},fg=#${config.lib.stylix.colors.base0D}]#[bg=#${config.lib.stylix.colors.base0D},fg=#${config.lib.stylix.colors.base00},bold]{index} #[bg=#${config.lib.stylix.colors.base02},fg=#${config.lib.stylix.colors.base05},bold] {name}#[bg=#${config.lib.stylix.colors.base03},fg=#${config.lib.stylix.colors.base02},bold]"
tab_active "#[bg=#${config.lib.stylix.colors.base03},fg=#${config.lib.stylix.colors.base09}]#[bg=#${config.lib.stylix.colors.base09},fg=#${config.lib.stylix.colors.base00},bold]{index} #[bg=#${config.lib.stylix.colors.base02},fg=#${config.lib.stylix.colors.base05},bold] {name}#[bg=#${config.lib.stylix.colors.base03},fg=#${config.lib.stylix.colors.base02},bold]"
tab_separator "#[bg=#${config.lib.stylix.colors.base00}] "
}
}
children
}
}
keybinds clear-defaults=true {
shared {
bind "Alt h" { MoveFocus "Left"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt f" { ToggleFloatingPanes; }
bind "Alt n" { NewPane; }
}
locked {
bind "Ctrl b" { SwitchToMode "Normal"; }
}
normal {
bind "Ctrl b" { SwitchToMode "Locked"; }
bind "Enter" "Esc" { SwitchToMode "Locked"; }
bind "h" { MoveFocus "Left"; }
bind "j" { MoveFocus "Down"; }
bind "k" { MoveFocus "Up"; }
bind "l" { MoveFocus "Right"; }
bind "|" { NewPane "Right"; }
bind "-" { NewPane "Down"; }
bind "x" { CloseFocus; }
bind "f" { ToggleFloatingPanes; }
bind "z" { ToggleFocusFullscreen; }
bind "t" { NewTab; }
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
bind "s" { SwitchToMode "Scroll"; }
bind "d" { Detach; }
bind "q" { Quit; }
}
scroll {
bind "s" "Esc" "Enter" { SwitchToMode "Normal"; }
bind "j" { ScrollDown; }
bind "k" { ScrollUp; }
bind "d" { HalfPageScrollDown; }
bind "u" { HalfPageScrollUp; }
}
renametab {
bind "Enter" "Esc" { SwitchToMode "Normal"; }
}
}
'';
};
}
)
];
};
}