From 3bfb2336146c2a158a2273adca1aa24fda34cee4 Mon Sep 17 00:00:00 2001 From: Jelle Spreeuwenberg Date: Thu, 10 Sep 2026 10:19:05 +0200 Subject: [PATCH] feat: improve herdr config --- docs/constellation-work.md | 62 +++++++++++++++++++++++++++++-------- modules/capabilities/ai.nix | 44 +++++++++++++++++++++++++- 2 files changed, 92 insertions(+), 14 deletions(-) diff --git a/docs/constellation-work.md b/docs/constellation-work.md index 3873cba..300b659 100644 --- a/docs/constellation-work.md +++ b/docs/constellation-work.md @@ -176,10 +176,9 @@ and system operation/maintenance; these are discussion areas, not a work queue. Herdr's configured keys are accepted: the user reports liking them in practice. Niri workspace grouping stays informal while the user discovers what fits; Herdr provides enough structure for now. No workspace rules or fixed layout are needed. -Further Herdr configuration, agent workflows and project management are explicitly -deferred at the user's request. Do not use them as the default next task or request -workflow feedback unless the user reopens the topic. The active area is theming. -Agent evaluation is +The user reopened Herdr configuration on 2026-09-10 for direct shortcuts and less +interaction friction, using supported configuration only. Layout presets and +launchers are explicitly unwanted; arrange panes manually. Agent evaluation is explicitly deferred. Do not resume replacement-tool comparisons or ask for an evaluation task/budget as a prerequisite for this work. @@ -212,22 +211,59 @@ file. Direct Ctrl+Alt bindings supplement the existing Ctrl+B prefix shortcuts: | H / J / K / L | Focus pane left / down / up / right | | U / I | Next / previous workspace | | O / G | Workspace picker / goto picker | -| 1–9 | Focus agent | +| P / N | Previous / next agent | | [ / ] | Previous / next tab | | Enter | New tab | | V / Minus | Split right / down | | F | Zoom pane | | Q | Detach, leaving the session running | +| Shift+H / J / K / L | Swap panes left / down / up / right (Shift on each) | +| Shift+arrows | Resize pane directly | +| R | Resize mode | +| Tab / Shift+Tab | Next / previous pane | +| Backspace | Return to last pane, including across tabs/spaces | +| X / Shift+X | Close pane / tab | +| Shift+P / Shift+A | Rename pane / tab | +| Shift+[ / Shift+] | Move tab earlier / later | +| Shift+Enter | New space | +| Shift+W / Shift+D | Rename / close space | +| W / Shift+B | Open / create worktree | +| Y / E | Copy mode / open scrollback in Neovim | +| Shift+G | Lazygit popup | +| B | Toggle sidebar | +| / | Keybinding help | +| S / Shift+R | Settings / reload configuration | Inside workspace navigation, U/I moves down/up and H/J/K/L retains pane navigation. -Niri and Kitty bindings are unchanged. Syntax and action names were checked against -the installed Herdr 0.9.0 default config and current upstream documentation. -The user reports that the bindings work well in practice. -Reload Herdr with its existing Ctrl+B then Shift+R binding after activating Nix. -Verification: repository formatting, rendered TOML parsing, flake evaluation, -Zenith no-link system build and whitespace checking passed. No tests or live Herdr -session changes performed by the agent. The user's activation installed the Herdr -config and preserved `config.toml.bak`, but Home Manager later timed out (below). +Niri and Kitty bindings are unchanged. Direct number bindings are removed because +the user finds them unergonomic; built-in prefix shortcuts remain available. + +Use one space per project or worktree, tabs for different activities, and panes +for tools needed together. Start Neovim in a shell, split right with Ctrl+Alt+V +for an agent shell, and optionally split that pane down with Ctrl+Alt+Minus for +tests or a server. Choose and launch the agent manually. No preset is installed. +Ctrl+Alt+Shift+G opens lazygit at 90% width/height in the focused pane's working +directory. Quit lazygit to return; the popup owns input until its command exits. + +Tabs now open immediately with generated names; rename them only when useful. +New spaces already skip naming, and new panes inherit the current directory by +default. Workspace-close confirmation remains enabled to protect running work. +Direct resizing, previous/next agent navigation, last-pane switching, copy mode, +and Neovim scrollback access avoid extra navigation or mode-entry steps. +No documented native setting or CLI action opens Goto directly in search mode; +that limitation remains under the configuration-only constraint. No input macros, +plugins, or package patches are added. + +After activating Nix, reload Herdr with Ctrl+B then Shift+R; subsequent reloads +can use Ctrl+Alt+Shift+R. The expanded shortcuts require interactive verification +through Kitty, including popup working directory, pane swapping/resizing, and +scrollback opening. The earlier bindings were reported working by the user. +Verification (2026-09-10): formatting, flake evaluation, Polaris and Zenith no-link +system builds, and whitespace checks passed. Both hosts generate identical Herdr +TOML, accepted by installed Herdr 0.9.0's `config check`. No activation or live +Herdr session changes were performed. +The earlier activation installed the Herdr config and preserved `config.toml.bak`, +but Home Manager later timed out (below). Activation fix (2026-09-09): Home Manager's service switch stopped and restarted the running SharePoint oneshot, then waited until Home Manager's five-minute start diff --git a/modules/capabilities/ai.nix b/modules/capabilities/ai.nix index 1a41d7b..881f888 100644 --- a/modules/capabilities/ai.nix +++ b/modules/capabilities/ai.nix @@ -125,6 +125,7 @@ in [ui] agent_panel_sort = "spaces" + prompt_new_tab_name = false [ui.toast] delivery = "off" @@ -141,7 +142,8 @@ in navigate_workspace_up = "i" workspace_picker = ["prefix+w", "ctrl+alt+o"] goto = ["prefix+g", "ctrl+alt+g"] - focus_agent = "ctrl+alt+1..9" + previous_agent = "ctrl+alt+p" + next_agent = "ctrl+alt+n" previous_tab = ["prefix+p", "ctrl+alt+["] next_tab = ["prefix+n", "ctrl+alt+]"] new_tab = ["prefix+c", "ctrl+alt+enter"] @@ -149,6 +151,46 @@ in split_horizontal = ["prefix+minus", "ctrl+alt+minus"] zoom = ["prefix+z", "ctrl+alt+f"] detach = ["prefix+q", "ctrl+alt+q"] + + swap_pane_left = ["prefix+shift+h", "ctrl+alt+shift+h"] + swap_pane_down = ["prefix+shift+j", "ctrl+alt+shift+j"] + swap_pane_up = ["prefix+shift+k", "ctrl+alt+shift+k"] + swap_pane_right = ["prefix+shift+l", "ctrl+alt+shift+l"] + resize_pane_left = "ctrl+alt+shift+left" + resize_pane_down = "ctrl+alt+shift+down" + resize_pane_up = "ctrl+alt+shift+up" + resize_pane_right = "ctrl+alt+shift+right" + resize_mode = ["prefix+r", "ctrl+alt+r"] + cycle_pane_next = ["prefix+tab", "ctrl+alt+tab"] + cycle_pane_previous = ["prefix+shift+tab", "ctrl+alt+shift+tab"] + last_pane = "ctrl+alt+backspace" + close_pane = ["prefix+x", "ctrl+alt+x"] + rename_pane = ["prefix+shift+p", "ctrl+alt+shift+p"] + copy_mode = ["prefix+[", "ctrl+alt+y"] + edit_scrollback = ["prefix+e", "ctrl+alt+e"] + + close_tab = ["prefix+shift+x", "ctrl+alt+shift+x"] + rename_tab = ["prefix+shift+t", "ctrl+alt+shift+a"] + move_tab_previous = "ctrl+alt+shift+[" + move_tab_next = "ctrl+alt+shift+]" + new_workspace = ["prefix+shift+n", "ctrl+alt+shift+enter"] + rename_workspace = ["prefix+shift+w", "ctrl+alt+shift+w"] + close_workspace = ["prefix+shift+d", "ctrl+alt+shift+d"] + open_worktree = "ctrl+alt+w" + new_worktree = ["prefix+shift+g", "ctrl+alt+shift+b"] + + toggle_sidebar = ["prefix+b", "ctrl+alt+b"] + help = ["prefix+?", "ctrl+alt+slash"] + settings = ["prefix+s", "ctrl+alt+s"] + reload_config = ["prefix+shift+r", "ctrl+alt+shift+r"] + + [[keys.command]] + key = "ctrl+alt+shift+g" + type = "popup" + command = "lazygit" + description = "Lazygit" + width = "90%" + height = "90%" ''; home.file.".codex/AGENTS.md".text = ''