feat: improve herdr config

This commit is contained in:
kiri committed 2026-09-10 10:19:05 +02:00
1 parent 34cf3d79cd
commit 3bfb233614
2 files changed
+92 -14

No files matched your search

+49 -13
View File
@@ -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. 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 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. provides enough structure for now. No workspace rules or fixed layout are needed.
Further Herdr configuration, agent workflows and project management are explicitly The user reopened Herdr configuration on 2026-09-10 for direct shortcuts and less
deferred at the user's request. Do not use them as the default next task or request interaction friction, using supported configuration only. Layout presets and
workflow feedback unless the user reopens the topic. The active area is theming. launchers are explicitly unwanted; arrange panes manually. Agent evaluation is
Agent evaluation is
explicitly deferred. Do not resume replacement-tool comparisons or ask for an explicitly deferred. Do not resume replacement-tool comparisons or ask for an
evaluation task/budget as a prerequisite for this work. 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 | | H / J / K / L | Focus pane left / down / up / right |
| U / I | Next / previous workspace | | U / I | Next / previous workspace |
| O / G | Workspace picker / goto picker | | O / G | Workspace picker / goto picker |
| 1–9 | Focus agent | | P / N | Previous / next agent |
| [ / ] | Previous / next tab | | [ / ] | Previous / next tab |
| Enter | New tab | | Enter | New tab |
| V / Minus | Split right / down | | V / Minus | Split right / down |
| F | Zoom pane | | F | Zoom pane |
| Q | Detach, leaving the session running | | 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. 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 Niri and Kitty bindings are unchanged. Direct number bindings are removed because
the installed Herdr 0.9.0 default config and current upstream documentation. the user finds them unergonomic; built-in prefix shortcuts remain available.
The user reports that the bindings work well in practice.
Reload Herdr with its existing Ctrl+B then Shift+R binding after activating Nix. Use one space per project or worktree, tabs for different activities, and panes
Verification: repository formatting, rendered TOML parsing, flake evaluation, for tools needed together. Start Neovim in a shell, split right with Ctrl+Alt+V
Zenith no-link system build and whitespace checking passed. No tests or live Herdr for an agent shell, and optionally split that pane down with Ctrl+Alt+Minus for
session changes performed by the agent. The user's activation installed the Herdr tests or a server. Choose and launch the agent manually. No preset is installed.
config and preserved `config.toml.bak`, but Home Manager later timed out (below). 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 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 the running SharePoint oneshot, then waited until Home Manager's five-minute start
+43 -1
View File
@@ -125,6 +125,7 @@ in
[ui] [ui]
agent_panel_sort = "spaces" agent_panel_sort = "spaces"
prompt_new_tab_name = false
[ui.toast] [ui.toast]
delivery = "off" delivery = "off"
@@ -141,7 +142,8 @@ in
navigate_workspace_up = "i" navigate_workspace_up = "i"
workspace_picker = ["prefix+w", "ctrl+alt+o"] workspace_picker = ["prefix+w", "ctrl+alt+o"]
goto = ["prefix+g", "ctrl+alt+g"] 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+["] previous_tab = ["prefix+p", "ctrl+alt+["]
next_tab = ["prefix+n", "ctrl+alt+]"] next_tab = ["prefix+n", "ctrl+alt+]"]
new_tab = ["prefix+c", "ctrl+alt+enter"] new_tab = ["prefix+c", "ctrl+alt+enter"]
@@ -149,6 +151,46 @@ in
split_horizontal = ["prefix+minus", "ctrl+alt+minus"] split_horizontal = ["prefix+minus", "ctrl+alt+minus"]
zoom = ["prefix+z", "ctrl+alt+f"] zoom = ["prefix+z", "ctrl+alt+f"]
detach = ["prefix+q", "ctrl+alt+q"] 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 = '' home.file.".codex/AGENTS.md".text = ''