读取桌面壁纸并模糊成亚克力背景,无需改动外壳
29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add omorisunn/dsh-vibrancy该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 读取桌面壁纸
- 壁纸模糊成亚克力背景
- 无需改动外壳
为 DeepSeek Harness 桌面应用加上毛玻璃(亚克力)质感——纯插件实现壁纸模糊,无需改动外壳
README
由 DeepSeek 最新模型翻译生成dsh-vibrancy
DeepSeek Harness Desktop 应用的毛玻璃(亚克力)表面:插件读取当前的桌面壁纸,通过 profile 自身的 Web 服务器提供它,并在应用之后把它模糊绘制出来。
插件不需要对 DSH 本身做任何改动。窗口背景材质属于 Electron 外壳的 BrowserWindow,插件无法触达,因此本插件改为自带背景来源:Windows 已经为当前显示布局保存好的壁纸文件。只有当 Host 报告壁纸可用时插件才注册该图层,因此缺少 Host 半侧的 profile、纯色壁纸,或由其他客户端拥有的文档,渲染都与之前完全一致。
它做什么
Host 半侧(index.mjs)在页面已经共享的、经过认证的环回 Web 服务器上注册两条路由,并按定时器重新读取壁纸,从而能感知幻灯片轮换。浏览器半侧(随包提供的 ./client bundle)请求描述符,只有当它报告 available: true 时,才标记文档、注入样式表并追加壁纸图层。
图层是应用之后一个固定、不接收交互的 div。 上的自定义属性把它指向图片 URL,样式表负责模糊并提高其饱和度、清除应用自身的不透明涂色、为结构性表面着色,并把 #root 抬到图层之上。
轮询会重新请求描述符。
展开完整文档(README 剩余 1 节)
dsh-vibrancy
DeepSeek Harness Desktop 应用的毛玻璃(亚克力)表面:插件读取当前的桌面壁纸,通过 profile 自身的 Web 服务器提供它,并在应用之后把它模糊绘制出来。
插件不需要对 DSH 本身做任何改动。窗口背景材质属于 Electron 外壳的 BrowserWindow,插件无法触达,因此本插件改为自带背景来源:Windows 已经为当前显示布局保存好的壁纸文件。只有当 Host 报告壁纸可用时插件才注册该图层,因此缺少 Host 半侧的 profile、纯色壁纸,或由其他客户端拥有的文档,渲染都与之前完全一致。
它做什么
Host 半侧(index.mjs)在页面已经共享的、经过认证的环回 Web 服务器上注册两条路由,并按定时器重新读取壁纸,从而能感知幻灯片轮换。浏览器半侧(随包提供的 ./client bundle)请求描述符,只有当它报告 available: true 时,才标记文档、注入样式表并追加壁纸图层。
图层是应用之后一个固定、不接收交互的 div。 上的自定义属性把它指向图片 URL,样式表负责模糊并提高其饱和度、清除应用自身的不透明涂色、为结构性表面着色,并把 #root 抬到图层之上。
轮询会重新请求描述符。令牌变化会替换图层 URL,这正是轮换后的壁纸能到达页面、而浏览器不会继续使用缓存图片的方式。回答 available: false 会再次移除图层与各标记,让应用回到自身的不透明涂色。
要求
- Windows 11。插件读取 Windows 为当前布局写下的壁纸文件,位于 %APPDATA%\Microsoft\Windows\Themes 之下。
- DSH Desktop 0.1.7-rc.2 或更高版本,并具备 webServer 服务,其 register 方法挂载这两条路由。插件完全不需要外壳改动:它绝不触碰 apps/desktop,不使用任何 IPC 通道,也不调用任何 Electron API。
- 壁纸必须是图片文件。纯色背景没有可读取的文件,因此 available 为 false,插件保持惰性。
安装
lib/client.js 是生成产物,且随包提供,因此克隆下来即可使用。只有在编辑 src/glass-core.mjs 之后才需要重新构建:
node scripts/build-client.mjs
DSH Desktop 拥有自己的 profile,位于 $DSH_HOME/profiles/desktop(Windows 上是 %USERPROFILE%\.dsh\profiles\desktop),CLI 无法启动或改动它。安装就是向该目录写入三项内容:
1. 把本包复制到 /node_modules/dsh-vibrancy。
2. 在 /package.json 的 dependencies 中加入 "dsh-vibrancy": "file:./node_modules/dsh-vibrancy",在 dsh.profile.bundles 中加入 "dsh-vibrancy"。
3. 把 Loader 行追加到 /cordis.yml:
- id: window-glass
name: dsh-vibrancy
然后重启 DSH Desktop。只要该包能作为可解析的 specifier 被取到,Web GUI 的插件管理器会自行完成同样的三项写入;而本地目录不是这样的 specifier。
禁用
把 Desktop 文档本地存储中的 dsh-vibrancy 键设为 off 并重新加载页面:
localStorage.setItem('dsh-vibrancy', 'off')
取该值时页面不请求描述符,也不注册任何内容;其他任何取值或未取值都保持插件启用。该键没有应用内命令或设置项。
Loader 行还接受 enabled 选项,它会停止 Host 半侧提供壁纸,并让每个页面都保持不变:
- id: window-glass
name: dsh-vibrancy
config:
enabled: false
工作原理
Host 半侧注入 webServer,并通过 ctx.effect(() => ctx.webServer.register(...)) 注册路由,因此释放时会随插件 fiber 一起注销。GET /dsh-vibrancy/wallpaper 返回图片字节,content-type 取自文件的魔术字节,附带 content-length 与 cache-control: private, max-age=604800;没有可用图片,或文件在检查与读取之间消失时,它回答 404 no wallpaper。GET /dsh-vibrancy/wallpaper/meta 返回 { available, url, token, mimeType, refreshIntervalMs },并带 cache-control: no-store。
图片 URL 以 ?v= 查询参数携带令牌,而令牌是截断后的修改时间与文件大小,因此另一张壁纸就是另一个 URL,浏览器无法复用其缓存副本。setInterval 会重新读取壁纸以感知幻灯片轮换;间隔默认为 30 000 ms,配置值更小时会被抬到 1000 ms。
src/wallpaper.mjs 负责发现图片。它读取 %APPDATA%\Microsoft\Windows\Themes\CachedFiles 并取其中最新的图片,随后回退到与其并列的 TranscodedWallpaper,即 Windows 为当前布局合成的那份副本。图片类型来自开头字节,绝不来自文件名:Windows 会按主题来源的扩展名命名缓存文件,所以缓存图片可能名为 .jpg 而字节是 PNG,按文件名猜测会送出浏览器拒绝绘制的类型。不可读、为空或非图片的候选会被跳过,一个候选都没有时报告 available: false。
浏览器半侧在激活时运行。installGlassSurfaces() 读取存储的偏好,检查文档是顶层文档且不带其他客户端的标记,并以 credentials: 'same-origin' 请求描述符。只有当描述符为 available: true 且 url 非空时才继续:注入样式表,在根元素上设置 data-ds-window-glass 与 data-ds-window-wallpaper,并向 body 追加 ,图片通过 上的 --dsh-vibrancy-wallpaper 自定义属性提供,其中的引号字符会被转义。
图层是 position: fixed、inset: -5%、z-index: 0、pointer-events: none,并以 background-size: cover 与 filter: blur(48px) saturate(1.15) 绘制。负的 inset 让元素越出视口,从而把大半径 blur() 在边缘留下的透明镶边挡在可见区域之外;#root 被抬到 position: relative; z-index: 1,让应用绘制在它之上。
样式表通过重定义语义背景别名——--dsw-alias-bg-base 与三个 bg-layer 填充——让应用变得通透,把它们写成 color-mix(in srgb, , transparent),并在 body[data-ds-dark-theme] 下另设一组百分比。它刻意不剥离元素背景:一条宽泛的 background-color: transparent 规则会同时抹掉卡片、面板与输入框,使它们的文字落在模糊之上无法辨读。底色填充最为通透,让壁纸能从主表面透出;而 layer-1 与输入框填充保持更不透明,以维持卡片与输入区文字的对比度。浮动菜单、对话框、列表框与浮层保留近乎不透明的 --dsw-specific-menu 填充,因为它们覆盖的是内容而不是窗口。一个把该样式表渲染在真实壁纸之上的视觉探针确认了下列百分比在两种主题下都可用;它是开发工具,不属于本包。
定时器按 Host 告知的间隔重新请求描述符,下限为 1000 ms。令牌变化会改写图层的指向,令牌相同时不动 DOM。回答不再可用时会移除图层、自定义属性与根标记,应用因此回到自身的涂色。
每条失败路径都让页面保持不变:Host 半侧缺失导致没有路由、404、非 JSON 响应体、传输错误、存储偏好为 off、非顶层文档,或已带 [data-dsh-client] 的文档。释放会清除轮询定时器,并移除样式表、图层、自定义属性与两个属性。
lib/client.js 是经典脚本而不是模块:application combo 脚本会携带每条 row 的 client.js 入口并逐字拼接,因此该 bundle 自身没有模块加载器。scripts/build-client.mjs 于是把 src/glass-core.mjs 去掉 export 关键字后内联,并包进 window.__ModuleLoader__.load({ id, factory }) 注册,由 factory 内部赋值 exports.apply。dsh.client.platform 保持 web,因为这是 Web 模块注册表所选用的取值;壁纸判定是运行时的描述符请求。
已验证的行为
tests/glass.test.mjs(22)、tests/wallpaper.test.mjs(11)、tests/client-bundle.test.mjs(8)与 tests/host-client.test.mjs(4)中的测试,针对文档桩、临时壁纸 profile、生成 bundle 的沙箱执行,以及一个真实的 node:http 服务器,覆盖了:
- 存储偏好为 off 时禁用表面;未存储任何取值时的默认状态是启用。
- 已被其他客户端占用,以及没有顶层窗口的文档不会被装饰。
- 壁纸不可用、描述符请求失败、路由缺失、描述符不是对象、文档没有 fetch,以及文档没有 body,都会让应用的涂色保持不变。
- 壁纸可用时会注册样式表、两个根属性与图层,并把图层指向描述符给出的 URL。
- 释放会移除样式、图层与各属性,清除轮询定时器;第二次释放为空操作。
- 轮换后的壁纸会在下一次轮询时替换图层 URL,未变化的壁纸不会改写图层。
- 壁纸消失会再次撤销毛玻璃表面。
- 低于下限的轮询间隔会被抬高,图片 URL 的引号会被转义,在裸文档上清除图层是安全的,且每份文档只注册一份样式表。
- 图片类型按魔术字节识别而非文件名,命名为 .jpg 的 PNG 被报告为 PNG,非图片、空文件、不存在的文件与目录都会被拒绝。
- 已描述的文件携带由大小与修改时间构成的缓存令牌;候选路径需要 APPDATA;没有缓存目录时也能找到转码后的壁纸;最新的缓存图片获胜;缓存中的非图片条目会被跳过;profile 不存在时得不到壁纸。
- 生成的 bundle 只以清单包名注册一个 factory,不导入任何内容,并能容忍没有 ctx.effect 的上下文。
- 在真实 HTTP 服务器上:Host 以魔术字节决定的类型提供壁纸,客户端绘制 Host 实际提供的壁纸,轮换后的壁纸会改变令牌,未知路由不会被注册。
设计渲染、模糊本身与合成结果,是桩无法观察的,因此另用一个未随包发布的视觉探针单独检查:该探针在 Electron 中把插件自身的样式表渲染在桌面真实壁纸之上并采集结果。浅色与深色两套令牌都已检视,探针还会在截图之外记录解析后的图层 filter、几何尺寸、视口与 body 涂色。
已知限制
模糊只作用于壁纸。从应用之后经过的其他窗口不会被模糊,因为模糊它们需要真正的操作系统合成,而插件无法触达。
图层对齐到屏幕而不是窗口,因此在拖动窗口时它会相对桌面滑动。
壁纸变化会在下一次轮询时(最多约 30 秒后)被感知,而不是立即生效。
纯色背景没有图片文件,因此 available 为 false,插件保持惰性;没有任何可模糊成材质的颜色。
Host 会读取用户的壁纸文件。只有当前用户本来就能读取的字节才会被提供,而且只通过页面已经共享的、经过认证的环回 Web 服务器提供,因此没有任何内容离开本机。存储的 off 偏好与该行的 enabled: false 选项可以关闭该功能。
许可
MIT;见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
omorisunn/dsh-vibrancy
读取桌面壁纸并模糊成亚克力背景,无需改动外壳
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。