在使用 DSH Desktop 或 dsh --profile web 時,應用卡死或需要重置服務狀態是常見場景。在桌面端,通常需要關閉窗口或使用終端命令;在 Web 模式下,重啓進程往往涉及手動操作。這個插件通過 DSH 的官方接口,在設置頁面提供了一鍵重啓能力,無需 Shell 權限。
這是一個 DSH 插件,由用戶 y2zyyr 維護。它的核心作用是在 DSH Desktop 的「通用設置」中插入一個「Restart DSH」按鈕,利用 DSH 官方的優雅重啓機制,支持桌面和純 Web 模式下的進程重啓。
核心功能¶
- 通用設置集成:在
Settings → General中註冊官方 slotsettings.general.item,提供原生確認對話框和單次飛行保護(按鈕禁用)。 - 桌面模式重啓:調用
ctx.desktopRuntime.requestRestart(),執行優雅的 Cordis teardown,隨後app.relaunch()+app.exit(0)。 - Web 模式重啓:生成分離的啓動器,自身發送 SIGTERM 信號,觸發 CLI 內置處理器的優雅銷燬邏輯,等待舊進程結束後重新執行 argv 和 cwd。
- 安全與隱私:不執行 shell 命令(如 kill/pkill),僅通過迴環 HTTP 路由通信,不讀取憑證或進行遙測。
安裝與啓用¶
- 編輯
~/.dsh/profiles/web/package.json,在dependencies中添加:
"@y2zyyr/dsh-restart-control": "link:/path/to/dsh-restart-control"
- 將
@y2zyyr/dsh-restart-control加入dsh.profile.bundles。 - 在配置文件目錄運行
pnpm install。 - 重啓 DSH Desktop 以激活新插件。
注意:DSH Desktop ≥ 2.0.2 要求依賴鍵名必須精確匹配包名 @y2zyyr/dsh-restart-control。
典型用法¶
打開設置頁,點擊按鈕確認即可;可通過 GET /dsh-restart-control/status 查看狀態 { ok, restartable, mode }。
適用場景與注意¶
- 桌面模式:需在
compatibility或advanced模式下運行,提供desktopRuntime服務。 - Web 模式:重啓服務器進程本身,依賴真實 Node 主機進程;若啓動器失敗,路由返回 500。
- 依賴版本:DSH 核心包需爲
^0.1.0-rc.6。