At a glance
What it does
Windows notification sounds for dsh-tui replies and user-question prompts.
Dsh Tui Profile
dsh-tui 0.10.x; dsh 0.1.2-rc.1+; Node ^22.19 || >=24
Evidence-verified
Checked Sep 13, 2026, 2:12 PM UTC
Code-evidenced contributions
What it adds to DSH
Adds selectable sounds and volume controls for completed replies and user-question prompts in dsh-tui.
Mechanism evidence ↗Before you choose it
dsh-chime-sound adds a “Notice Sounds” settings section to dsh-tui. Choose one of nine sound groups—or turn each alert off—for reply completion and ask_user_question events, with separate focused and unfocused-terminal choices plus a 0–150% plugin volume control. It mounts as a DSH bundle plugin.
Best for
dsh-tui users on Windows who want audible prompts when an agent finishes a turn or needs an answer.
Common tasks
- Hear a distinct alert when a reply finishes while you are away from the terminal.
- Use a different alert when an agent calls ask_user_question.
- Adjust notification sounds and plugin-only volume from dsh-tui settings or the chime settings namespace.
Permissions and data
Uses local Windows APIs to play bundled sounds and determine whether the terminal is focused.
Permissions- Access to Win32 PlaySoundW through winmm.dll.
- Access to foreground and console-window information through user32.dll.
- The supplied evidence describes local event handling and focus detection; it does not document collection or transmission of user data.
Limitations
- Windows only. On Linux and macOS it is documented to become a no-op and log a warning.
- Sound choices apply to two documented events only: turn completion and ask_user_question.
- The package requires the declared DSH, dsh-tui, Node, and peer-dependency versions.
What DSHub checked
- The immutable source commit, package manifest, and bundle patch were captured and the bundle structure passed validation.
- The manifest declares package version 0.3.2, MIT licensing, Node ^22.19 || >=24, and required peer dependencies.
- The README documents nine sound groups, focused/unfocused variants, volume settings, and Windows-only behavior.
What DSHub did not check
- Installation and sound playback were not executed.
- Runtime compatibility with a specific local dsh-tui or DSH installation was not tested.
- The npm package version was not found in the supplied distribution evidence.
Pinned install
Install dsh-chime-sound
This plugin bundle does not have a DSH Plugin install action. Use its source documentation for the delivery method.
Maintainer source
Project README
dsh-chime-sound
English · 中文
Notification sounds for dsh-tui (originally named dsh-notice-sound, renamed on 2026-09-07).
- Triggers: the agent calling
ask_user_question(session/eventtool/call— a nudge to come back and answer) and a reply finishing (session/eventturn/end; agent-loop emits this once per turn, whileassistant/messagefires on every tool step and is deliberately not used). Both distinguish a focused from an unfocused terminal. - 9 sound groups × 4 situations, selectable (or off) in the settings page's “Notice Sounds” section: g1 Crisp / g2 Wood / g3 Chiptune / g4 Warm (synthesised in code), g5 Bell / g6 Bubble / g7 Arcade / g8 Marimba / g9 Soft Synth (CC0 samples).
- New in 0.2.0 — master volume (the “Volume” field): 0–150% in 5% steps (31 steps), default 100% = the original level.
←/→steps 5%; holding the key repeats, because dsh-tui's input layer expands the auto-repeat into per-step events. The new level is auditioned immediately. Above 100% the samples are 16-bit saturated (peak ≈ 105%, clipping only for very short stretches). The gain is applied to the WAV samples inside the plugin and never touches system volume. - g1–g4 are synthesised by this repository's
scripts/gen-sounds.mjs(WAV, 16-bit / 48 kHz); g5–g9 are Freesound CC0 1.0 material, decoded and then trimmed, faded and loudness-normalised to the same format. Sources and conversion parameters are recorded inassets/sounds/CREDITS.md(CC0 needs no attribution and may be redistributed with this plugin). - Settings and copy are bilingual (Chinese/English); the settings card is localised by the host according to the language dsh-tui's
/langselected.
⚠️ Platform support (Windows only)
Sound is played through Win32 APIs (koffi → winmm.dll PlaySoundW, with focus detection via user32.dll), so this plugin is Windows-only (Windows Terminal and classic conhost). On Linux and macOS it degrades silently to a no-op — no sound, no boot failure — and logs a Win32-only warning. Do not expect notification sounds elsewhere.
Install
Option 1 — dsh CLI (recommended):
dsh plugin --profile <profile> add dsh-chime-sound
(Or from the dsh plugin market / GitHub: dsh plugin add github:VviLliAm-qwq/dsh-chime.)
Option 2 — manual:
- Copy the package to
~/.dsh/profiles/dsh-tui/node_modules/dsh-chime-sound/ - Append
"dsh-chime-sound"todsh.profile.bundlesin~/.dsh/profiles/dsh-tui/package.json(the package declaresdsh.bundle.patch, so it mounts itself at boot) - Restart dsh-tui (
/restart)
Compatibility: dsh-tui 0.10.x (the ctx.tuiSettingsSections and session/event seams, both soft-probed); dsh 0.1.2-rc.1+; Node ^22.19 || >=24; pure ESM. Every configuration key has a default, and a missing configuration degrades to “nothing happens”.
Configuration
The settings live in dsh-tui's “Notice Sounds” section (or the chime: namespace of ~/.dsh/settings.yaml):
chime:
doneFocus: g2 # reply finished, terminal focused: g1-g9 / off
doneBlur: g2 # reply finished, terminal unfocused
askFocus: g2 # question asked, terminal focused
askBlur: g2 # question asked, terminal unfocused
volume: "50" # 0-150, 5% steps, default "100"
Why session/event and not the message observer
dsh-tui's mediated tuiMessageObserver.subscribe() is unusable here: the API requires the activation to hold a verified Component identity through host admission, and a plugin mounted by a bundle patch never goes through admission — its subscriptions are refused (COMPONENT_NOT_ADMITTED) and no sound ever plays.
This plugin therefore listens on the session/event cordis bus published by @deepseek-ai/dsh-session (the same channel the official dsh-working-activity extension uses), which needs no Component identity:
tool/callwithname === 'ask_user_question'→ the question sound (askFocus / askBlur)turn/end→ the completion sound (doneFocus / doneBlur); subagent sessions are ignored- Focus detection: the
GetForegroundWindowhandle equalsGetConsoleWindow, or the window class matches (CASCADIA_HOSTING_WINDOW_CLASS= Windows Terminal,ConsoleWindowClass= classic conhost). Under ConPTYGetConsoleWindowreturns a hiddenPseudoConsoleWindowthat is never foreground, so the earlier handle-only and class-only readings were both flawed; the check is now a pair of criteria with a corrected class read. dsh-plugin.jsonno longer declares the unusedmessages.observecapability.
Restart dsh-tui after installing.
Publishing
- Repository: https://github.com/VviLliAm-qwq/dsh-chime (public)
- Release:
v*tags drive.github/workflows/release.yml, which publishes to npm through trusted publishing (OIDC) — no token is stored in the repository.
License
MIT — see LICENSE. Sound assets are licensed and attributed in assets/sounds/CREDITS.md.
Operate deliberately
Install and manage
Prerequisites and target Profile
Target: Dsh Tui Profile
Delivery: Dsh Bundle Git — VviLliAm-qwq/dsh-chime#1fce85caecf8d45ac36034f6dc543a3eed1c3de2。
Verify, update, and remove
Show lifecycle commands
dsh plugin --profile dsh-tui listCompatibility and access
Declared for dsh Tui 0.10.x and dsh 0.1.2 Rc.1+: dsh-tui 0.10.x; dsh 0.1.2-rc.1+; Node ^22.19 || >=24。
Review compatibility evidence ↗
Risk facts
Windows-only audio
Evidence ↗Uses Win32 sound and foreground-window APIs through koffi
Evidence ↗Evidence and editorial reviewManifest, Bundle patch, distribution and freshness
Immutable evidence
Review status and source activity
Use the pinned Git bundle route rather than assuming npm availability.
AI reviewed Sep 13, 2026, 2:13 PM UTC。GitHub facts last checked Sep 13, 2026, 2:13 PM UTC。
No material source change has been recorded since this evidence baseline.