kdl 6.5.0

Document-oriented KDL parser and API. Allows formatting/whitespace/comment-preserving parsing and modification of KDL text.
Documentation
// If you'd like to override the default keybindings completely, be sure to
// change "keybinds" to "keybinds clear-defaults=#true"
keybinds {
    normal {
        // uncomment this and adjust key if using copy_on_select=#false
        /- bind "Alt c" { Copy }
    }
    locked {
        bind "Ctrl g" { SwitchToMode Normal }
    }
    resize {
        bind "Ctrl n" { SwitchToMode Normal }
        bind h Left { Resize Left }
        bind j Down { Resize Down }
        bind k Up { Resize Up }
        bind l Right { Resize Right }
        bind "=" + { Resize Increase }
        bind - { Resize Decrease }
    }
    pane {
        bind "Ctrl p" { SwitchToMode Normal }
        bind h Left { MoveFocus Left }
        bind l Right { MoveFocus Right }
        bind j Down { MoveFocus Down }
        bind k Up { MoveFocus Up }
        bind p { SwitchFocus }
        bind n { NewPane; SwitchToMode Normal }
        bind d { NewPane Down; SwitchToMode Normal }
        bind r { NewPane Right; SwitchToMode Normal }
        bind x { CloseFocus; SwitchToMode Normal }
        bind f { ToggleFocusFullscreen; SwitchToMode Normal }
        bind z { TogglePaneFrames; SwitchToMode Normal }
        bind w { ToggleFloatingPanes; SwitchToMode Normal }
        bind e { TogglePaneEmbedOrFloating; SwitchToMode Normal }
        bind c { SwitchToMode RenamePane; PaneNameInput 0 }
    }
    move {
        bind "Ctrl h" { SwitchToMode Normal }
        bind n Tab { MovePane }
        bind h Left { MovePane Left }
        bind j Down { MovePane Down }
        bind k Up { MovePane Up }
        bind l Right { MovePane Right }
    }
    tab {
        bind "Ctrl t" { SwitchToMode Normal }
        bind r { SwitchToMode RenameTab; TabNameInput 0 }
        bind h Left Up k { GoToPreviousTab }
        bind l Right Down j { GoToNextTab }
        bind n { NewTab; SwitchToMode Normal }
        bind x { CloseTab; SwitchToMode Normal }
        bind s { ToggleActiveSyncTab; 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 }
        bind Tab { ToggleTab }
    }
    scroll {
        bind "Ctrl s" { SwitchToMode Normal }
        bind e { EditScrollback; SwitchToMode Normal }
        bind s { SwitchToMode EnterSearch; SearchInput 0 }
        bind "Ctrl c" { ScrollToBottom; SwitchToMode Normal }
        bind j Down { ScrollDown }
        bind k Up { ScrollUp }
        bind "Ctrl f" PageDown Right l { PageScrollDown }
        bind "Ctrl b" PageUp Left h { PageScrollUp }
        bind d { HalfPageScrollDown }
        bind u { HalfPageScrollUp }
        // uncomment this and adjust key if using copy_on_select=#false
        /- bind "Alt c" { Copy }
    }
    search {
        bind "Ctrl s" { SwitchToMode Normal }
        bind "Ctrl c" { ScrollToBottom; SwitchToMode Normal }
        bind j Down { ScrollDown }
        bind k Up { ScrollUp }
        bind "Ctrl f" PageDown Right l { PageScrollDown }
        bind "Ctrl b" PageUp Left h { PageScrollUp }
        bind d { HalfPageScrollDown }
        bind u { HalfPageScrollUp }
        bind n { Search down }
        bind p { Search up }
        bind c { SearchToggleOption CaseSensitivity }
        bind w { SearchToggleOption Wrap }
        bind o { SearchToggleOption WholeWord }
    }
    entersearch {
        bind "Ctrl c" Esc { SwitchToMode Scroll }
        bind Enter { SwitchToMode Search }
    }
    renametab {
        bind "Ctrl c" { SwitchToMode Normal }
        bind Esc { UndoRenameTab; SwitchToMode Tab }
    }
    renamepane {
        bind "Ctrl c" { SwitchToMode Normal }
        bind Esc { UndoRenamePane; SwitchToMode Pane }
    }
    session {
        bind "Ctrl o" { SwitchToMode Normal }
        bind "Ctrl s" { SwitchToMode Scroll }
        bind d { Detach }
    }
    tmux {
        bind "[" { SwitchToMode Scroll }
        bind "Ctrl+b" { Write 2; SwitchToMode Normal }
        bind "\"" { NewPane Down; SwitchToMode Normal }
        bind % { NewPane Right; SwitchToMode Normal }
        bind z { ToggleFocusFullscreen; SwitchToMode Normal }
        bind c { NewTab; SwitchToMode Normal }
        bind , { SwitchToMode RenameTab }
        bind p { GoToPreviousTab; SwitchToMode Normal }
        bind n { GoToNextTab; SwitchToMode Normal }
        bind Left { MoveFocus Left; SwitchToMode Normal }
        bind Right { MoveFocus Right; SwitchToMode Normal }
        bind Down { MoveFocus Down; SwitchToMode Normal }
        bind Up { MoveFocus Up; SwitchToMode Normal }
        bind h { MoveFocus Left; SwitchToMode Normal }
        bind l { MoveFocus Right; SwitchToMode Normal }
        bind j { MoveFocus Down; SwitchToMode Normal }
        bind k { MoveFocus Up; SwitchToMode Normal }
        bind o { FocusNextPane }
        bind d { Detach }
        bind x { CloseFocus; SwitchToMode Normal }
    }
    shared_except locked {
        bind "Ctrl g" { SwitchToMode Locked }
        bind "Ctrl q" { Quit }
        bind "Alt n" { NewPane }
        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 =" "Alt +" { Resize Increase }
        bind "Alt -" { Resize Decrease }
    }
    shared_except normal locked {
        bind Enter Space Esc { SwitchToMode Normal }
    }
    shared_except pane locked {
        bind "Ctrl p" { SwitchToMode Pane }
    }
    shared_except resize locked {
        bind "Ctrl n" { SwitchToMode Resize }
    }
    shared_except scroll locked {
        bind "Ctrl s" { SwitchToMode Scroll }
    }
    shared_except session locked {
        bind "Ctrl o" { SwitchToMode Session }
    }
    shared_except tab locked {
        bind "Ctrl t" { SwitchToMode Tab }
    }
    shared_except move locked {
        bind "Ctrl h" { SwitchToMode Move }
    }
    shared_except tmux locked {
        bind "Ctrl b" { SwitchToMode Tmux }
    }
}

plugins {
    tab-bar { path tab-bar }
    status-bar { path status-bar }
    strider { path strider }
    compact-bar { path compact-bar }
}

// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
// eg. when terminal window with an active zellij session is closed
// Options:
//   - detach (Default)
//   - quit
//
/- on_force_close quit

//  Send a request for a simplified ui (without arrow fonts) to plugins
//  Options:
//    - #true
//    - #false (Default)
//
/- simplified_ui #true

// Choose the path to the default shell that zellij will use for opening new panes
// Default: $SHELL
//
/- default_shell $SHELL

// Toggle between having pane frames around the panes
// Options:
//   - #true (default)
//   - #false
//
/- pane_frames #true

// Define color themes for Zellij
// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
// Once these themes are defined, one of them should to be selected in the "theme" section of this file
//
// themes {
//     dracula {
//         fg 248 248 242
//         bg 40 42 54
//         red 255 85 85
//         green 80 250 123
//         yellow 241 250 140
//         blue 98 114 164
//         magenta 255 121 198
//         orange 255 184 108
//         cyan 139 233 253
//         black 0 0 0
//         white 255 255 255
//     }
// }

// Choose the theme that is specified in the themes section.
// Default: default
//
/- theme default

// The name of the default layout to load on startup
// Default: "default"
//
/- default_layout compact

// Choose the mode that zellij uses when starting up.
// Default: normal
//
/- default_mode locked

// Toggle enabling the mouse mode.
// On certain configurations, or terminals this could
// potentially interfere with copying text.
// Options:
//   - #true (default)
//   - #false
//
/- mouse_mode #false

// Configure the scroll back buffer size
// This is the number of lines zellij stores for each pane in the scroll back
// buffer. Excess number of lines are discarded in a FIFO fashion.
// Valid values: positive integers
// Default value: 10000
//
/- scroll_buffer_size 10000

// Provide a command to execute when copying text. The text will be piped to
// the stdin of the program to perform the copy. This can be used with
// terminal emulators which do not support the OSC 52 ANSI control sequence
// that will be used by default if this option is not set.
// Examples:
//
/- copy_command xclip -selection clipboard // x11
/- copy_command wl-copy                    // wayland
/- copy_command pbcopy                     // osx

// Choose the destination for copied text
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
// Does not apply when using copy_command.
// Options:
//   - system (default)
//   - primary
//
/- copy_clipboard primary

// Enable or disable automatic copy (and clear) of selection when releasing mouse
// Default: #true
//
/- copy_on_select #false

// Path to the default editor to use to edit pane scrollbuffer
// Default: $EDITOR or $VISUAL
//
/- scrollback_editor $EDITOR

// When attaching to an existing session with other users,
// should the session be mirrored (true)
// or should each user have their own cursor (false)
// Default: #false
//
/- mirror_session #true

// The folder in which Zellij will look for layouts
//
/- layout_dir "/path/to/my/layout_dir"

// The folder in which Zellij will look for themes
//
/- theme_dir "/path/to/my/theme_dir"