OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
 
main @ 245 LINES
 
[ HISTORY ]  [ UP ]
 

{
  osConfig,
  config,
  lib,
  ook,
  self',
  inputs',
  pkgs,
  ...
}: let
  inherit (ook) color;
  inherit (osConfig.ooknet) console;
  inherit (osConfig.ooknet.host) admin;
  inherit (lib) getExe mkIf;

  cfg = osConfig.ooknet.console.tools.zellij;
in {
  imports = [./options.nix];
  config = mkIf (cfg.enable || console.multiplexer == "zellij") {
    programs.zellij = {
      enable = true;
      # pinned, see nixpkgs-zellij input
      package = inputs'.nixpkgs-zellij.legacyPackages.zellij;
      settings = {
        theme = "${color.slug}";
        default_shell = "${admin.shell}";
        default_layout = "default";
        pane_frames = false;
        scrollback_editor = "${console.editor}";
        themes = {
          "${color.slug}" = {
            fg = "#${color.base05}";
            bg = "#${color.base00}";
            black = "#${color.base00}";
            red = "#${color.base08}";
            green = "#${color.base0B}";
            yellow = "#${color.base0A}";
            blue = "#${color.base0D}";
            magenta = "#${color.base0E}";
            cyan = "#${color.base0C}";
            white = "#${color.base05}";
            orange = "#${color.base09}";
          };
        };
      };

      # layout configurations
      _layouts = {
        default = {
          tabs =
            #kdl
            ''
              tab name="terminal" focus=true {
                pane name="term" focus=true
              }
            '';
        };
        flake = {
          tabs =
            # kdl
            ''
              tab name="terminal" focus=true {
                pane name="term" cwd="$FLAKE" focus=true
              }
              tab name="editor" {
                pane name="edit" edit="$FLAKE"
              }
              tab name="git" {
                pane name="git" cwd="$FLAKE" command="lazygit"
              }
            '';
        };
        music = mkIf config.programs.spotify-player.enable {
          icon = "?";
          tabs =
            # kdl
            ''
              tab name="spotify" focus=true {
                pane name="spotify" {
                  borderless false
                  command "${getExe self'.packages.spotify-player}"
                  focus true
                }
                pane name="Visualizer" {
                  borderless false
                  split_direction "horizontal"
                  size "20%"
                  command "${getExe pkgs.cava}"
                }
              }
            '';
        };
      };

      # keybind configuration
      extraSettings =
        # kdl
        ''
          keybinds clear-defaults=true {
              shared_except "locked" {
                  bind "Alt 1" { GoToTab 1; }
                  bind "Alt 2" { GoToTab 2; }
                  bind "Alt 3" { GoToTab 3; }
              bind "Alt 4" { GoToTab 4; }
                  bind "Alt 5" { GoToTab 5; }
                  bind "Alt 6" { GoToTab 6; }
                  bind "Alt 7" { GoToTab 7; }
                  bind "Alt 8" { GoToTab 8; }
                  bind "Alt 9" { GoToTab 9; }
                  bind "Alt -" { Resize "Decrease" ; }
                  bind "Alt =" { Resize "Increase" ; }
              }

              locked {
                  bind "Alt g" { SwitchToMode "Normal" ; }
              }

              resize {
                  bind "Alt r" { SwitchToMode "Normal" ; }
                  bind "h" "Left" { Resize "Increase Left" ; }
                  bind "j" "Down"  { Resize "Increase Down" ; }
                  bind "k" "Up"    { Resize "Increase Up" ; }
                  bind "l" "Right" { Resize "Increase Right" ; }
              }

              pane {
                  bind "Alt p"     { SwitchToMode "Normal" ; }
                  bind "c"         { Clear ; }
                  bind "e"         { TogglePaneEmbedOrFloating ; SwitchToMode "Nor
mal" ; }
                  bind "f"         { ToggleFocusFullscreen ; SwitchToMode "Normal"
 ; }
                  bind "j" "Down"  { NewPane "Down" ; SwitchToMode "Normal" ; }
                  bind "l" "Right" { NewPane "Right" ; SwitchToMode "Normal" ; }
                  bind "n"         { NewPane ; SwitchToMode "Normal" ; }
                  bind "p"         { SwitchFocus ; SwitchToMode "Normal" ; }
                  bind "r"         { SwitchToMode "RenamePane" ; PaneNameInput 0 ;
 }
                  bind "w"         { ToggleFloatingPanes ; SwitchToMode "Normal" ;
 }
                  bind "x"         { CloseFocus ; SwitchToMode "Normal" ; }
                  bind "z"         { TogglePaneFrames ; SwitchToMode "Normal" ; }
              }
              move {
                  bind "Alt m"     { SwitchToMode "Normal"; }
                  bind "h" "Left"  { MovePane "Left" ; }
                  bind "j" "Down"  { MovePane "Down" ; }
                  bind "k" "Up"    { MovePane "Up" ; }
                  bind "l" "Right" { MovePane "Right" ; }
              }
              tab {
                bind "Alt t" { SwitchToMode "Normal" ; }
                bind "b"     { BreakPane; SwitchToMode "Normal" ; }
                bind "h"     { MoveTab "Left" ; }
                bind "l"     { MoveTab "Right" ; }
                bind "n"     { NewTab ; SwitchToMode "Normal" ; }
                bind "r"     { SwitchToMode "RenameTab" ; TabNameInput 0 ; }
                bind "x"     { CloseTab ; SwitchToMode "Normal" ; }
                bind "1"     { GoToTab 1 ; SwitchToMode "Normal" ; }
                bind "2"     { GoToTab 2 ; SwitchToMode "Normal" ; }
                bind "3"     { GoToTab 3 ; SwitchToMode "Normal" ; }
                bind "4"     { GoToTab 4 ; SwitchToMode "Normal" ; }
                bind "5"     { GoToTab 5 ; SwitchToMode "Normal" ; }
                bind "6"     { GoToTab 6 ; SwitchToMode "Normal" ; }
                bind "7"     { GoToTab 7 ; SwitchToMode "Normal" ; }
                bind "8"     { GoToTab 8 ; SwitchToMode "Normal" ; }
                bind "9"     { GoToTab 9 ; SwitchToMode "Normal" ; }
            }
            scroll {
                bind "Alt s"    { SwitchToMode "Normal" ; }
                bind "e"        { EditScrollback; SwitchToMode "Normal" ; }
                bind "d"        { HalfPageScrollDown ; }
                bind "u"        { HalfPageScrollUp ; }
                bind "j" "Down" { ScrollDown ; }
                bind "k" "Up"   { ScrollUp ; }
                bind "Home"     { ScrollToTop ; SwitchToMode "Normal" ; }
                bind "End"      { ScrollToBottom ; SwitchToMode "Normal" ; }
                bind "PageDown" { PageScrollDown ; }
                bind "PageUp"   { PageScrollUp ; }
                bind "s"        { SwitchToMode "EnterSearch" ; SearchInput 0 ; }
            }
            search {
                bind "Alt s" { SwitchToMode "Normal" ; }
                bind "n"     { Search "down" ; }
                bind "p"     { Search "up" ; }
                bind "c"     { SearchToggleOption "CaseSensitivity" ; }
                bind "w"     { SearchToggleOption "Wrap" ; }
                bind "o"     { SearchToggleOption "WholeWord" ; }
            }
            entersearch {
                bind "Alt c" "Esc" { SwitchToMode "Scroll" ; }
                bind "Enter"       { SwitchToMode "Search" ; }
            }
            renametab {
                bind "Alt c" { SwitchToMode "Normal" ; }
                bind "Esc"   { UndoRenameTab ; SwitchToMode "Tab" ; }
            }
            renamepane {
                bind "Alt c" { SwitchToMode "Normal"; }
                bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; }
            }
            session {
                bind "Alt o" { SwitchToMode "Normal" ; }
                bind "d"     { Detach ; }
                bind "w"     {
                    LaunchOrFocusPlugin "session-manager" {
                        floating true
                        move_to_focused_tab true
                    };
                    SwitchToMode "Normal"
                }
            }
            shared_except "locked" {
                bind "Alt g"             { SwitchToMode "Locked" ; }
                bind "Alt q"             { Quit ; }
                bind "Alt h" "Alt Left"  { MoveFocusOrTab "Left" ; }
                bind "Alt l" "Alt Right" { MoveFocusOrTab "Right" ; }
                bind "Alt j" "Alt Down"  { MoveFocus "Down" ; }
                bind "Alt k" "Alt Up"    { MoveFocus "Up" ; }
                bind "Alt ["             { PreviousSwapLayout ; }
                bind "Alt ]"             { NextSwapLayout ; }
            }
            shared_except "normal" "locked" {
                bind "Enter" "Esc" { SwitchToMode "Normal" ; }
            }
            shared_except "pane" "locked" {
                bind "Alt p" { SwitchToMode "Pane" ; }
            }
            shared_except "resize" "locked" {
                bind "Alt r" { SwitchToMode "Resize" ; }
            }
            shared_except "scroll" "locked" {
                bind "Alt s" { SwitchToMode "Scroll" ; }
            }
            shared_except "session" "locked" {
                bind "Alt o" { SwitchToMode "Session" ; }
            }
            shared_except "tab" "locked" {
                bind "Alt t" { SwitchToMode "Tab" ; }
            }
            shared_except "move" "locked" {
                bind "Alt m" { SwitchToMode "Move" ; }
            }
          }
        '';
    };
  };
}

{
  osConfig,
  config,
  lib,
  ook,
  self',
  inputs',
  pkgs,
  ...
}: let
  inherit (ook) color;
  inherit (osConfig.ooknet) console;
  inherit (osConfig.ooknet.host) admin;
  inherit (lib) getExe mkIf;

  cfg = osConfig.ooknet.console.tools.zellij
;
in {
  imports = [./options.nix];
  config = mkIf (cfg.enable || console.multi
plexer == "zellij") {
    programs.zellij = {
      enable = true;
      # pinned, see nixpkgs-zellij input
      package = inputs'.nixpkgs-zellij.legac
yPackages.zellij;
      settings = {
        theme = "${color.slug}";
        default_shell = "${admin.shell}";
        default_layout = "default";
        pane_frames = false;
        scrollback_editor = "${console.edito
r}";
        themes = {
          "${color.slug}" = {
            fg = "#${color.base05}";
            bg = "#${color.base00}";
            black = "#${color.base00}";
            red = "#${color.base08}";
            green = "#${color.base0B}";
            yellow = "#${color.base0A}";
            blue = "#${color.base0D}";
            magenta = "#${color.base0E}";
            cyan = "#${color.base0C}";
            white = "#${color.base05}";
            orange = "#${color.base09}";
          };
        };
      };

      # layout configurations
      _layouts = {
        default = {
          tabs =
            #kdl
            ''
              tab name="terminal" focus=true
 {
                pane name="term" focus=true
              }
            '';
        };
        flake = {
          tabs =
            # kdl
            ''
              tab name="terminal" focus=true
 {
                pane name="term" cwd="$FLAKE
" focus=true
              }
              tab name="editor" {
                pane name="edit" edit="$FLAK
E"
              }
              tab name="git" {
                pane name="git" cwd="$FLAKE"
 command="lazygit"
              }
            '';
        };
        music = mkIf config.programs.spotify
-player.enable {
          icon = "?";
          tabs =
            # kdl
            ''
              tab name="spotify" focus=true 
{
                pane name="spotify" {
                  borderless false
                  command "${getExe self'.pa
ckages.spotify-player}"
                  focus true
                }
                pane name="Visualizer" {
                  borderless false
                  split_direction "horizonta
l"
                  size "20%"
                  command "${getExe pkgs.cav
a}"
                }
              }
            '';
        };
      };

      # keybind configuration
      extraSettings =
        # kdl
        ''
          keybinds clear-defaults=true {
              shared_except "locked" {
                  bind "Alt 1" { GoToTab 1; 
}
                  bind "Alt 2" { GoToTab 2; 
}
                  bind "Alt 3" { GoToTab 3; 
}
              bind "Alt 4" { GoToTab 4; }
                  bind "Alt 5" { GoToTab 5; 
}
                  bind "Alt 6" { GoToTab 6; 
}
                  bind "Alt 7" { GoToTab 7; 
}
                  bind "Alt 8" { GoToTab 8; 
}
                  bind "Alt 9" { GoToTab 9; 
}
                  bind "Alt -" { Resize "Dec
rease" ; }
                  bind "Alt =" { Resize "Inc
rease" ; }
              }

              locked {
                  bind "Alt g" { SwitchToMod
e "Normal" ; }
              }

              resize {
                  bind "Alt r" { SwitchToMod
e "Normal" ; }
                  bind "h" "Left" { Resize "
Increase Left" ; }
                  bind "j" "Down"  { Resize 
"Increase Down" ; }
                  bind "k" "Up"    { Resize 
"Increase Up" ; }
                  bind "l" "Right" { Resize 
"Increase Right" ; }
              }

              pane {
                  bind "Alt p"     { SwitchT
oMode "Normal" ; }
                  bind "c"         { Clear ;
 }
                  bind "e"         { ToggleP
aneEmbedOrFloating ; SwitchToMode "Normal" ;
 }
                  bind "f"         { ToggleF
ocusFullscreen ; SwitchToMode "Normal" ; }
                  bind "j" "Down"  { NewPane
 "Down" ; SwitchToMode "Normal" ; }
                  bind "l" "Right" { NewPane
 "Right" ; SwitchToMode "Normal" ; }
                  bind "n"         { NewPane
 ; SwitchToMode "Normal" ; }
                  bind "p"         { SwitchF
ocus ; SwitchToMode "Normal" ; }
                  bind "r"         { SwitchT
oMode "RenamePane" ; PaneNameInput 0 ; }
                  bind "w"         { ToggleF
loatingPanes ; SwitchToMode "Normal" ; }
                  bind "x"         { CloseFo
cus ; SwitchToMode "Normal" ; }
                  bind "z"         { ToggleP
aneFrames ; SwitchToMode "Normal" ; }
              }
              move {
                  bind "Alt m"     { SwitchT
oMode "Normal"; }
                  bind "h" "Left"  { MovePan
e "Left" ; }
                  bind "j" "Down"  { MovePan
e "Down" ; }
                  bind "k" "Up"    { MovePan
e "Up" ; }
                  bind "l" "Right" { MovePan
e "Right" ; }
              }
              tab {
                bind "Alt t" { SwitchToMode 
"Normal" ; }
                bind "b"     { BreakPane; Sw
itchToMode "Normal" ; }
                bind "h"     { MoveTab "Left
" ; }
                bind "l"     { MoveTab "Righ
t" ; }
                bind "n"     { NewTab ; Swit
chToMode "Normal" ; }
                bind "r"     { SwitchToMode 
"RenameTab" ; TabNameInput 0 ; }
                bind "x"     { CloseTab ; Sw
itchToMode "Normal" ; }
                bind "1"     { GoToTab 1 ; S
witchToMode "Normal" ; }
                bind "2"     { GoToTab 2 ; S
witchToMode "Normal" ; }
                bind "3"     { GoToTab 3 ; S
witchToMode "Normal" ; }
                bind "4"     { GoToTab 4 ; S
witchToMode "Normal" ; }
                bind "5"     { GoToTab 5 ; S
witchToMode "Normal" ; }
                bind "6"     { GoToTab 6 ; S
witchToMode "Normal" ; }
                bind "7"     { GoToTab 7 ; S
witchToMode "Normal" ; }
                bind "8"     { GoToTab 8 ; S
witchToMode "Normal" ; }
                bind "9"     { GoToTab 9 ; S
witchToMode "Normal" ; }
            }
            scroll {
                bind "Alt s"    { SwitchToMo
de "Normal" ; }
                bind "e"        { EditScroll
back; SwitchToMode "Normal" ; }
                bind "d"        { HalfPageSc
rollDown ; }
                bind "u"        { HalfPageSc
rollUp ; }
                bind "j" "Down" { ScrollDown
 ; }
                bind "k" "Up"   { ScrollUp ;
 }
                bind "Home"     { ScrollToTo
p ; SwitchToMode "Normal" ; }
                bind "End"      { ScrollToBo
ttom ; SwitchToMode "Normal" ; }
                bind "PageDown" { PageScroll
Down ; }
                bind "PageUp"   { PageScroll
Up ; }
                bind "s"        { SwitchToMo
de "EnterSearch" ; SearchInput 0 ; }
            }
            search {
                bind "Alt s" { SwitchToMode 
"Normal" ; }
                bind "n"     { Search "down"
 ; }
                bind "p"     { Search "up" ;
 }
                bind "c"     { SearchToggleO
ption "CaseSensitivity" ; }
                bind "w"     { SearchToggleO
ption "Wrap" ; }
                bind "o"     { SearchToggleO
ption "WholeWord" ; }
            }
            entersearch {
                bind "Alt c" "Esc" { SwitchT
oMode "Scroll" ; }
                bind "Enter"       { SwitchT
oMode "Search" ; }
            }
            renametab {
                bind "Alt c" { SwitchToMode 
"Normal" ; }
                bind "Esc"   { UndoRenameTab
 ; SwitchToMode "Tab" ; }
            }
            renamepane {
                bind "Alt c" { SwitchToMode 
"Normal"; }
                bind "Esc" { UndoRenamePane;
 SwitchToMode "Pane"; }
            }
            session {
                bind "Alt o" { SwitchToMode 
"Normal" ; }
                bind "d"     { Detach ; }
                bind "w"     {
                    LaunchOrFocusPlugin "ses
sion-manager" {
                        floating true
                        move_to_focused_tab 
true
                    };
                    SwitchToMode "Normal"
                }
            }
            shared_except "locked" {
                bind "Alt g"             { S
witchToMode "Locked" ; }
                bind "Alt q"             { Q
uit ; }
                bind "Alt h" "Alt Left"  { M
oveFocusOrTab "Left" ; }
                bind "Alt l" "Alt Right" { M
oveFocusOrTab "Right" ; }
                bind "Alt j" "Alt Down"  { M
oveFocus "Down" ; }
                bind "Alt k" "Alt Up"    { M
oveFocus "Up" ; }
                bind "Alt ["             { P
reviousSwapLayout ; }
                bind "Alt ]"             { N
extSwapLayout ; }
            }
            shared_except "normal" "locked" 
{
                bind "Enter" "Esc" { SwitchT
oMode "Normal" ; }
            }
            shared_except "pane" "locked" {
                bind "Alt p" { SwitchToMode 
"Pane" ; }
            }
            shared_except "resize" "locked" 
{
                bind "Alt r" { SwitchToMode 
"Resize" ; }
            }
            shared_except "scroll" "locked" 
{
                bind "Alt s" { SwitchToMode 
"Scroll" ; }
            }
            shared_except "session" "locked"
 {
                bind "Alt o" { SwitchToMode 
"Session" ; }
            }
            shared_except "tab" "locked" {
                bind "Alt t" { SwitchToMode 
"Tab" ; }
            }
            shared_except "move" "locked" {
                bind "Alt m" { SwitchToMode 
"Move" ; }
            }
          }
        '';
    };
  };
}
 
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET