{ config, lib, ... }: with lib; let cfg = config.eboskma.programs.zellij; in { options.eboskma.programs.zellij = { enable = mkEnableOption "zellij"; copyCommand = mkOption { description = "Command used to copy a selection"; type = types.str; example = literalExpression ''"''${pkgs.wl-clipboard}/bin/wl-copy"''; }; }; config = mkIf cfg.enable { programs.zellij = { enable = true; settings = { theme = "dracula"; copy_command = cfg.copyCommand; scrollback_editor = "${config.eboskma.programs.emacs.package}/bin/emacsclient"; pane_frames = false; themes = { dracula = { fg = [ 248 248 242 ]; bg = [ 40 42 54 ]; black = [ 0 0 0 ]; red = [ 255 85 85 ]; green = [ 80 250 123 ]; yellow = [ 241 250 140 ]; blue = [ 98 114 164 ]; magenta = [ 255 121 198 ]; cyan = [ 139 233 253 ]; white = [ 255 255 255 ]; orange = [ 255 184 108 ]; }; }; keybinds = { normal = [ { unbind = [ { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Ctrl = "n"; } { Ctrl = "b"; } ]; } { action = [{ SwitchToMode = "Resize"; }]; key = [{ Ctrl = "m"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } ]; resize = [ { unbind = [ { Char = "l"; } { Char = "j"; } { Char = "k"; } { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Ctrl = "b"; } ]; } { action = [{ Resize = "Left"; }]; key = [{ Char = "h"; } "Left"]; } { action = [{ Resize = "Right"; }]; key = [{ Char = "i"; } "Right"]; } { action = [{ Resize = "Down"; }]; key = [{ Char = "n"; } "Down"]; } { action = [{ Resize = "Up"; }]; key = [{ Char = "e"; } "Up"]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } ]; pane = [ { unbind = [ { Char = "l"; } { Char = "j"; } { Char = "k"; } { Char = "n"; } { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Char = "f"; } { Ctrl = "n"; } { Ctrl = "b"; } ]; } { action = [{ SwitchToMode = "Resize"; }]; key = [{ Ctrl = "m"; }]; } { action = [{ MoveFocus = "Left"; }]; key = [{ Char = "h"; } "Left"]; } { action = [{ MoveFocus = "Right"; }]; key = [{ Char = "i"; } "Right"]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Char = "n"; } "Down"]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Char = "e"; } "Up"]; } { action = [{ NewPane = null; } { SwitchToMode = "Normal"; }]; key = [{ Char = "c"; }]; } { action = [ "TogglePaneFrames" { SwitchToMode = "Normal"; } ]; key = [{ Char = "z"; }]; } { action = [ "ToggleFloatingPanes" { SwitchToMode = "Normal"; } ]; key = [{ Char = "w"; }]; } { action = [ "TogglePaneEmbedOrFloating" { SwitchToMode = "Normal"; } ]; key = [{ Char = "f"; }]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } { action = [{ SwitchToMode = "RenamePane"; } { PaneNameInput = [ 0 ]; }]; key = [{ Char = "m"; }]; } ]; move = [ { unbind = [ { Char = "l"; } { Char = "j"; } { Char = "k"; } { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Char = "n"; } { Ctrl = "n"; } ]; } { action = [{ SwitchToMode = "Resize"; }]; key = [{ Ctrl = "m"; }]; } { action = [{ MovePane = null; }]; key = [{ Char = "c"; }]; } { action = [{ MovePane = "Left"; }]; key = [{ Char = "h"; } "Left"]; } { action = [{ MovePane = "Right"; }]; key = [{ Char = "i"; } "Right"]; } { action = [{ MovePane = "Down"; }]; key = [{ Char = "n"; } "Down"]; } { action = [{ MovePane = "Up"; }]; key = [{ Char = "e"; } "Up"]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } ]; tab = [ { unbind = [ { Char = "l"; } { Char = "j"; } { Char = "k"; } { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Char = "n"; } { Ctrl = "n"; } { Ctrl = "b"; } ]; } { action = [{ SwitchToMode = "Resize"; }]; key = [{ Ctrl = "m"; }]; } { action = [ "GoToPreviousTab" ]; key = [{ Char = "h"; } "Left" "Up" { Char = "e"; }]; } { action = [ "GoToNextTab" ]; key = [{ Char = "i"; } "Right" "Down" { Char = "n"; }]; } { action = [{ NewTab = null; } { SwitchToMode = "Normal"; }]; key = [{ Char = "c"; }]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } ]; scroll = [ { unbind = [ { Char = "l"; } { Char = "j"; } { Char = "k"; } { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Ctrl = "n"; } { Ctrl = "b"; } ]; } { action = [{ SwitchToMode = "Resize"; }]; key = [{ Ctrl = "m"; }]; } { action = [ "EditScrollback" { SwitchToMode = "Normal"; } ]; key = [{ Char = "a"; }]; } { action = [ "ScrollDown" ]; key = [{ Char = "n"; } "Down"]; } { action = [ "ScrollUp" ]; key = [{ Char = "e"; } "Up"]; } { action = [ "PageScrollDown" ]; key = [{ Ctrl = "f"; } "PageDown" "Right" { Char = "i"; }]; } { action = [ "PageScrollUp" ]; key = [{ Ctrl = "b"; } "PageUp" "Left" { Char = "h"; }]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } { action = [{ SwitchToMode = "EnterSearch"; } { SearchInput = [ 0 ]; }]; key = [{ Char = "s"; }]; } ]; entersearch = [ { unbind = [ { Char = "l"; } { Char = "j"; } { Char = "k"; } { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Char = "e"; } { Ctrl = "c"; } ]; } { action = [{ SearchInput = [ 27 ]; } { SwitchToMode = "Scroll"; }]; key = [{ Ctrl = "s"; } "Esc"]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } ]; search = [ { unbind = [ { Char = "l"; } { Char = "j"; } { Char = "k"; } { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Ctrl = "c"; } { Ctrl = "n"; } { Char = "p"; } { Ctrl = "b"; } ]; } { action = [{ SwitchToMode = "Resize"; }]; key = [{ Ctrl = "m"; }]; } { action = [ "ScrollDown" ]; key = [{ Char = "n"; } "Down"]; } { action = [ "ScrollUp" ]; key = [{ Char = "e"; } "Up"]; } { action = [ "PageScrollDown" ]; key = [{ Ctrl = "f"; } "PageDown" "Right" { Char = "i"; }]; } { action = [ "PageScrollUp" ]; key = [{ Ctrl = "b"; } "PageUp" "Left" { Char = "h"; }]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } { action = [{ Search = "Down"; }]; key = [{ Char = "k"; }]; } { action = [{ Search = "Up"; }]; key = [{ Char = "j"; }]; } ]; renametab = [ { unbind = [ { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } ]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } ]; renamepane = [ { unbind = [ { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } ]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } ]; session = [ { unbind = [ { Alt = "l"; } { Alt = "j"; } { Alt = "k"; } { Ctrl = "n"; } { Ctrl = "b"; } ]; } { action = [{ SwitchToMode = "Resize"; }]; key = [{ Ctrl = "m"; }]; } { action = [{ NewPane = null; }]; key = [{ Alt = "c"; }]; } { action = [{ MoveFocusOrTab = "Left"; }]; key = [{ Alt = "h"; } { Alt = "Left"; }]; } { action = [{ MoveFocusOrTab = "Right"; }]; key = [{ Alt = "i"; } { Alt = "Right"; }]; } { action = [{ MoveFocus = "Down"; }]; key = [{ Alt = "n"; } { Alt = "Down"; }]; } { action = [{ MoveFocus = "Up"; }]; key = [{ Alt = "e"; } { Alt = "Up"; }]; } ]; tmux = [ { unbind = true; } ]; }; }; }; }; }