You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[idea] Per-agent sound files (done_path / request_path for each agent)
#5871
I run Claude Code, Codex and Gemini in panes next to each other. When a sound plays, I cannot tell which agent finished or which agent needs me without looking at the screen.
Herdr already knows which agent is in each pane, and [ui.sound.agents] already lets me set each agent to on, off or default. But the sound files are global: one done_path and one request_path for all agents.
Proposal
Let an agent entry be a table as well as the current enum, with its own sound paths:
[ui.sound]
enabled = truedone_path = "sounds/done.mp3"request_path = "sounds/request.mp3"
[ui.sound.agents]
gemini = "off"# the current enum form still works
[ui.sound.agents.claude]
done_path = "sounds/claude-done.mp3"request_path = "sounds/claude-request.mp3"
[ui.sound.agents.codex]
done_path = "sounds/codex-done.mp3"# request_path not set: use the global one
Rules:
An agent path that is not set falls back to the global done_path / request_path, then to the built-in sound.
Relative paths resolve from the config file's directory, as the global paths do now.
The string forms "on", "off" and "default" keep working, so current configs do not change.
An optional enabled = false in the table can replace "off", if you prefer one form.
Why in Herdr, not in a plugin
I can do this now with a plugin hook on pane.agent_status_changed, but then each user must:
find a player that works on macOS, Linux and Windows (Herdr already solved this),
set the agents to off in [ui.sound.agents] so two sounds do not play,
repeat the focus rules that Herdr uses to decide when to play a sound.
Herdr already has the agent name, the player and the focus rules at the point where it plays the sound, so this looks like a small change there.
Related: #4995 (sound packs plugin), #1719 (sound volume), #4662 (sounds in the focused workspace).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
I run Claude Code, Codex and Gemini in panes next to each other. When a sound plays, I cannot tell which agent finished or which agent needs me without looking at the screen.
Herdr already knows which agent is in each pane, and
[ui.sound.agents]already lets me set each agent toon,offordefault. But the sound files are global: onedone_pathand onerequest_pathfor all agents.Proposal
Let an agent entry be a table as well as the current enum, with its own sound paths:
Rules:
done_path/request_path, then to the built-in sound."on","off"and"default"keep working, so current configs do not change.enabled = falsein the table can replace"off", if you prefer one form.Why in Herdr, not in a plugin
I can do this now with a plugin hook on
pane.agent_status_changed, but then each user must:offin[ui.sound.agents]so two sounds do not play,Herdr already has the agent name, the player and the focus rules at the point where it plays the sound, so this looks like a small change there.
Related: #4995 (sound packs plugin), #1719 (sound volume), #4662 (sounds in the focused workspace).
All reactions