显示位置设成「都不显示」后,桌宠彻底消失怎么恢复
适用范围:下文依据历史 issue 整理。原因、绕过方法与限制需结合报告版本判断;本文没有在所有平台实机验证,也不把 issue 关闭当作已发布修复。
设成「都不显示」再重启 DSH,托盘图标和桌宠会一起消失,界面上找不到任何切回来的入口——看起来像插件坏了,其实配置还能改回来。
先说结论:先核对是否由 display: none 引起。 历史 #239 报告了这种恢复入口缺失;可按以下顺序尝试,不能据此判断文件一定完好或保证恢复时间。
为什么会这样
dsh-pet 的桌面托盘是由 helper 进程创建的。而 helper 的启动条件是:
if (!hasDesktopPet && !desktopModeEverActive) return; // 不启动
其中 desktopModeEverActive 是个进程内变量,不落盘。
所以一旦你把显示位置设成「都不」(display: "none"),再重启 DSH:
- 没有桌面宠物 →
hasDesktopPet为 false - 进程重启 →
desktopModeEverActive回到初始值 false - 两个条件同时成立 → helper 不启动 → 没有托盘 → 没有任何入口
而托盘右键菜单和宠物右键菜单是仅有的两个「显示位置」入口,它们一起消失了。 用户此刻只剩设置页一条路,从表面看就是「插件彻底坏了」。
恢复方法(按顺序试)
-
方法一:DSH 设置 → 桌宠配置
打开 DSH 设置,找到「桌宠配置」,把「显示位置」从「都不显示」改成 「桌面」或「两者」,保存。
保存后检查 helper、托盘与实际配置;未恢复时继续下一步。
注意:这个设置页有已知的「静默保存失败」问题(见下方「改完没生效?」), 保存后一定按第 3 步验证一下。
-
方法二:直接改配置文件
如果设置页打不开或保存无效,直接改文件:
# 配置文件位置(三个平台都是这个相对路径) ~/.dsh/dsh-pet/main-config.jsonc # Windows 完整路径 C:\Users\<你的用户名>\.dsh\dsh-pet\main-config.jsonc找到
display字段,把"none"改成"desktop"(只在桌面显示) 或"both"(桌面和网页都显示):{ "pets": [ { "id": "main", "display": "desktop" // ← 改这里 } ] }保存后完全退出 DSH 再启动(不是关窗口,是退进程)。
上面的代码仅表示修改位置。先备份原文件,只改目标宠物的 display,保留其他字段和其他宠物,不能用片段覆盖整份配置。设置过 DSH_HOME 时,请使用实际配置目录。
-
方法三:调接口(进阶)
dsh-pet 在本地起了个 HTTP 服务,可以直接改。先找端口——在 DSH 日志里搜
dsh-pet-7340,会看到类似这样的地址:http://127.0.0.1:43120/dsh-pet-7340/config以下是 POSIX shell 示例;43120 必须替换为日志中的实际端口,main 替换为目标宠物 id。401/403 时先查访问鉴权。
# 查看当前配置(验证用) curl http://127.0.0.1:43120/dsh-pet-7340/config # 改显示位置 curl -X POST http://127.0.0.1:43120/dsh-pet-7340/pet-display \ -H "Content-Type: application/json" \ -d '{"id":"main","display":"desktop"}'
改完没生效?
历史 #167(0.3.7)报告的行为如下,当前版本需重新核验:设置页的保存可能静默失败。你看到下拉框变成「仅桌面」了, 但磁盘上的配置根本没写进去,重启后一切照旧。
原因:读取和保存两条路径的校验宽严不一致。
| 操作 | 校验规则 | 结果 |
|---|---|---|
| 读取配置 | 逐字段合并,缺字段取默认 | 宽松,手写部分字段也能用 |
| 保存配置 | 要求字段齐全,缺一个就整体拒绝 | 严格,不满足就返回 400 |
当设置页提交的数据有任何一项不满足严格校验,保存会返回 400,
main-config.jsonc 不会被写入,但界面已经显示成你选的值了。
怎么验证真的写进去了:
curl http://127.0.0.1:<你的端口>/dsh-pet-7340/config | grep display
如果返回的还是 "none",说明没写进去——用方法二直接改文件。
怎么避免再踩
- 别用「都不显示」当「暂时关掉宠物」的手段。想临时关,用右键菜单的「暂时隐藏」 (如果有)或直接把宠物拖到屏幕角落。
- 如果确实要关,关之前先记住恢复路径:设置 → 桌宠配置。
- 升级到较新版本后,官方已经讨论过持久化
desktopModeEverActive的方案, 后续版本可能不再有这个问题。