y2zyyr/dsh-restart-control:DSH 桌面与 Web 模式的官方优雅重启

在使用 DSH Desktop 或 dsh --profile web 时,应用卡死或需要重置服务状态是常见场景。在桌面端,通常需要关闭窗口或使用终端命令;在 Web 模式下,重启进程往往涉及手动操作。这个插件通过 DSH 的官方接口,在设置页面提供了一键重启能力,无需 Shell 权限。

这是一个 DSH 插件,由用户 y2zyyr 维护。它的核心作用是在 DSH Desktop 的「通用设置」中插入一个「Restart DSH」按钮,利用 DSH 官方的优雅重启机制,支持桌面和纯 Web 模式下的进程重启。

核心功能

  • 通用设置集成:在 Settings → General 中注册官方 slot settings.general.item,提供原生确认对话框和单次飞行保护(按钮禁用)。
  • 桌面模式重启:调用 ctx.desktopRuntime.requestRestart(),执行优雅的 Cordis teardown,随后 app.relaunch() + app.exit(0)。
  • Web 模式重启:生成分离的启动器,自身发送 SIGTERM 信号,触发 CLI 内置处理器的优雅销毁逻辑,等待旧进程结束后重新执行 argv 和 cwd。
  • 安全与隐私:不执行 shell 命令(如 kill/pkill),仅通过回环 HTTP 路由通信,不读取凭证或进行遥测。

安装与启用

  1. 编辑 ~/.dsh/profiles/web/package.json,在 dependencies 中添加:
   "@y2zyyr/dsh-restart-control": "link:/path/to/dsh-restart-control"
  1. 将 @y2zyyr/dsh-restart-control 加入 dsh.profile.bundles。
  2. 在配置文件目录运行 pnpm install。
  3. 重启 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。

该插件以 MIT 协议开源,专注于提供无侵入、安全的重启体验。更多细节可参考 目录页 或 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜