Wlaeg/dsh-notify-linux ↗★ 1

dsh-notify-linux

DSH 完成任务、需要你选择或需要批准时,发送桌面通知并播放提示音。 适合Linux系统用户,用于在后台运行任务时接收即时状态提醒。

Package
dsh-notify-linux
Compatibility
Unverified
Version
1.0.0
License
MIT
Last updated
Oct 13, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Wlaeg/dsh-notify-linux

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

KeyTypeDefaultMeaning
enabledbooleantrueMaster switch. Off disables every notification.
systemNotifybooleantrueSend a desktop notification via notify-send.
systemSoundbooleantruePlay a sound from the system sound theme.
browserToastbooleantrueShow the in-page toast overlay.
browserNotifybooleantrueUse Web Notification as a fallback. Requires browser permission.
browserSoundbooleanfalseUse the synthesized Web Audio chime as a fallback.
soundThemestring'complete'Sound used for turnEnd. One of complete, message, bell, none.
events.turnEndbooleantrueNotify when a turn finishes.
events.questionbooleantrueNotify when the model needs you to choose.
events.approvalbooleantrueNotify when a tool call needs approval.
events.errorbooleantrueNotify when a step or turn fails.
includeSubagentsbooleanfalseAlso notify for subagent sessions (off by default to avoid parallel-task spam).
onlyWhenUnfocusedbooleanfalseSuppress system notification and sound while the DSH window is focused.
cooldownSecondsnumber3Per-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.

ThemeFile under /usr/share/sounds/freedesktop/stereoLabel in the UI
completecomplete.oga轻快完成音
messagemessage.oga消息提示音
bellbell.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 .