Documentation menu
Troubleshooting & FAQ
Concrete fixes for the common herdr-plus issues: dead keybindings, command not found, key conflicts, config not loading, and template errors.
Concrete answers to the things that go wrong. Each item lists what to check, in order.
Nothing happens when I press the key
Work through these:
- Did you run
herdr-plus install? The key only does something after you bind it. Runherdr-plus install(control) and/orherdr-plus install --mode=quick-actions. - Are you inside herdr? herdr-plus talks to a running herdr server over a local socket. If you’re not in a herdr session, there’s no pane to act on.
- Did the binding reload?
installrunsherdr server reload-configfor you, but if that step failed it told you so. Runherdr server reload-configyourself, or restart herdr. - Are you pressing the prefix correctly? herdr keybindings are prefixed:
press your prefix (default
ctrl+b), release, then press the bound key (e.g.up). See Keybindings.
“command not found: herdr-plus”
The binary isn’t on your $PATH.
- The install script installs to
~/.local/bin(preferred) or/usr/local/bin. If that directory isn’t on your$PATH, the script printed the exactexport PATH=...line to add to your shell rc — add it and restart your shell. - You can also pass
INSTALL_DIR=...to the script to install somewhere already on your PATH. See Installation.
Note: The keybinding itself uses the binary’s absolute path, so a bound key works even when
herdr-plusisn’t on your PATH. The “command not found” error only bites when you typeherdr-plusat a prompt.
“key is already bound to: …”
install refuses to overwrite a key that’s bound to something else — it never
clobbers a binding it didn’t create. Pick a different key:
herdr-plus install --key=prefix+a
If you really want that key, remove the conflicting [[keys.command]] entry from
herdr’s config.toml first, then re-run install.
Tip: Re-running
installfor a mode that’s already bound is safe — it won’t duplicate the binding, it just reports where the existing one lives.
My config / action / project isn’t picked up
- Right directory? Quick actions go in
~/.config/herdr-plus/quick-actions/; projects go in~/.config/herdr-plus/projects/. Per-project quick actions go in a repo’s.herdr-plus/quick-actions/. XDG_CONFIG_HOMEset? If it is, config lives under$XDG_CONFIG_HOME/herdr-plus/, not~/.config/herdr-plus/. See Configuration.- Is the file
*.toml? Only files ending in.tomlare loaded. - Is the TOML valid? A malformed or invalid file fails the whole load for that directory, with an error naming the offending file. herdr-plus leaves the pane open so you can read the error. Fix the named file.
- Required fields present? Actions need a
nameand a non-emptycommand;selectactions need at least one option with a label. Projects need anameand at least one[[tabs]]entry, and each tab needs aname.
My per-project actions don’t show up
.herdr-plus/quick-actions/at the repo root? The directory must mirror the global layout and sit at the root of the repo.- Launched from inside the repo? Project actions appear only when the pane’s working directory is inside that repo — that’s the launch directory herdr-plus uses.
- The directory is never auto-created. herdr-plus won’t make it for you; the repo has to provide it.
See Quick Actions for the full behavior.
A project’s working directory error
Opening a project fails with “working directory does not exist” when its
working_dir doesn’t resolve to a real directory on this machine. The path is
checked at open time, not load time, so the same file can be valid elsewhere.
Fix the working_dir (remember ~ and $VARS expand). See
Control Mode & Projects.
Template errors in a command
The command is a Go text/template. A bad field name or malformed {{...}}
produces a parse or render error when the action runs (printed to stderr).
- Check your field names against Template Variables — they’re
case-sensitive (
{{.WorkDir}}, not{{.workdir}}). - Make sure braces are balanced:
{{.Value}}, not{{.Value}or{.Value}}.
My action’s output flashed by before I could read it
The quick-actions pane closes itself once the command finishes. To hold it open,
end the command with a wait that reads the terminal directly (its stdin is
/dev/null):
read _ </dev/tty # wait for Enter, then close
read -t 30 _ </dev/tty # ...but auto-close after 30s
sleep 5 # just linger N seconds
See the Examples & Cookbook for full action snippets.
How do I check the version?
herdr-plus version
(--version, -v, and -V work too.) To upgrade, see
Installation.
Still stuck?
herdr-plus is open source. File an issue or read the source on GitHub.
Spot something off? Edit this page on GitHub ↗