dsh-desktop-shell:为 DSH Web 增加 Electron 桌面窗口

前言

DSH 的理念是“一切皆插件”。在实际使用 DSH Web GUI 时,常见做法是通过 dsh web 启动本地 HTTP 服务,再手动打开浏览器访问。对长期在本地使用 DSH 的人来说,这个流程会多一步:每次都要记住端口、打开浏览器、管理标签页。

dsh-desktop-shell 解决的是这个入口问题:dsh web 启动后自动弹出 Electron 窗口,关闭窗口时不退出 dsh 进程,而是隐藏到系统托盘;需要从托盘退出时,再结束整个 dsh web 进程。

这是什么

dsh-desktop-shell 是一个 MIT 许可的 DSH 桌面外壳插件。它安装到 web profile 后,让 dsh web 具备 Electron 桌面窗口入口,同时保持 DSH 现有 HTTP 服务不变。

已核实事实列出:dsh 引擎零改动

仓库地址为:

https://github.com/Funnyvalentine00/dsh-desktop-shell

已核实资料未单列维护者字段,仅仓库地址指向 Funnyvalentine00

核心功能

下面介绍已核实的功能:

  • dsh web 启动后自动弹出 Electron 窗口,并加载 DSH 现有 HTTP 服务。
  • 关闭窗口时隐藏到系统托盘,dsh 进程继续运行。
  • 托盘菜单支持打开主窗口,以及退出 dsh 进程。
  • 重复运行 dsh web 时通过单实例锁聚焦已有窗口,不弹新窗。
  • 记忆窗口位置和大小,退出后重开保持。
  • Electron 缺失、spawn 失败或窗口加载失败时,自动降级为浏览器模式,不阻断 dsh web
  • 可选桌面快捷方式,双击启动 dsh web 并唤起已有窗口。

安装与启用

已核实资料没有给出类似 dsh plugin add ... 的单一官方安装命令,只给出 profile 接入方式。下面按照已核实步骤说明。

1、接入 web profile

在 profile 的 package.json 中加入 dsh-desktop-shell 依赖,并把 dsh-desktop-shell 写入 dsh.profile.bundles

dependencies
  dsh-desktop-shell

dsh.profile.bundles
  dsh-desktop-shell

2、在 profile 目录安装链接

在 profile 目录执行:

npm install

3、启动验证

执行:

dsh web

如果插件生效,dsh web 会启动 DSH 现有 HTTP 服务,并自动弹出 Electron 窗口。

典型用法

启动桌面窗口

dsh web

临时关闭桌面窗口

如果只想使用浏览器模式,可以执行:

dsh web --no-desktop

或在 PowerShell 中设置环境变量:

$env:DSH_DESKTOP="0"; dsh web

也可以在 profile 配置中关闭桌面窗口:

enabled: false

使用托盘

启动后,关闭窗口只会隐藏到系统托盘,dsh 进程继续运行。托盘菜单支持:

  • 打开主窗口
  • 退出 dsh 进程

已核实事实指出,托盘「退出」依赖 launcher 提供的接口结束 dsh 进程:

ctx.appExit(0)

使用桌面快捷方式

如果不习惯在终端输入命令,可以使用插件提供的启动脚本:

scripts/launch-dsh-web.cmd
scripts/launch-dsh-web.ps1

双击对应脚本会启动 dsh web;如果已有实例在运行,则唤起已有窗口,不重复启动。

降级与退出行为

dsh-desktop-shell 的关键降级策略如下:

  • Electron 缺失、spawn 失败或窗口加载失败时,自动回到浏览器模式。
  • 窗口加载失败时,Electron 会退出,DSH 保持浏览器模式。
  • 托盘「退出」会结束整个 dsh web 进程。

已核实资料强调:任何 Electron 缺失、spawn 失败或加载失败都会自动回到浏览器模式,不阻断 dsh web

卸载

要恢复纯浏览器模式,先做配置移除,再重新安装 profile 依赖:

1、从 profile package.jsondependenciesdsh.profile.bundles 移除:

dsh-desktop-shell

2、在 profile 目录执行:

npm install

3、重启:

dsh web

适用场景与注意

适合本地长期使用 DSH Web GUI,并希望 dsh web 自动弹出桌面窗口的人。它不会改变 DSH 的 Web 服务主体,只是增加一个 Electron 窗口入口和托盘管理。

需要注意:插件会随当前 dsh web 进程一起运行,并以当前 DSH 进程权限执行本地行为。安装前应检查源码、依赖和许可证。

另外,如果维护桌面快捷方式脚本,launch-dsh-web.cmd 必须保持纯 ASCII 内容。内嵌中文路径会在 GBK 系统上出现乱码。

如果 Electron 二进制下载较慢,已核实资料提到可以设置:

ELECTRON_MIRROR

结尾

dsh-desktop-shell 提供的是桌面入口、托盘管理和降级能力,不改变 DSH 的 Web 服务与进程主体。如果只需要本地 HTTP 访问,可以继续使用浏览器模式;如果希望 dsh web 自动弹出可管理窗口,它可以作为一个 profile 插件接入。

已核实资料未提供社区目录页 URL,不能给出可确认链接。GitHub 仓库见:

https://github.com/Funnyvalentine00/dsh-desktop-shell
羽毛球分组比赛记分
小程序二维码

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

Xiaoye