summaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/zellij/config.kdl.tmpl
diff options
context:
space:
mode:
authorsommerfeld <sommerfeld@sommerfeld.dev>2026-09-26 22:23:04 +0100
committersommerfeld <sommerfeld@sommerfeld.dev>2026-09-26 22:23:04 +0100
commitd6f4aee0ccf47dea61204f4af44d8eed2e65f96c (patch)
tree003cc0b4e1f8155ab1a6b24c5f75f8d84d1f346b /dot_config/zellij/config.kdl.tmpl
parentdeb462188fc2adc168c782fca51fae746a299cca (diff)
downloaddotfiles-d6f4aee0ccf47dea61204f4af44d8eed2e65f96c.tar.gz
dotfiles-d6f4aee0ccf47dea61204f4af44d8eed2e65f96c.tar.bz2
dotfiles-d6f4aee0ccf47dea61204f4af44d8eed2e65f96c.zip
Use zsh for Canonical Zellij panes
Diffstat (limited to 'dot_config/zellij/config.kdl.tmpl')
-rw-r--r--dot_config/zellij/config.kdl.tmpl107
1 files changed, 107 insertions, 0 deletions
diff --git a/dot_config/zellij/config.kdl.tmpl b/dot_config/zellij/config.kdl.tmpl
new file mode 100644
index 0000000..04e1bbf
--- /dev/null
+++ b/dot_config/zellij/config.kdl.tmpl
@@ -0,0 +1,107 @@
+{{ if eq (default "host" (index . "machineRole")) "canonical" }}
+default_shell {{ printf "%s/.nix-profile/bin/zsh" .chezmoi.homeDir | quote }}
+{{ end }}
+// Gruvbox dark theme (built-in)
+theme "gruvbox-dark"
+
+// Session resurrection
+serialize_pane_viewport true
+
+// Scrollback
+scroll_buffer_size 50000
+
+// Clipboard: copy to system clipboard on selection (OSC 52)
+copy_on_select true
+
+// Auto-attach to existing session with the same name instead of erroring
+attach_to_session true
+
+// Disable startup popups that overwrite stow-managed config when dismissed
+show_startup_tips false
+show_release_notes false
+
+// Clean UI: no pane borders
+pane_frames false
+
+// Custom keybindings (merged with defaults)
+keybinds {
+ shared_except "locked" {
+ // Free up Ctrl+* keys so they pass through to zsh / nvim.
+ // Mode-entry relocated to Alt+Shift+* below. Ctrl+h/j/k/l are kept
+ // by the vim-zellij-navigator binds further down.
+ unbind "Ctrl b" "Ctrl g" "Ctrl n" "Ctrl o" "Ctrl p" "Ctrl q" "Ctrl s" "Ctrl t"
+
+ // Mode entry (Alt+Shift+<first-letter-of-mode>)
+ bind "Alt Shift P" { SwitchToMode "Pane"; }
+ bind "Alt Shift T" { SwitchToMode "Tab"; }
+ bind "Alt Shift R" { SwitchToMode "Resize"; }
+ bind "Alt Shift S" { SwitchToMode "Scroll"; }
+ bind "Alt Shift O" { SwitchToMode "Session"; }
+ bind "Alt Shift Z" { SwitchToMode "Locked"; }
+ bind "Alt Shift Q" { Quit; }
+
+ // Direct tab access (Alt+number)
+ 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; }
+
+ // Tab management
+ bind "Alt t" { NewTab; }
+ bind "Alt [" { GoToPreviousTab; }
+ bind "Alt ]" { GoToNextTab; }
+
+ // Cycle swap layouts (tiled/stacked variants) — nearest thing to
+ // "reset pane sizes", since zellij has no equalize action.
+ bind "Alt \\" { NextSwapLayout; }
+
+ // Pane management
+ bind "Alt w" { ToggleFocusFullscreen; }
+ bind "Alt x" { CloseFocus; }
+ bind "Alt e" { EditScrollback; }
+
+ // Explicit splits (tmux-style mnemonics: | vertical, _ horizontal).
+ // Bypasses NewPane's aspect-ratio auto-direction which misfires on
+ // widescreens with pane_frames disabled.
+ bind "Alt |" { NewPane "Right"; }
+ bind "Alt _" { NewPane "Down"; }
+
+ // Session
+ bind "Alt q" { Detach; }
+
+ // Quick resize without entering resize mode
+ bind "Alt -" { Resize "Decrease"; }
+ bind "Alt =" { Resize "Increase"; }
+
+ // Seamless vim/zellij pane navigation (requires smart-splits.nvim)
+ bind "Ctrl h" {
+ MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.3.0/vim-zellij-navigator.wasm" {
+ name "move_focus"
+ payload "left"
+ }
+ }
+ bind "Ctrl j" {
+ MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.3.0/vim-zellij-navigator.wasm" {
+ name "move_focus"
+ payload "down"
+ }
+ }
+ bind "Ctrl k" {
+ MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.3.0/vim-zellij-navigator.wasm" {
+ name "move_focus"
+ payload "up"
+ }
+ }
+ bind "Ctrl l" {
+ MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.3.0/vim-zellij-navigator.wasm" {
+ name "move_focus"
+ payload "right"
+ }
+ }
+ }
+}