feat: align Herdr keyboard navigation with the desktop

Add direct Ctrl+Alt pane, workspace, picker and agent navigation while retaining prefix shortcuts. Manage the existing theme and sidebar preferences with the keymap in Home Manager. Record Herdr as the chosen manager and defer agent evaluation.

Formatting, rendered TOML parsing, flake evaluation, Zenith system build and whitespace checks passed. User activation and interactive keyboard acceptance remain; no live sessions were changed.
This commit is contained in:
kiri committed 2026-09-09 18:10:48 +02:00
1 parent 7514ceb04f
commit a85cb5a928
3 files changed
+74 -28

No files matched your search

+32 -21
View File
@@ -83,10 +83,10 @@ coherent commit before starting unrelated work.
in ordinary normal/visual buffers, and Blink Escape cancellation. The existing in ordinary normal/visual buffers, and Blink Escape cancellation. The existing
`tests/neovim-ergonomics.lua` is retained; earlier smoke-check evidence is in the `tests/neovim-ergonomics.lua` is retained; earlier smoke-check evidence is in the
archived plan, with interactive preview restoration/visual behavior unproven. archived plan, with interactive preview restoration/visual behavior unproven.
- **Agents:** agent-deck, Herdr and tmux coexist; no replacement has been chosen. - **Agents:** Herdr is selected; agent-deck and tmux remain installed alongside it.
Codex has agent-deck notifications and hooks enabled. Shared Context7/NixOS skills Codex has agent-deck notifications and hooks enabled. Shared Context7/NixOS skills
live under `.agents/skills`; a Nix-managed marketplace exposes Ponytail. live under `.agents/skills`; a Nix-managed marketplace exposes Ponytail.
Zellij is also declared on workstations. None of this selects a session workflow. Zellij is also declared on workstations. Detailed project workflow remains open.
- **SharePoint:** Zenith declares an hourly service syncing `company-sharepoint:` - **SharePoint:** Zenith declares an hourly service syncing `company-sharepoint:`
into `~/.local/share/yookr-reference/sharepoint/Algemeen` and into `~/.local/share/yookr-reference/sharepoint/Algemeen` and
`company-sharepoint-projecten:` into `Projecten`. Each invocation has `company-sharepoint-projecten:` into `Projecten`. Each invocation has
@@ -122,10 +122,10 @@ The focus is the broader environment, not further API/database polish. Candidate
areas remain places/ownership, navigation/interaction, human/agent collaboration, areas remain places/ownership, navigation/interaction, human/agent collaboration,
and system operation/maintenance; these are discussion areas, not a work queue. and system operation/maintenance; these are discussion areas, not a work queue.
Current discussion: consistent project/agent work and Niri workspace use. The user Current choice: keep Herdr and configure its keys. The user likes its structure,
values Herdr's spaces and overview of running/waiting agents, but dislikes its spaces and overview; keyboard interaction is the issue. Agent evaluation is
keybindings and mouse orientation. Agent-deck has startup issues (not diagnosed). explicitly deferred. Do not resume replacement-tool comparisons or ask for an
Kitty/Niri, tmux and Zellij are candidates, not selected replacements. evaluation task/budget as a prerequisite for this work.
Read-only inspection found existing Niri overview, workspace movement and tabbed Read-only inspection found existing Niri overview, workspace movement and tabbed
columns; Kitty has no declared project/session organization. Installed versions: columns; Kitty has no declared project/session organization. Installed versions:
@@ -145,22 +145,33 @@ worktrees for independent writing efforts, one integration owner. Keep enduring
repository rules in AGENTS.md, current goals/acceptance in task prompts, and durable repository rules in AGENTS.md, current goals/acceptance in task prompts, and durable
decisions/current state in existing project docs. No fixed agent team is selected. decisions/current state in existing project docs. No fixed agent team is selected.
Proposed comparison: hold the desktop and model settings fixed; compare solo, Herdr configuration is now declared in `modules/capabilities/ai.nix`, including
solo plus independent review, then bounded parallel delegation on the same starting the existing Kanagawa theme, workspace-sorted agent panel and disabled toasts.
commit and task. Record accepted correctness, unnecessary complexity, human Home Manager owns `~/.config/herdr/config.toml` after activation; maintain these
interventions/rework, total completion time and aggregate usage including workers. preferences in Nix. Its configured `.bak` mechanism preserves the previous regular
Use fresh isolated runs and common acceptance checks; repeat promising variants file. Direct Ctrl+Alt bindings supplement the existing Ctrl+B prefix shortcuts:
before drawing reliability conclusions. Measure desktop navigation separately.
[Codex subagents](https://learn.chatgpt.com/docs/agent-configuration/subagents)
and [evaluation guidance](https://developers.openai.com/api/docs/guides/evaluation-best-practices)
support bounded delegation and task-specific evaluation; the proposed trial is
not a measured result. No benchmark framework or comparative runs created.
Inputs requested together: typical project/agent count and clients; required | Ctrl+Alt + | Action |
persistence (project switch, terminal close, logout/reboot, remote connection); | --- | --- |
a representative trial task and rough time/spend limit. These determine the first | H / J / K / L | Focus pane left / down / up / right |
concrete trial. No configuration changes, tests, activation or agent runs in this | U / I | Next / previous workspace |
discussion; documentation whitespace checked. | O / G | Workspace picker / goto picker |
| 1–9 | Focus agent |
| [ / ] | Previous / next tab |
| Enter | New tab |
| V / Minus | Split right / down |
| F | Zoom pane |
| Q | Detach, leaving the session running |
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.
Interactive delivery through Kitty remains for user acceptance after activation.
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, activation
or live Herdr session changes performed. Next input is the user's activation and
combined feedback on pane/workspace movement, the pickers and agent jumps.
Mail search remains unresolved. The workbench's custom mail reader, inventory Mail search remains unresolved. The workbench's custom mail reader, inventory
pilot, justfile and old README are archived; native Garden/kubectl/K9s now own the pilot, justfile and old README are archived; native Garden/kubectl/K9s now own the
+7 -7
View File
@@ -30,16 +30,16 @@ use a flake to declare its tools without Nix owning the surrounding workspace.
- Outlook is acceptable as an application, but its interaction and integration - Outlook is acceptable as an application, but its interaction and integration
do not fit as naturally. Accessible mail for tools and agents matters separately do not fit as naturally. Accessible mail for tools and agents matters separately
from choosing a mail reader. Preserve meaning and source context, not just text. from choosing a mail reader. Preserve meaning and source context, not just text.
- Herdr provides useful structure: spaces, running agents and visible attention - Herdr is the chosen agent workspace manager: its spaces, running-agent overview
states. Its keybindings and mouse-oriented interaction fit poorly. Agent-deck and attention states fit. Adapt its keybindings to the keyboard-driven setup.
gave a poor first impression through startup issues; no replacement is selected. Use Ctrl+Alt for direct Herdr actions alongside Super for Niri and Ctrl navigation
Explore whether Niri/Kitty or a terminal multiplexer can provide a more composable in Neovim; retain Herdr's prefix bindings. Agent-deck's startup issues and other
workflow while retaining that understandable overview. session-manager alternatives are not the current focus.
- Current friction is a lack of consistent project and agent working practices, - Current friction is a lack of consistent project and agent working practices,
including Niri workspace use. Tool choice and agent collaboration need to be including Niri workspace use. Tool choice and agent collaboration need to be
considered together. Alignment, maintainability and human attention matter considered together. Alignment, maintainability and human attention matter
alongside speed/cost; compare workflows through concrete tasks before adopting alongside speed/cost. Agent-workflow evaluation is deferred; no fixed delegation
a fixed delegation pattern. pattern has been selected.
- Repositories should contain code and documentation needed by that code, not - Repositories should contain code and documentation needed by that code, not
become containers for general notes and company material destined for Git remotes. become containers for general notes and company material destined for Git remotes.
- Company work includes repositories, reference material, notes, credentials and - Company work includes repositories, reference material, notes, credentials and
+35
View File
@@ -120,6 +120,41 @@ in
pkgs.ctx7 pkgs.ctx7
]; ];
xdg.configFile."herdr/config.toml".text = ''
onboarding = false
[theme]
name = "kanagawa"
auto_switch = false
[ui]
agent_panel_sort = "spaces"
[ui.toast]
delivery = "off"
[keys]
# Super belongs to Niri; Ctrl navigation belongs to Neovim.
focus_pane_left = ["prefix+h", "ctrl+alt+h"]
focus_pane_down = ["prefix+j", "ctrl+alt+j"]
focus_pane_up = ["prefix+k", "ctrl+alt+k"]
focus_pane_right = ["prefix+l", "ctrl+alt+l"]
next_workspace = "ctrl+alt+u"
previous_workspace = "ctrl+alt+i"
navigate_workspace_down = "u"
navigate_workspace_up = "i"
workspace_picker = ["prefix+w", "ctrl+alt+o"]
goto = ["prefix+g", "ctrl+alt+g"]
focus_agent = "ctrl+alt+1..9"
previous_tab = ["prefix+p", "ctrl+alt+["]
next_tab = ["prefix+n", "ctrl+alt+]"]
new_tab = ["prefix+c", "ctrl+alt+enter"]
split_vertical = ["prefix+v", "ctrl+alt+v"]
split_horizontal = ["prefix+minus", "ctrl+alt+minus"]
zoom = ["prefix+z", "ctrl+alt+f"]
detach = ["prefix+q", "ctrl+alt+q"]
'';
home.file.".codex/AGENTS.md".text = '' home.file.".codex/AGENTS.md".text = ''
# Environment # Environment