在使用 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。