dsh-wallpaper-engine

117Star10Fork7Issue0Watching

把本机 Wallpaper Engine 里的视频/网页壁纸和场景静态帧渲染到 DSH 网页界面的背景,支持液态玻璃效果、上传自定义壁纸和轮播列表。

语言
JavaScript
分支
main
deepseek-harnessdsh-plugindsh-plugin-marketdsh-pluginsliquid-glassthemewallpaper-engine

安装

$ dsh plugin --profile web add github:elysia395/dsh-wallpaper-engine

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

把本机 Steam 上安装的 Wallpaper Engine 壁纸变成 DSH 网页对话界面(dsh web)的背景:自动扫描你的壁纸库,把视频和网页类壁纸直接渲染到界面后方,再叠上 iOS 风格的液态玻璃效果。

核心能力

  • 自动扫描本机 Wallpaper Engine 安装目录和 Steam 创意工坊(通过读取 libraryfolders.vdf 定位非默认盘符的 Steam 库)
  • 把可移植的 Video(.mp4)和 Web(HTML)类壁纸以原生方式渲染到 DSH 界面背景层,视频支持静音自动播放和拖动 seek
  • 把 Scene(场景)类壁纸的主纹理从 .pkg 容器里提取出来,作为静态帧背景展示(支持 JPEG 直通、PNG 解码和 DXT 系列压缩纹理)
  • 在 DSH 设置里新增一级「Wallpaper Engine」设置页,含液态玻璃外观(6 种配色预设 + 自定义取色)、玻璃透明度和颜色调节
  • 支持自定义上传 JPG / PNG / MP4 当壁纸,可更换存储目录;支持视频倍速(0.5x–2x)、水平翻转、隐藏/恢复(软删除)
  • 提供用户自建轮播列表(任意多个、每个独立间隔和顺序),第一次启动自动从 Wallpaper Engine 自己的播放列表导入一份

技术实现

  • 语言: JavaScript(Node ESM) + React 客户端模块
  • 关键依赖: @deepseek-ai/cordis ^4.0.1(host 端 Cordis 插件框架)、@deepseek-ai/dsh-client-runtime >=0.1.0-rc.6@deepseek-ai/dsh-client-ui-slots >=0.1.0-rc.6@deepseek-ai/dsh-host-webserver >=0.1.0-rc.6
  • 架构模式: 双端分离——host 端是 Cordis 插件(lib/index.js),在 DSH WebServer 上注册同源 HTTP 路由;client 端是浏览器模块(lib/client.js,由 src/client.jsscripts/build-client.mjs 编译),通过 ctx.slots 注入 settings 一级页。设置从浏览器 localStorage 迁移到宿主端文件 (~/.dsh-wallpaper-engine/config.json),与端口无关
  • 入口文件: lib/index.js(host)、lib/client.js(client,构建产物,规范源是 src/client.js

适用场景

想让 DSH 对话界面不再千篇一律的纯色背景、想用自己已经在 Steam 上攒下来的 Wallpaper Engine 壁纸库做装饰的人——尤其是喜欢液态玻璃风格、需要视频/网页壁纸动态背景、又不希望设置因为换端口或换浏览器而丢失的用户。本插件专为 Windows 设计(macOS 有社区单独维护的衍生包)。

前置依赖与兼容性

依赖最低版本说明
DSH>= 0.1.0-rc.6由 peerDependencies 推断(cordis ^4.0.1,dsh-client-runtime/ui-slots/host-webserver 均 rc.6 起)
Node未声明package.json 中无 engines 字段
平台Windowshost 通过读取 Steam libraryfolders.vdf 和 Windows 注册表定位 Wallpaper Engine,仅适用于 Windows;macOS 由社区衍生包 dsh-plugin-wallpaper-engine-mac 单独维护
原生模块仅使用 node:fs node:path node:os node:crypto node:child_process 等内置模块

安装方式

dsh plugin --profile web add github:elysia395/dsh-wallpaper-engine

配置项

配置类型说明默认值
已选壁纸选择器从你的壁纸库(含 WE + 自上传)里挑一张当前激活未选
壁纸模糊滑块 0–60px给壁纸本身加模糊0
暗化(遮罩)滑块 0–90%文字与壁纸之间的暗色遮罩深度25%
边框滑块 0–90%边框和分割线对比度35%
玻璃滑块 0–60px对话栏/气泡/侧边栏的玻璃模糊半径24px
视频倍速选择 0.5x–2x视频壁纸原生 playbackRate1x
水平翻转开关CSS 镜像(视频/网页/上传图片)
内容分级下拉Wallpaper Engine 自带 G/PG13/R 分级过滤Everyone
类型过滤下拉视频/网页/图片/全部全部
卡片样式开关紧凑 CD 架式 vs 常规分页常规分页
设置窗口液态玻璃开关把整个 DSH 原生设置窗口换成玻璃样式
配色颜色(6 预设 + 取色器)按钮/开关/链接/导航选中/滑块的统一主题色#4f8cff 经典蓝
玻璃颜色颜色(6 预设 + 取色器)设置窗口玻璃的底色色调浅色白 / 深色深夜蓝
玻璃透明度滑块 0–60%玻璃面板(设置窗口/输入栏/气泡/侧栏)浓淡12%
上传目录路径输入自定义壁纸文件的保存位置~/.dsh-wallpaper-engine/uploads

常见问题

Q: macOS 用户能用吗?

A: 这个插件主要面向 Windows,因为 Wallpaper Engine 客户端本身就是 Steam 上的 Windows 应用,host 端直接读取 Windows 注册表和 libraryfolders.vdf。macOS 端由社区维护者 Jerry 单独发布为 dsh-plugin-wallpaper-engine-mac 这个 npm 包,走另一套机制。

Q: 为什么选中场景类壁纸后只看到一张静态图,不动?

A: Wallpaper Engine 的场景(Scene)壁纸由它自己内置的 3D 引擎驱动,浏览器无法重放 shader/粒子/几何动画。插件会从 scene.pkg 容器中按"艺术图可能性"评分挑出主纹理(JPEG 直通或 DXT 解码)作为静态背景——摄影/插画类场景效果接近原图,但纯 shader/BC7/视频纹理驱动的场景会自动回退到工坊预览图(preview.jpg),属于预期行为。

Q: 我的设置在 DSH Desktop 重启后全没了?

A: 自 v0.4.0 起所有设置(已选壁纸、配色、透明度、布局、轮播、隐藏、倍速、翻转等)都改存在宿主端文件 ~/.dsh-wallpaper-engine/config.json,与端口、浏览器、浏览器数据无关,重启/换端口/清缓存/换浏览器都不会丢。旧版本存在浏览器 localStorage 的配置会在首次启动时自动迁移。

Q: 上传的自定义壁纸会占满 C 盘吗?

A: 默认会写入 ~/.dsh-wallpaper-engine/uploads(Windows 下通常在 C 盘用户目录)。你可以在设置里的「上传目录」改成任意盘符的绝对路径,已有文件会自动迁移过去;如果不想迁移旧文件,也可以选择「不迁移」让旧文件留在原位置。

Q: 文字在某些壁纸上看不清怎么办?

A: 在「壁纸效果」里把「暗化」「边框」两个滑动条调高,必要时再加一点「壁纸模糊」。颜色鲜艳或花纹复杂的壁纸可能还需要在 DSH 的「浅色/深色」主题之间切换,找到当前壁纸最舒服的那一种。所有滑动条都即时生效,无需刷新页面。

Q: 怎么完全卸载?

A: 先在插件设置里清空已上传的自定义壁纸,再删除 ~/.dsh-wallpaper-engine 整个目录(包括 config.jsonuploadscache 三个子目录),最后用 dsh plugin --profile web remove 卸载插件。删除该目录不会影响你 Steam 上的 Wallpaper Engine 安装本身。

上手难度

入门 — 安装一次后所有调节都在「设置 → Wallpaper Engine」可视化页面里完成,没有需要手敲的配置项,普通用户按照设置页提示操作即可。

已知问题与限制

  • Scene(原生 3D)和 Application(外部窗口)类壁纸无法内嵌网页:Scene 仅以提取的静态帧显示,Application 完全不出现在选择器和轮播候选里
  • Scene 主纹理不支持 BC7、RGB565、16 位浮点等格式,解码失败时自动回退到 preview.jpg,纯 shader/纯粒子场景通常没有可提取的主纹理,效果接近灰白遮罩
  • 浏览器需要允许静音 <video> 自动播放:DSH 跑在 loopback 上现代浏览器默认放行,但如果你的浏览器开启了严格策略需要手动调整
  • host 端只暴露它枚举过的 Wallpaper Engine 文件,不提供任意文件系统访问;自定义上传的文件只存在于本机,不上送任何远程服务器
  • 选择器文案为中英混合(本 bundle 尚未接入 DSH 的 locale 命名空间)