From b13aee59efc9535b9461c71bf036541b6fd1f648 Mon Sep 17 00:00:00 2001 From: sloane Date: Fri, 9 Jan 2026 10:40:08 -0500 Subject: [PATCH] nvim,zellij: add nvim+zellij navigation, use autolock --- dot-config/nvim/init.lua | 18 +++ dot-config/nvim/lazy-lock.json | 5 +- dot-config/zellij/config.kdl | 270 +++------------------------------ 3 files changed, 42 insertions(+), 251 deletions(-) diff --git a/dot-config/nvim/init.lua b/dot-config/nvim/init.lua index 58f924b..1b994a9 100644 --- a/dot-config/nvim/init.lua +++ b/dot-config/nvim/init.lua @@ -97,6 +97,24 @@ require("lazy").setup({ }) end }, + + { + "swaits/zellij-nav.nvim", + lazy = true, + event = "VeryLazy", + keys = { + { "", "ZellijNavigateLeftTab", { silent = true, desc = "navigate left or tab" } }, + { "", "ZellijNavigateDown", { silent = true, desc = "navigate down" } }, + { "", "ZellijNavigateUp", { silent = true, desc = "navigate up" } }, + { "", "ZellijNavigateRightTab", { silent = true, desc = "navigate right or tab" } }, + }, + opts = {}, + }, }) vim.cmd.colorscheme "catppuccin" + +vim.api.nvim_create_autocmd("VimLeave", { + pattern = "*", + command = "silent !zellij action switch-mode normal" +}) diff --git a/dot-config/nvim/lazy-lock.json b/dot-config/nvim/lazy-lock.json index adf443e..60fdc80 100644 --- a/dot-config/nvim/lazy-lock.json +++ b/dot-config/nvim/lazy-lock.json @@ -1,6 +1,6 @@ { "catppuccin": { "branch": "main", "commit": "cb5665990a797b102715188e73c44c3931b3b42e" }, - "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "nvim-autopairs": { "branch": "master", "commit": "c2a0dd0d931d0fb07665e1fedb1ea688da3b80b4" }, "nvim-surround": { "branch": "main", "commit": "1098d7b3c34adcfa7feb3289ee434529abd4afd1" }, "nvim-tree.lua": { "branch": "master", "commit": "321bc61580fd066b76861c32de3319c3a6d089e7" }, @@ -10,5 +10,6 @@ "telescope.nvim": { "branch": "master", "commit": "3333a52ff548ba0a68af6d8da1e54f9cd96e9179" }, "vim-abolish": { "branch": "master", "commit": "880a562ff9176773897930b5a26a496f68e5a985" }, "vim-commentary": { "branch": "master", "commit": "34976d96b61d49cafce624cdd947317111c43bd8" }, - "vim-repeat": { "branch": "master", "commit": "8106e142dfdc278ff3eaaadd7b362ad7949d4357" } + "vim-repeat": { "branch": "master", "commit": "8106e142dfdc278ff3eaaadd7b362ad7949d4357" }, + "zellij-nav.nvim": { "branch": "main", "commit": "91cc2a642d8927ebde50ced5bf71ba470a0fc116" } } diff --git a/dot-config/zellij/config.kdl b/dot-config/zellij/config.kdl index c3f9686..c13de69 100644 --- a/dot-config/zellij/config.kdl +++ b/dot-config/zellij/config.kdl @@ -1,258 +1,31 @@ -// -// THIS FILE WAS AUTOGENERATED BY ZELLIJ, THE PREVIOUS FILE AT THIS LOCATION WAS COPIED TO: /Users/sloane/.config/zellij/config.kdl.bak.1 -// - -keybinds clear-defaults=true { - locked { - bind "Ctrl g" { SwitchToMode "normal"; } - } - pane { - bind "left" { MoveFocus "left"; } - bind "down" { MoveFocus "down"; } - bind "up" { MoveFocus "up"; } - bind "right" { MoveFocus "right"; } - bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; } - bind "d" { NewPane "down"; SwitchToMode "locked"; } - bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "locked"; } - bind "f" { ToggleFocusFullscreen; SwitchToMode "locked"; } - bind "h" { MoveFocus "left"; } - bind "i" { TogglePanePinned; SwitchToMode "locked"; } - bind "j" { MoveFocus "down"; } - bind "k" { MoveFocus "up"; } - bind "l" { MoveFocus "right"; } - bind "n" { NewPane; SwitchToMode "locked"; } - bind "p" { SwitchToMode "normal"; } - bind "r" { NewPane "right"; SwitchToMode "locked"; } - bind "s" { NewPane "stacked"; SwitchToMode "locked"; } - bind "w" { ToggleFloatingPanes; SwitchToMode "locked"; } - bind "x" { CloseFocus; SwitchToMode "locked"; } - bind "z" { TogglePaneFrames; SwitchToMode "locked"; } - bind "tab" { SwitchFocus; } - } - tab { - bind "left" { GoToPreviousTab; } - bind "down" { GoToNextTab; } - bind "up" { GoToPreviousTab; } - bind "right" { GoToNextTab; } - bind "1" { GoToTab 1; SwitchToMode "locked"; } - bind "2" { GoToTab 2; SwitchToMode "locked"; } - bind "3" { GoToTab 3; SwitchToMode "locked"; } - bind "4" { GoToTab 4; SwitchToMode "locked"; } - bind "5" { GoToTab 5; SwitchToMode "locked"; } - bind "6" { GoToTab 6; SwitchToMode "locked"; } - bind "7" { GoToTab 7; SwitchToMode "locked"; } - bind "8" { GoToTab 8; SwitchToMode "locked"; } - bind "9" { GoToTab 9; SwitchToMode "locked"; } - bind "[" { BreakPaneLeft; SwitchToMode "locked"; } - bind "]" { BreakPaneRight; SwitchToMode "locked"; } - bind "b" { BreakPane; SwitchToMode "locked"; } - bind "h" { GoToPreviousTab; } - bind "j" { GoToNextTab; } - bind "k" { GoToPreviousTab; } - bind "l" { GoToNextTab; } - bind "n" { NewTab; SwitchToMode "locked"; } - bind "r" { SwitchToMode "renametab"; TabNameInput 0; } - bind "s" { ToggleActiveSyncTab; SwitchToMode "locked"; } - bind "t" { SwitchToMode "normal"; } - bind "x" { CloseTab; SwitchToMode "locked"; } - bind "tab" { ToggleTab; } - } - resize { - bind "left" { Resize "Increase left"; } - bind "down" { Resize "Increase down"; } - bind "up" { Resize "Increase up"; } - bind "right" { Resize "Increase right"; } - bind "+" { Resize "Increase"; } - bind "-" { Resize "Decrease"; } - bind "=" { Resize "Increase"; } - bind "H" { Resize "Decrease left"; } - bind "J" { Resize "Decrease down"; } - bind "K" { Resize "Decrease up"; } - bind "L" { Resize "Decrease right"; } - bind "h" { Resize "Increase left"; } - bind "j" { Resize "Increase down"; } - bind "k" { Resize "Increase up"; } - bind "l" { Resize "Increase right"; } - bind "r" { SwitchToMode "normal"; } - } - move { - bind "left" { MovePane "left"; } - bind "down" { MovePane "down"; } - bind "up" { MovePane "up"; } - bind "right" { MovePane "right"; } - bind "h" { MovePane "left"; } - bind "j" { MovePane "down"; } - bind "k" { MovePane "up"; } - bind "l" { MovePane "right"; } - bind "m" { SwitchToMode "normal"; } - bind "n" { MovePane; } - bind "p" { MovePaneBackwards; } - bind "tab" { MovePane; } - } - scroll { - bind "Alt left" { MoveFocusOrTab "left"; SwitchToMode "locked"; } - bind "Alt down" { MoveFocus "down"; SwitchToMode "locked"; } - bind "Alt up" { MoveFocus "up"; SwitchToMode "locked"; } - bind "Alt right" { MoveFocusOrTab "right"; SwitchToMode "locked"; } - bind "e" { EditScrollback; SwitchToMode "locked"; } - bind "f" { SwitchToMode "entersearch"; SearchInput 0; } - bind "Alt h" { MoveFocusOrTab "left"; SwitchToMode "locked"; } - bind "Alt j" { MoveFocus "down"; SwitchToMode "locked"; } - bind "Alt k" { MoveFocus "up"; SwitchToMode "locked"; } - bind "Alt l" { MoveFocusOrTab "right"; SwitchToMode "locked"; } - bind "s" { SwitchToMode "normal"; } - } - search { - bind "c" { SearchToggleOption "CaseSensitivity"; } - bind "n" { Search "down"; } - bind "o" { SearchToggleOption "WholeWord"; } - bind "p" { Search "up"; } - bind "w" { SearchToggleOption "Wrap"; } - } - session { - bind "a" { - LaunchOrFocusPlugin "zellij:about" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - bind "c" { - LaunchOrFocusPlugin "configuration" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - bind "d" { Detach; } - bind "o" { SwitchToMode "normal"; } - bind "p" { - LaunchOrFocusPlugin "plugin-manager" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - bind "s" { - LaunchOrFocusPlugin "zellij:share" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - bind "w" { - LaunchOrFocusPlugin "session-manager" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - } - shared_among "normal" "locked" { - bind "Alt left" { MoveFocusOrTab "left"; } - bind "Alt down" { MoveFocus "down"; } - bind "Alt up" { MoveFocus "up"; } - bind "Alt right" { MoveFocusOrTab "right"; } - bind "Alt +" { Resize "Increase"; } - bind "Alt -" { Resize "Decrease"; } - bind "Alt =" { Resize "Increase"; } - bind "Alt [" { PreviousSwapLayout; } - bind "Alt ]" { NextSwapLayout; } - bind "Alt f" { ToggleFloatingPanes; } - bind "Alt h" { MoveFocusOrTab "left"; } - bind "Alt i" { MoveTab "left"; } - bind "Alt j" { MoveFocus "down"; } - bind "Alt k" { MoveFocus "up"; } - bind "Alt l" { MoveFocusOrTab "right"; } - bind "Alt n" { NewPane; } - bind "Alt o" { MoveTab "right"; } - bind "Alt p" { TogglePaneInGroup; } - bind "Alt Shift p" { ToggleGroupMarking; } - } - shared_except "locked" "renametab" "renamepane" { - bind "Ctrl g" { SwitchToMode "locked"; } - bind "Ctrl q" { Quit; } - } - shared_except "locked" "entersearch" { - bind "enter" { SwitchToMode "locked"; } - } - shared_except "locked" "entersearch" "renametab" "renamepane" { - bind "esc" { SwitchToMode "locked"; } - } - shared_except "locked" "entersearch" "renametab" "renamepane" "move" { - bind "m" { SwitchToMode "move"; } - } - shared_except "locked" "entersearch" "search" "renametab" "renamepane" "session" { - bind "o" { SwitchToMode "session"; } - } - shared_except "locked" "tab" "entersearch" "renametab" "renamepane" { - bind "t" { SwitchToMode "tab"; } - } - shared_among "normal" "resize" "tab" "scroll" "prompt" "tmux" { - bind "p" { SwitchToMode "pane"; } - } - shared_among "normal" "resize" "search" "move" "prompt" "tmux" { - bind "s" { SwitchToMode "scroll"; } - } - shared_except "locked" "resize" "pane" "tab" "entersearch" "renametab" "renamepane" { - bind "r" { SwitchToMode "resize"; } - } - shared_among "scroll" "search" { - bind "PageDown" { PageScrollDown; } - bind "PageUp" { PageScrollUp; } - bind "left" { PageScrollUp; } - bind "down" { ScrollDown; } - bind "up" { ScrollUp; } - bind "right" { PageScrollDown; } - bind "Ctrl b" { PageScrollUp; } - bind "Ctrl c" { ScrollToBottom; SwitchToMode "locked"; } - bind "d" { HalfPageScrollDown; } - bind "Ctrl f" { PageScrollDown; } - bind "h" { PageScrollUp; } - bind "j" { ScrollDown; } - bind "k" { ScrollUp; } - bind "l" { PageScrollDown; } - bind "u" { HalfPageScrollUp; } - } - entersearch { - bind "Ctrl c" { SwitchToMode "scroll"; } - bind "esc" { SwitchToMode "scroll"; } - bind "enter" { SwitchToMode "search"; } - } - renametab { - bind "esc" { UndoRenameTab; SwitchToMode "tab"; } - } - shared_among "renametab" "renamepane" { - bind "Ctrl c" { SwitchToMode "locked"; } - } - renamepane { - bind "esc" { UndoRenamePane; SwitchToMode "pane"; } - } -} - // Plugin aliases - can be used to change the implementation of Zellij // changing these requires a restart to take effect plugins { - about location="zellij:about" - compact-bar location="zellij:compact-bar" - configuration location="zellij:configuration" - filepicker location="zellij:strider" { - cwd "/" - } - plugin-manager location="zellij:plugin-manager" - session-manager location="zellij:session-manager" - status-bar location="zellij:status-bar" - strider location="zellij:strider" - tab-bar location="zellij:tab-bar" - welcome-screen location="zellij:session-manager" { - welcome_screen true - } + about location="zellij:about" + compact-bar location="zellij:compact-bar" + configuration location="zellij:configuration" + filepicker location="zellij:strider" { + cwd "/" + } + plugin-manager location="zellij:plugin-manager" + session-manager location="zellij:session-manager" + status-bar location="zellij:status-bar" + strider location="zellij:strider" + tab-bar location="zellij:tab-bar" + welcome-screen location="zellij:session-manager" { + welcome_screen true + } + autolock location="https://github.com/fresh2dev/zellij-autolock/releases/download/0.2.2/zellij-autolock.wasm" { + is_enabled true + triggers "nvim|vim|jj" + } } // Plugins to load in the background when a new session starts // eg. "file:/path/to/my-plugin.wasm" // eg. "https://example.com/my-plugin.wasm" load_plugins { + autolock } web_client { font "monospace" @@ -263,17 +36,16 @@ web_client { // - true // - false (Default) // -// simplified_ui true +simplified_ui false // Choose the theme that is specified in the themes section. // Default: default // -// theme "dracula" +theme "catppuccin-mocha" // Choose the base input mode of zellij. // Default: normal // -default_mode "locked" // Choose the path to the default shell that zellij will use for opening new panes // Default: $SHELL