247 lines
5.7 KiB
Markdown
247 lines
5.7 KiB
Markdown
# configuration
|
|
|
|
herdr reads config from:
|
|
|
|
```text
|
|
~/.config/herdr/config.toml
|
|
```
|
|
|
|
print the full default config with:
|
|
|
|
```bash
|
|
herdr --default-config
|
|
```
|
|
|
|
if a config value is invalid, or two navigate actions use the same keybinding, herdr falls back to a safe default and shows a startup warning in the UI.
|
|
|
|
## onboarding
|
|
|
|
```toml
|
|
onboarding = true
|
|
```
|
|
|
|
| option | default | description |
|
|
|--------|---------|-------------|
|
|
| `onboarding` | unset | show first-run notification setup; set `false` after choosing |
|
|
|
|
notes:
|
|
- missing `onboarding` currently behaves like `true`
|
|
- set `onboarding = true` to force the setup screen again for testing
|
|
- after onboarding, herdr writes `onboarding = false` plus the chosen sound/toast settings
|
|
|
|
## keybindings
|
|
|
|
keybindings live under `[keys]`.
|
|
|
|
supported syntax:
|
|
- plain keys: `n`, `x`, `-`, `` ` ``
|
|
- modifiers: `ctrl+b`, `shift+n`, `alt+x`
|
|
- special keys: `enter`, `esc`, `tab`, `backspace`
|
|
- function keys: `f1`, `f12`
|
|
- uppercase letters also imply shift: `D` works like `shift+d`
|
|
|
|
notes:
|
|
- most reliable bindings are plain keys, `ctrl+letter`, `esc`/`tab`/`enter`, and function keys
|
|
- `alt+...` and punctuation-with-modifiers may vary depending on terminal/tmux setup
|
|
- for navigate-mode actions, duplicate keybindings are treated as config errors; later conflicting bindings fall back to defaults
|
|
|
|
example:
|
|
|
|
```toml
|
|
[keys]
|
|
prefix = "ctrl+b"
|
|
new_workspace = "n"
|
|
rename_workspace = "shift+n"
|
|
close_workspace = "d"
|
|
split_vertical = "v"
|
|
split_horizontal = "-"
|
|
close_pane = "x"
|
|
fullscreen = "f"
|
|
resize_mode = "r"
|
|
toggle_sidebar = "b"
|
|
```
|
|
|
|
### key reference
|
|
|
|
| key | default | action |
|
|
|-----|---------|--------|
|
|
| `prefix` | `ctrl+b` | enter or leave navigate mode |
|
|
| `new_workspace` | `n` | create a new workspace |
|
|
| `rename_workspace` | `shift+n` | rename selected workspace |
|
|
| `close_workspace` | `d` | close selected workspace |
|
|
| `split_vertical` | `v` | split pane vertically (side by side) |
|
|
| `split_horizontal` | `-` | split pane horizontally (stacked) |
|
|
| `close_pane` | `x` | close focused pane |
|
|
| `fullscreen` | `f` | toggle focused pane fullscreen |
|
|
| `resize_mode` | `r` | enter or leave resize mode |
|
|
| `toggle_sidebar` | `b` | collapse or expand the sidebar |
|
|
|
|
## theme
|
|
|
|
herdr ships with 9 built-in color themes. set one in config:
|
|
|
|
```toml
|
|
[theme]
|
|
name = "tokyo-night"
|
|
```
|
|
|
|
### built-in themes
|
|
|
|
| name | description |
|
|
|------|-------------|
|
|
| `catppuccin` | soft pastel mocha palette (default) |
|
|
| `tokyo-night` | blue-purple aesthetic |
|
|
| `dracula` | purple/pink/green classic |
|
|
| `nord` | frosty scandinavian blues |
|
|
| `gruvbox` | warm retro browns/oranges |
|
|
| `one-dark` | atom's beloved palette |
|
|
| `solarized` | ethan schoonover's classic |
|
|
| `kanagawa` | hokusai-inspired |
|
|
| `rose-pine` | muted, elegant |
|
|
|
|
theme names are flexible: `tokyo-night`, `tokyonight`, and `tokyo_night` all work.
|
|
|
|
### custom overrides
|
|
|
|
override individual color tokens on top of any base theme:
|
|
|
|
```toml
|
|
[theme]
|
|
name = "dracula"
|
|
|
|
[theme.custom]
|
|
accent = "#f5c2e7"
|
|
red = "rgb(255, 85, 85)"
|
|
green = "#a6e3a1"
|
|
```
|
|
|
|
all tokens are optional — only set what you want to change.
|
|
|
|
### available tokens
|
|
|
|
| token | used for |
|
|
|-------|----------|
|
|
| `accent` | highlights, active borders, navigation UI |
|
|
| `surface0` | selected item background |
|
|
| `surface1` | hover/active backgrounds |
|
|
| `surface_dim` | active workspace background, separators |
|
|
| `overlay0` | muted text, secondary info |
|
|
| `overlay1` | slightly brighter secondary text |
|
|
| `text` | primary text |
|
|
| `subtext0` | workspace names, dimmed labels |
|
|
| `mauve` | git branch names, special labels |
|
|
| `green` | idle/done states |
|
|
| `yellow` | busy/running states |
|
|
| `red` | waiting/needs attention states |
|
|
| `blue` | unseen notifications |
|
|
| `teal` | done notification accents |
|
|
| `peach` | interrupted/warning states |
|
|
|
|
tokens accept the same color formats as `accent`: hex (`#rrggbb`), named colors, or `rgb(r,g,b)`.
|
|
|
|
## ui
|
|
|
|
```toml
|
|
[ui]
|
|
sidebar_width = 26
|
|
confirm_close = true
|
|
accent = "cyan"
|
|
```
|
|
|
|
### options
|
|
|
|
| option | default | description |
|
|
|--------|---------|-------------|
|
|
| `sidebar_width` | `26` | base sidebar width before auto-scaling |
|
|
| `confirm_close` | `true` | ask before closing a workspace |
|
|
| `accent` | `cyan` | highlight and border color |
|
|
|
|
`accent` accepts:
|
|
- named colors like `cyan`, `blue`, `magenta`
|
|
- hex like `#89b4fa`
|
|
- rgb like `rgb(137,180,250)`
|
|
|
|
## toast notifications
|
|
|
|
```toml
|
|
[ui.toast]
|
|
enabled = false
|
|
```
|
|
|
|
### options
|
|
|
|
| option | default | description |
|
|
|--------|---------|-------------|
|
|
| `ui.toast.enabled` | `false` | show top-right visual toasts for background agent events |
|
|
|
|
current v1 behavior:
|
|
- informational only
|
|
- one toast at a time
|
|
- top-right placement
|
|
- shown for background agent events like `needs attention` and `finished`
|
|
- no keyboard action or temporary key semantics
|
|
|
|
## sound
|
|
|
|
```toml
|
|
[ui.sound]
|
|
enabled = true
|
|
|
|
[ui.sound.agents]
|
|
claude = "default"
|
|
droid = "off"
|
|
```
|
|
|
|
### options
|
|
|
|
| option | default | description |
|
|
|--------|---------|-------------|
|
|
| `ui.sound.enabled` | `true` | enable background agent sounds |
|
|
|
|
per-agent values:
|
|
- `default`
|
|
- `on`
|
|
- `off`
|
|
|
|
available agent keys:
|
|
- `pi`
|
|
- `claude`
|
|
- `codex`
|
|
- `gemini`
|
|
- `cursor`
|
|
- `cline`
|
|
- `open_code`
|
|
- `github_copilot`
|
|
- `kimi`
|
|
- `droid`
|
|
- `amp`
|
|
|
|
## advanced
|
|
|
|
```toml
|
|
[advanced]
|
|
allow_nested = false
|
|
```
|
|
|
|
### options
|
|
|
|
| option | default | description |
|
|
|--------|---------|-------------|
|
|
| `advanced.allow_nested` | `false` | allow launching herdr from inside a herdr-managed pane |
|
|
|
|
notes:
|
|
- by default, herdr blocks nested launches when `HERDR_ENV=1` is already present
|
|
- this is mainly an escape hatch for debugging or intentionally weird setups
|
|
|
|
## environment variables
|
|
|
|
| variable | description |
|
|
|----------|-------------|
|
|
| `HERDR_LOG` | log level filter (default: `herdr=info`) |
|
|
|
|
logs are written to:
|
|
|
|
```text
|
|
~/.config/herdr/herdr.log
|
|
```
|