583 lines
17 KiB
Nix
583 lines
17 KiB
Nix
{ 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;
|
|
default_layout = "compact";
|
|
|
|
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;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|