前言¶
如果你在用 DSH(DeepSeek Harness),并且桌面装了 Wallpaper Engine,大概率遇到过这种情况:创意工坊里囤了几百张壁纸,但 DSH 的 Web 界面背景还是默认那一张,两边互不相通。手动导出图片再改配置太繁琐,动态壁纸(视频、3D 场景)更没法直接用。
dsh-wallpaper-engine 解决的就是这个问题:它读取本机 Wallpaper Engine 的素材库,在 DSH 界面里提供一个壁纸选择面板,选中即可一键应用到 DSH 背景,还能按壁纸亮度联动切换 DSH 的深色 / 浅色主题。
这是什么¶
dsh-wallpaper-engine(npm 包名 @marlonlau/dsh-wallpaper-engine,当前版本 0.1.2)是 marlonLau 开发的 DSH Web GUI 换背景插件,采用 MIT 许可证,源码托管在 GitHub:https://github.com/marlonLau/dsh-wallpaper-engine。
它的定位一句话可以说清:以本机 Wallpaper Engine 的图片 / 视频素材为源,一键切换 DSH 界面背景。注意它目前只支持图片和视频两种素材,3D 场景和网页壁纸只能取其 preview.jpg 做静态展示。
核心功能¶
壁纸选择面板:在 DSH 侧边栏底部按钮打开面板,以缩略图网格展示壁纸库,支持搜索。
两种素材来源,通过 GET /we/list?source=auto 自动选择:
- Wallpaper Engine Web API(默认
http://localhost:26384/api/wallpaper/list):仅在 WE 正在运行且其本地 Web 服务可用时生效; - 目录扫描(回退):当 API 未启用或不可用时自动回退。它读取注册表和
libraryfolders.vdf自动发现所有 Steam 库,扫描steamapps/workshop/content/431960/*(创意工坊)和steamapps/common/wallpaper_engine/projects/myprojects/*(本地项目),解析其中的project.json。
一键应用:图片应用为 CSS 背景;视频应用为静音循环的 <video>;3D 场景 / 网页壁纸用其 preview.jpg 静态展示。应用后 App 框架与侧边栏变为半透明加毛玻璃(backdrop-filter),壁纸从底下透出。
明暗跟随:勾选后按壁纸亮度自动调用 theme.setTheme 切换 DSH 深 / 浅色主题。
持久化:当前壁纸与设置存 localStorage,刷新不丢;额外目录等配置存 $DSH_HOME/storages/dsh-wallpaper-engine.json。
随机与恢复:支持一键随机换壁纸,或一键恢复 DSH 默认背景。
安装与启用¶
推荐从 npm 安装:
dsh plugin --profile web add @marlonlau/dsh-wallpaper-engine
这条命令会写入依赖,并自动把包追加进 dsh.profile.bundles,随后重启 dsh web 生效。之后只改客户端代码时,刷新页面即可。
如果要开发调试,可以从 GitHub 仓库安装(需要 Node.js >= 18 与 git):
# 1. 克隆仓库
git clone https://github.com/marlonLau/dsh-wallpaper-engine.git
cd dsh-wallpaper-engine
# 2. 把插件包链接进 web profile(单包、零依赖、无构建步骤)
dsh plugin --profile web add "link:$PWD"
# 3. 重启 dsh web
dsh web
等价的手动方式:在 profile 的 package.json 里加依赖 "@marlonlau/dsh-wallpaper-engine": "link:<仓库绝对路径>",并把它追加进 dsh.profile.bundles,然后 pnpm install。
典型用法¶
插件安装后主要交互有三种:选壁纸、看诊断、改配置,全部通过宿主路由暴露:
| 路由 | 说明 |
|---|---|
GET /we/list |
壁纸列表,source=auto\|api\|scan,refresh=1 强制重扫 |
GET /we/status |
API 可用性 / 根目录 / 数量诊断 |
GET /we/file?p=… |
媒体文件(图片 / 视频,支持 HTTP Range) |
GET /we/preview?p=… |
预览缩略图 |
GET/POST /we/config |
配置额外目录、API 地址、API 开关 |
日常操作在界面上完成:侧边栏底部按钮打开面板,搜索或翻页选中壁纸,点击应用即可。如果壁纸列表不对,可以用 GET /we/status 查看当前走的是 API 还是目录扫描、根目录在哪、扫到了多少张,再用 POST /we/config 补充额外目录或调整 API 地址与开关。
开发者视角¶
插件分为两个半区:
- 宿主半区
lib/index.js(Node 端,inject: ['webServer']),负责路由、目录扫描和文件服务; - 客户端半区
lib/client.js(浏览器端,inject: ['theme', 'workspaces'],手写 CJS bundle,通过window.__ModuleLoader__.load(...)加载),负责面板与背景渲染。
改动规则很直接:改 lib/client.js 后刷新页面即生效,改 lib/index.js 需要重启 dsh web。整个包零依赖、无构建步骤,想读懂或改造源码的门槛不高。
适用场景与注意¶
适合的人群很明确:Windows 上同时使用 DSH Web GUI 和 Wallpaper Engine、想让界面背景动起来(或至少换掉默认背景)的用户。如果你的创意工坊壁纸大多是 3D 场景或网页类型,要知道这些目前只能以 preview.jpg 静态展示,动态效果不会搬到 DSH 里。
几点安全与边界说明:
- 所有宿主路由有回环 / 内网信任围栏;文件路由只允许壁纸项目目录内的媒体扩展名,不会越界读文件。
- Wallpaper Engine Web API 仅在 WE 运行且本地 Web 服务可用时生效,否则自动回退目录扫描,不需要手动切换。
- 和所有 DSH 插件一样,插件以当前
dsh进程的权限运行。安装前建议查看源码与许可证(本项目为 MIT),确认没有问题再装。
结尾¶
dsh-wallpaper-engine 做的事不复杂,但路径选得务实:优先复用 Wallpaper Engine 自带的本地 Web 服务,不可用就自己扫目录,素材类型按图片、视频、3D / 网页三级降级处理。对于想在 DSH 界面上用上自己壁纸库的用户,这是一条现成的路。
- 目录页:https://www.skillhub.cn/plugins/marlonLau/dsh-wallpaper-engine
- 源码:https://github.com/marlonLau/dsh-wallpaper-engine