前言¶
在 DeepSeek Harness(DSH)里同时启用液态玻璃壁纸主题(dsh-plugin-wallpaper-engine)和依赖宿主背景别名的第三方插件时,弹窗、浮层常会跟着变半透明,文字压在壁纸上难以阅读。被影响的插件往往没有单独开关,关壁纸或忍受可读性下降成了仅有的退路。dsh-glass-opaque-fix 在第三个位置——你自己的独立插件里——用可照抄的 CSS 配方把指定浮层背景拉回不透明,而不去改主题或被影响插件的源码。
这是什么¶
dsh-glass-opaque-fix 由维护者 1015677515 发布,归类为趣味换装相关兼容补丁。仓库说明其用途是:恢复被液态玻璃主题(dsh-plugin-wallpaper-engine)做成半透明的浮层面板的不透明背景;内置一条已验证配方(dsh-cost-meter 费用明细 dialog),并文档化如何为其他插件追加选择器。许可证为 MIT,当前 package.json 版本为 1.0.0。项目注明由 DeepSeek Harness 上的 AI 智能体参与开发。
社区目录页:skillhub.cn/plugins/1015677515/dsh-glass-opaque-fix。该目录为社区站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态一贯是「一切皆插件」,本仓库属于用户侧可安装的兼容层,而非宿主内置能力。
问题从哪来¶
液态玻璃主题通过 body[data-we-glass-page] 下的规则,把宿主别名
--dsw-alias-bg-layer-1
--dsw-alias-bg-layer-2
--dsw-alias-bg-layer-3
重映射为 color-mix(…, transparent) 合成的半透明膜,壁纸从膜下透出——这是主题的正当设计。但这是全局改动:任何用这些别名画背景的插件都会一起变透,与是否和壁纸有关无关。
README 中实测过两条常见退路均不理想:
- 主题里的「浮层玻璃 · 玻璃透明度」只覆盖带
we-前缀或官方安装注册面板等选择器,管不到第三方[role=dialog]等浮层;且wallpaper-engine 1.3.3中glassAlpha滑块对应 alpha 下限约为 0.25,无法调到完全不透明。 - 把 CSS 打进主题 bundle 会在主题更新(如
1.3.2 → 1.3.3)时被覆盖;打进被影响插件文件则会在对方更新时丢失。
因此独立小插件、只改自己的 client.js 里的 RECIPES,是文档认定的可持续做法。
核心功能¶
本插件在客户端注入样式,对 RECIPES 中列出的选择器强制不透明背景,卸载时通过 ctx.effect 移除样式;无配方时不注入空 <style>。取不到 document 或 ctx.effect 时安静退出,避免拖垮整个客户端加载。
背景表达式(优先与主题面板色协调):
background: var(--we-panel-color, var(--dsw-static-neutral-bluish-00, #ffffff)) !important;
原理要点:不用已被主题改写的 var(--dsw-alias-bg-layer-*),改用主题不赋值的 --dsw-static-neutral-bluish-* 或 --we-panel-color;必须 !important 以压过 body[data-we-glass-page] 作用域;若浮层有独立 head/body 子节点,子选择器也要一并写上。
当前仓库已收录配方:
| 插件 | 浮层 | 选择器 | 验证 |
|---|---|---|---|
dsh-cost-meter |
费用明细 dialog | .cm-stat-dialog 及 head/body 子元素 |
README 标注实际使用(1.8.32) |
安装与启用¶
资料中的安装方式为在 profile 里以本地目录链接依赖,并加入 bundle;无 dsh plugin add github:… 一类命令。安装前请自行阅读仓库源码与 MIT 许可证;插件随 DSH 客户端以当前进程权限运行,只应安装你信任的代码。
- 将仓库放到本机任意目录(勿在本文流程中使用
git clone以外的未文档化步骤替代你已有的副本管理方式)。 - 在 profile 的
package.json中增加依赖与 bundle:
{
"dependencies": {
"dsh-glass-opaque-fix": "link:A:/你的路径/dsh-glass-opaque-fix"
},
"dsh": {
"profile": {
"bundles": [
"dsh-glass-opaque-fix"
]
}
}
}
- 在
profile/node_modules/下建立目录链接(Windows 示例):
mklink /J "C:\Users\<你>\.dsh\profiles\desktop\node_modules\dsh-glass-opaque-fix" "A:\你的路径\dsh-glass-opaque-fix"
- 重启 DSH。
环境要求:能加载 dsh.client 插件的 DSH 版本;玻璃主题为可选——未装主题时规则仍会注入,但底色本就不透明,通常无可见变化。无第三方依赖,无构建步骤。
若只想修单个插件、不想装本包:可按下文把同一段 CSS 抄进你已有的插件或任意会加载的样式表,代价是主题或对方插件更新后可能要手动再维护一次。
典型用法:为另一个插件加一条配方¶
整个流程只改 client.js 顶部的 RECIPES 数组;改完后必须重启 DSH(client.js 在启动时加载)。
- 打开半透明的浮窗。
- DevTools → Elements → 点选浮窗,读取最外层面板的
class。 - 在
RECIPES中新增条目,例如:
const RECIPES = [
{
id: 'cost-meter',
plugin: 'dsh-cost-meter',
note: '费用明细 dialog。已验证 1.8.32。',
selectors: [
'.cm-stat-dialog',
'.cm-stat-dialog .cm-stat-dialog-head',
'.cm-stat-dialog .cm-stat-dialog-body',
],
},
// {
// id: 'some-plugin',
// plugin: 'dsh-some-plugin',
// note: '设置弹窗;选择器取自 DevTools。',
// selectors: ['.some-dialog'],
// },
];
- 重启 DSH,复查浮窗是否不再透出壁纸;若头部或主体仍透光,把子元素选择器补进
selectors。
排查未生效时,可按 README 顺序检查:是否存在 style[data-plugin-css="dsh-glass-opaque-fix"];document.querySelectorAll('.你的选择器').length 是否 ≥ 1;Computed 里 background-color 是否仍被更高优先级规则划掉。
适用场景与注意¶
适合谁:已启用 dsh-plugin-wallpaper-engine(或同类液态玻璃效果),且某个第三方浮层因宿主背景别名变半透明、影响阅读的用户或插件作者;愿意用 DevTools 确认选择器并维护 RECIPES 的人。
边界(摘自仓库说明):
- 只处理
background;边框、阴影、文字若仍受玻璃影响需另写规则。 - 不做全局
[role=dialog]兜底,以免盖住主题自家设置窗、壁纸仓库等本应玻璃化的面板。 - 被修插件重命名 class 后配方失效,需重新取选择器。
- 贡献新配方时只改
RECIPES,note须写明浮层含义与验证到的插件版本;不接受把补丁写进主题或被修插件文件的方案。
结尾¶
dsh-glass-opaque-fix 的价值在于把「主题全局半透明」与「第三方按不透明别名写 UI」的碰撞,收敛成一处可版本管理的配方表:改一个选择器、重启即可验证,且不依赖修改 wallpaper-engine 或受害插件的发布节奏。