dsh-notify-linux
DSH 完成任务、需要你选择或需要批准时,发送桌面通知并播放提示音。 适合Linux系统用户,用于在后台运行任务时接收即时状态提醒。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Wlaeg/dsh-notify-linuxREADME
Read the full README ↗Configuration
All options live in one file:
/dsh-notify-linux.json
The profile directory is resolved as $DSH_PROFILE_DIR, or otherwise
$DSH_HOME/profiles/$DSH_PROFILE (defaults: ~/.dsh/profiles/web). On this machine that
is ~/.dsh/profiles/web/dsh-notify-linux.json.
The file is written atomically (temp file + rename) with mode 0600, so a reader
never sees half-written JSON. You can edit it directly — it is re-read on every
notification — or use the Settings page, which writes through the same code path.
Defaults
| Key | Type | Default | Meaning |
|---|---|---|---|
enabled | boolean | true | Master switch. Off disables every notification. |
systemNotify | boolean | true | Send a desktop notification via notify-send. |
systemSound | boolean | true | Play a sound from the system sound theme. |
browserToast | boolean | true | Show the in-page toast overlay. |
browserNotify | boolean | true | Use Web Notification as a fallback. Requires browser permission. |
browserSound | boolean | false | Use the synthesized Web Audio chime as a fallback. |
soundTheme | string | 'complete' | Sound used for turnEnd. One of complete, message, bell, none. |
events.turnEnd | boolean | true | Notify when a turn finishes. |
events.question | boolean | true | Notify when the model needs you to choose. |
events.approval | boolean | true | Notify when a tool call needs approval. |
events.error | boolean | true | Notify when a step or turn fails. |
includeSubagents | boolean | false | Also notify for subagent sessions (off by default to avoid parallel-task spam). |
onlyWhenUnfocused | boolean | false | Suppress system notification and sound while the DSH window is focused. |
cooldownSeconds | number | 3 | Per-kind minimum interval, clamped to 0–120. 0 disables the cooldown. |
Unknown keys are dropped, wrong types fall back to the default, and a missing or corrupt file silently reverts to defaults — notification configuration can never break the plugin.
Example:
{
"enabled": true,
"systemNotify": true,
"systemSound": true,
"browserToast": true,
"browserNotify": true,
"browserSound": false,
"soundTheme": "message",
"events": { "turnEnd": true, "question": true, "approval": true, "error": true },
"includeSubagents": false,
"onlyWhenUnfocused": true,
"cooldownSeconds": 5
}
Sound themes
turnEnd uses the theme you pick; the other three kinds are fixed.
| Theme | File under /usr/share/sounds/freedesktop/stereo | Label in the UI |
|---|---|---|
complete | complete.oga | 轻快完成音 |
message | message.oga | 消息提示音 |
bell | bell.oga | 铃声 |
none | — | 静音 (silent) |
The Settings page only offers themes whose .oga file actually exists on this machine.
If a file is missing at play time, paplay is skipped and the plugin falls back to
canberra-gtk-play -i .