dsh-vibrancy:为 DSH Desktop 提供磨砂玻璃(Acrylic)背景

前言

DeepSeek Harness Desktop 的窗口背景材质通常由 Electron 壳层的 BrowserWindow 控制,普通插件无法直接改壳。若只想在界面背后看到当前桌面壁纸的模糊效果、又不想动 apps/desktop 或走 IPC,就需要在页面侧自己提供背景源。dsh-vibrancy 走的就是这条纯插件路径:读 Windows 已缓存的壁纸文件,经 profile 自带的 loopback Web 服务提供给页面,再在文档里叠一层固定、不可交互的模糊层,并把应用语义背景改成半透明,从而接近 Frosted-glass / Acrylic 观感。

下面介绍插件定位、能力与安装方式;事实以 GitHub 仓库 README 为准。

这是什么

dsh-vibrancy 由维护者 omorisunn 发布,在 SkillHub 目录中归类为「趣味换装」。它面向 DeepSeek Harness Desktop,不修改 DSH 本体、不调用 Electron API、也不碰桌面壳代码;仅在 Host 侧注册 Web 路由、在浏览器侧注入样式与壁纸层。当系统没有可用壁纸文件(例如纯色背景)、profile 缺少 Host 半、或页面已被其他客户端标记时,插件保持不生效,界面与未安装时一致。

核心功能

Host 与浏览器分工

Host 半(index.mjs)在页面已共享的、经认证的 loopback Web 服务器上注册两条路由,并定时重新读取壁纸,以便幻灯片轮换能被感知。浏览器半(打包后的 ./client)请求描述信息;仅当返回 available: true 时,才给文档打标记、注入样式表,并在 body 后追加壁纸层。

壁纸来源与路由

插件在 Windows 11 下从 %APPDATA%\Microsoft\Windows\Themes 相关路径发现图片:优先读 CachedFiles 中最新的图片,再回退到同目录旁的 TranscodedWallpaper。图片类型由文件头魔数判定,而非扩展名。

  • GET /dsh-vibrancy/wallpaper:返回图片字节;无可用图片时 404 no wallpaper。
  • GET /dsh-vibrancy/wallpaper/meta:返回 { available, url, token, mimeType, refreshIntervalMs },cache-control: no-store。

URL 上的 ?v= token 由修改时间与文件大小截断组成,换壁纸即换 URL,避免浏览器长期使用缓存。默认约每 30 000 ms 重新读取壁纸;配置更小的间隔会被抬升到至少 1000 ms。

页面视觉效果

壁纸层为 position: fixed、全屏略外扩(inset: -5%)、filter: blur(48px) saturate(1.15),pointer-events: none,位于应用下方;#root 提到更高 z-index。样式通过重写语义背景别名(如 --dsw-alias-bg-base 与各 bg-layer)为 color-mix(..., transparent),在亮/暗主题下使用不同透明度;菜单、对话框等浮层仍保持接近不透明,以免破坏可读性。

失效与回退

轮询若得到 available: false,会移除层、自定义属性与根节点标记。任意失败路径(无 Host、404、非 JSON、传输错误、localStorage 为 off、非 standalone 文档、已有 [data-dsh-client] 等)均不改动页面原有绘制。

环境要求

  • 操作系统:Windows 11(依赖 Windows 为当前布局写入的壁纸文件)。
  • DSH Desktop:0.1.7-rc.2 或更高,且具备 webServer 服务及其 register 能力。
  • 壁纸:必须是图片文件;纯色背景无文件可读,此时 available 为 false,插件不激活。

package.json 中声明 Node >=22.19;当前包版本 0.1.0,许可证 MIT。

安装与启用

DSH Desktop 使用独立 profile:$DSH_HOME/profiles/desktop(Windows 上为 %USERPROFILE%\.dsh\profiles\desktop)。CLI 不能启动或修改该 profile,安装需在该目录内完成三次写入(Web GUI 插件管理器在能解析到包 specifier 时也会做同样三步;本地目录路径通常不能作为可解析 specifier)。

  1. 将本包复制到 <profile>/node_modules/dsh-vibrancy。
  2. 在 <profile>/package.json 的 dependencies 中加入 "dsh-vibrancy": "file:./node_modules/dsh-vibrancy",并在 dsh.profile.bundles 中加入 "dsh-vibrancy"。
  3. 在 <profile>/cordis.yml 末尾追加 Loader 行:
- id: window-glass
  name: dsh-vibrancy

完成后重启 DSH Desktop。

若你修改了 src/glass-core.mjs,需重新生成 lib/client.js(仓库一般已附带生成结果):

node scripts/build-client.mjs

典型用法

在页面内临时关闭

在 Desktop 文档的 localStorage 中设置键 dsh-vibrancy 为 off 并刷新页面;此后不再请求描述信息、也不注册效果。任意其他值或未设置则视为启用。应用内没有对该键的菜单或设置项。

localStorage.setItem('dsh-vibrancy', 'off')

在 Host 侧禁用

在 cordis.yml 的 Loader 上设置 enabled: false,Host 不再提供壁纸路由,所有页面保持原样:

- id: window-glass
  name: dsh-vibrancy
  config:
    enabled: false

适用场景与注意

适合:在 Windows 11 上使用 DSH Desktop,希望界面背后呈现当前桌面壁纸的磨砂模糊,且接受通过半透明主题 token 调整观感、而非改 Electron 窗口材质的方案。

不适合或无效:非 Windows 11、无图片壁纸、DSH 版本低于 0.1.7-rc.2 或无 webServer、以及与其他客户端共用的非 standalone 文档。

插件以 当前 DSH 进程权限 读取本机壁纸路径并通过 loopback 提供图片;安装前应自行查看 源码与 LICENSE,确认行为与许可符合你的环境策略。社区目录 SkillHub 插件页 与 GitHub 无 DeepSeek / 幻方官方从属关系,仅作生态索引。

结尾

dsh-vibrancy 用「读壁纸 → Host 路由 → 页面模糊层 + 半透明主题」实现 Desktop 侧的 Acrylic 风格,全程不碰壳层。需要时可按 profile 三步安装,用 localStorage 或 cordis 的 enabled 关闭。

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

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

Xiaoye