nanshang328/dsh-desk-card ↗★ 0
dsh-desk-card
Bottom-right native desktop cards for DSH approvals, questions, turn completion and errors: a self-drawn WPF card that can be approved in place, and is skipped while a fullscreen app or Do-Not-Disturb is active. 适合在 Windows 上需要就地审批、回答问题或接收运行结束通知的用户。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:nanshang328/dsh-desk-cardドキュメント
README 全文を読む ↗Configuration
Everything has a built-in default, so this section is optional. To change something, add a row
with the same id from your profile's own cordis.patch.yml (~/.dsh/profiles/desktop/cordis.patch.yml):
- insert:
- id: dsh-desk-card
name: dsh-desk-card
config:
doneTimeoutSeconds: 10
scale: 1.0
language: en
Only the keys you list are changed — a config object replaces the whole object, and every key
you leave out falls back to the defaults below.
| key | default | meaning |
|---|---|---|
timeoutSeconds | 0 | auto-close seconds for cards that wait for you (approval / question). 0 = stay until answered |
doneTimeoutSeconds | 5 | auto-close seconds for the completion card. 0 = keep it until clicked |
scale | 1.2 | card scale factor |
skipWhenFullscreen | true | skip cards while a fullscreen app is in the foreground, or while Windows says Do-Not-Disturb |
notifyQuestions | true | show the question card |
notifyErrors | true | show the error card |
notifyDone | true | show the completion card |
language | auto | auto (follow the DSH locale), zh or en |
hostProcess | DeepSeek Harness | the process whose window is brought to front when you click a card |
The three notify* switches only control the cards — approvals and questions always keep
working, the card just does not appear.
The fullscreen gate
A card is not drawn when either of these is true:
SHQueryUserNotificationStatereports a fullscreen app, presentation mode or Do-Not-Disturb; or- the foreground window covers its whole monitor and is not the desktop (this keeps games that hide the real state from being interrupted).
When a card is skipped the approval is handed back to the normal DSH UI (with prepend: true
this plugin speaks first, and a skipped card always delegates to the next answerer), so nothing
gets stuck. Two test tools reproduce the condition without a game:
powershell.exe -File test/gate-probe.ps1 -MaxSeconds 20 # watch the gate flip blocked -> free
powershell.exe -File test/fake-fullscreen.ps1 -HoldSeconds 8 # paint a fullscreen window for 8s