前言¶
在 DSH 桌面端开发时,刷新页面或重启应用与 Host 是常见操作。桌面端左上角的「应用」下拉菜单里其实已经存在这两项,只是被开发构建开关挡住。如果不改代码,每次都要手动打开终端、敲命令或重启进程,效率不高。
dsh-desktop-menu 是一个补丁插件,把这两项从被挡住的开关改为恒真,直接在原生菜单中暴露出来。它不做 UI 注入,只改 app.asar 中的 11 字节等长替换,并附带完整的实现思路和脚本。
它是什么¶
dsh-desktop-menu 是 yogemow/dsh-desktop-menu 插件,分类为客户端。它的核心是修改 DSH 桌面端安装目录下的 app.asar 文件,把开发构建开关替换为恒真表达式,从而在「应用」原生菜单中显示「刷新页面」和「重启应用与 Host」两项。
插件不提供界面,也不往页面注入任何内容。它包含补丁本身、完整设计文档(DESIGN.md)和照抄步骤(RECIPE.md),换台电脑也能照着做。
核心功能¶
- 原生菜单补丁:把
app.asar中被开发开关挡住的reload与app.relaunch()菜单项改为可见。 - 等长替换:使用 11 字节的等长替换,不改变文件偏移,只改内容,并同步 SHA256 完整性校验。
- 幂等工具:提供
status、apply、revert三个工具命令,支持检查、写入补丁和还原。 - 自动路径探测:通过工具参数
asar、环境变量DSH_DESKTOP_ASAR和可执行文件向上查找,自动定位app.asar。 - 独立验证脚本:提供 Python 脚本(
docs/standalone/verify_patch.py)和 Node.js 测试脚本,可直接复核补丁状态。
安装与启用¶
从 GitHub 安装:
dsh plugin --profile desktop add github:YOGEMOW/dsh-desktop-menu
也可以用插件管理器安装本地目录:
plugin_manager(install_bundle, target="<这个包的绝对路径>")
安装完成后,重启 DSH 桌面端(托盘 → 退出 → 重新打开),「应用」下拉菜单中就会出现「刷新页面」和「重启应用与 Host」两项。
典型用法¶
插件注册了 dsh_desktop_menu 工具,支持三个操作:
- 只读检查状态:
dsh_desktop_menu({ action: "status" })
返回 app.asar 路径、补丁是否在位、哈希是否自洽。
- 写入补丁:
dsh_desktop_menu({ action: "apply" })
幂等操作,如果补丁已存在则返回 already。
- 还原补丁:
dsh_desktop_menu({ action: "revert" })
将 app.asar 恢复到原始状态。
补丁自动探测路径的优先级是:工具参数 asar → 环境变量 DSH_DESKTOP_ASAR → 从可执行文件逐级向上找 <dir>/resources/app.asar。如果是纯浏览器版,返回 not-desktop。
适用场景与注意¶
适合需要在桌面端快速刷新页面或重启应用与 Host 的开发者。
注意几点:
- 桌面端每次自动更新都会更换
app.asar,补丁随之消失,更新后重新apply一次即可。 - 补丁修改的是安装目录文件,需要写权限。安装在 Program Files 时可能需要管理员权限。
- 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证(MIT)。
- 插件不提供标题栏按钮方案,因为插件无法真正重启进程(外部进程方案被安全软件/进程树问题挡住),原生菜单的
app.relaunch()才是可靠路径。
小结¶
dsh-desktop-menu 通过 11 字节的等长替换,把「刷新页面」和「重启应用与 Host」两项写进 DSH 桌面端原生菜单,省去手动命令。它附带完整的设计文档和独立脚本,适合需要频繁操作桌面端环境的开发者。
- 目录页:https://www.skillhub.cn/plugins/YOGEMOW/dsh-desktop-menu
- GitHub:https://github.com/YOGEMOW/dsh-desktop-menu