🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

整窗壁纸 woshishujiedegou/dsh-plugin-wallpaper

DeepSeek Harness
woshishujiedegou10 天前有提交已提供中文文档扫描:未发现敏感能力

给 Web 界面铺整窗壁纸,可导入本机 Wallpaper Engine 素材

29.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add woshishujiedegou/dsh-plugin-wallpaper
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 10 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    lib/client.js:1066
    const response = await fetch(refresh ? `${LIBRARY_URL}?refresh=1` : LIBRARY_URL, {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

给 DeepSeek Harness Web GUI 提供全窗口静态和动态壁纸,并带一个导入器,用来探测每个本地 Wallpaper Engine 项目里到底有什么。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-wallpaper 给 DeepSeek Harness Web GUI 铺一层整窗壁纸:面板变成「开向壁纸的窗」,卡片与菜单保持实心。 壁纸来源四种:浏览器实时绘制的动态场景(默认)、8 套内置渐变、你拖进来的图片,以及从本机 Wallpaper Engine 库导入的真实壁纸(视频 / 网页工程 / GIF / 静态图)。 这个插件只读你本机的 Steam 库,不联网、不上传、不复制素材;仓库里不含任何壁纸文件。 功能 - 动态壁纸(无需素材):极光 / 星尘 / 深潮三套场景由一个 实时绘制(rAF、约 30fps、0.75× 缓冲、页面隐藏时停画、prefers-reduced-motion 只画一帧)。
展开完整文档(README 剩余 1 节)
dsh-plugin-wallpaper

给 DeepSeek Harness Web GUI 铺一层整窗壁纸:面板变成「开向壁纸的窗」,卡片与菜单保持实心。

壁纸来源四种:浏览器实时绘制的动态场景(默认)、8 套内置渐变、你拖进来的图片,以及从本机 Wallpaper Engine 库导入的真实壁纸(视频 / 网页工程 / GIF / 静态图)。

这个插件只读你本机的 Steam 库,不联网、不上传、不复制素材;仓库里不含任何壁纸文件。

功能

- 动态壁纸(无需素材):极光 / 星尘 / 深潮三套场景由一个 实时绘制(rAF、约 30fps、0.75× 缓冲、页面隐藏时停画、prefers-reduced-motion 只画一帧)。
- Wallpaper Engine 导入:
- 自动发现所有 Steam 库(读 steamapps/libraryfolders.vdf + 各盘常见路径),扫 wallpaper_engine/projects/* 与 workshop/content/431960/;
- 视频壁纸播原文件(Range → 206 流式);
- 视频贴在 scene.pkg 里的场景壁纸,直接从 pkg 内部按 Range 取字节播放(不落地、不解包);
- 网页工程用 跑真实工程目录;
- 带 GIF 的壁纸直接铺 GIF;
- 其余按静态壁纸,优先用工程自带的大图。
- 内容识别:见下文「识别流水线」——不信 project.json 的 type,而是探测文件本身,并把判断依据(reason)与视频编码(codec)写进接口和卡片 tooltip。
- 可调:可读性遮罩、模糊、亮度、填充方式(铺满 / 完整 / 拉伸)、缓慢漂移。
- 明暗自适应:跟随 body[data-ds-dark-theme] 自动切换亮/暗素材。
- 可逆:关掉开关,样式表 / / / 一起移除,主题原样恢复。

架构

一个插件两个半边,通过本机 HTTP 路由通信:

Client(浏览器) Host(DSH 进程) ├─ #dshw-wallpaper 容器(z-index:-1) ├─ Steam 库发现 │ ├─ .dshw-picture 静态图 / GIF ├─ project.json 解析 │ ├─ 视频(含 pkg 内嵌) ├─ 内容探测(pkg / MP4 / GIF / 图片) │ ├─ 网页工程 ├─ GET /wallpaper-engine/library │ ├─ 实时场景 ├─ GET /wallpaper-engine/media?id=&role= │ └─ .dshw-wash 可读性遮罩 ├─ GET /wallpaper-engine/web/<id>/<path> └─ Settings 页 └─ GET /wallpaper-engine/asset/<id>/<role>

客户端只拿到 16 位不透明 id,永远拿不到真实路径;路由按 id 反查扫描结果,路径始终在扫描白名单内。

为什么壁纸不会盖住界面

所有绘制层都放在同一个容器里,容器本身 position:fixed; inset:0; z-index:-1; isolation:isolate; contain:layout paint; overflow:hidden:

- isolation:isolate + contain:layout paint 让容器成为独立层叠上下文,子元素的 z-index 无论多大都逃不出容器;
- 容器整体位于 z-index:-1,只会待在应用内容之下;
- 子元素全部 position:absolute + pointer-events:none,不参与应用布局、不抢输入;
- 万一某条子元素规则失效(甚至整个样式表失效),最坏结果是「壁纸不显示」,而不是「壁纸盖住 UI」。

早期版本是把 html::before / html::after 伪元素和直接挂在 <body> 上的 video/iframe/canvas 各自用负 z-index 定位,且这些层带 filter(会触发 GPU 合成层)。这种写法依赖「负 z-index 层永远待在根层叠上下文底层」这一前提,一旦合成层被提升或某条规则失效,整窗图层就可能翻到内容之上(表现为侧边栏、对话区全被壁纸遮住)。v2.1 起改为上面的单容器结构,从结构上消除该类问题。

识别流水线(v2 重点)

旧版按 project.json 的 type 分类,会把「视频贴图场景壁纸」误判成静态。现在每个工程都会被探测一遍,按优先级得出 motion:

| 顺序 | 探测内容 | reason |
| 1 | 工程内有独立视频文件(.mp4/.webm/.m4v/.mov) | video-file |
| 2 | scene.pkg 里扫到 MP4 box 链(ftyp → moov/uuid/free → mdat),按 box 累加得到完整 extent | video-packed |
| 3 | 工程内 / preview. 是 GIF | gif-preview |
| 4 | type: web 且工程内有可用的 index.html | web-project |
| 5 | 工程自带最大图片(如 materials/beach.png) | project-image |
| 6 | 最后退回 preview. | preview-frame |
| — | 找到视频但浏览器解不了(如 HEVC) | codec-unplayable:<codec> |

细节:
- MP4 编码探测:读 moov/trak/mdia/minf/stbl/stsd 的首个 sample entry fourcc → h264 / hevc / vp9 / av1 / mpeg4。Chromium 能解 h264、vp9、av1;hevc 会降级成 GIF/静态并标注,避免「黑屏壁纸」。探测失败时 fail-open(当作可播)。
- pkg 内嵌视频:先分块扫全文件找 ftyp(带 1.2s 时间预算),再走 box 链算范围;多个候选取最大的那个。结果按 pkg 的 mtime+size 缓存。
- Range 映射:Content-Range: bytes a-b/<inner.size>,实际读 pkg[inner.offset + a … inner.offset + b],所以浏览器拖进度、首帧加载都正常。
- 探到的依据会出现在设置页卡片的 tooltip 里:标题 · 动态 · h264 · video-packed。

Wallpaper Engine 导入

| 判定 | 处理方式 | 角标 |
| 独立视频 | 播原文件 | 动态 |
| pkg 内嵌视频 | ,Range 映射进 pkg | 动态 |
| 网页工程 | 跑工程目录 | 网页工程 |
| 带 GIF | 直接铺 GIF | 动态 GIF |
| 其余 | 静态图(工程自带大图 / 预览帧) | 静态 |

「只看动态」开关默认关闭(全部条目可见);打开后只留视频、网页工程与 GIF。

路由:

| 路由 | 作用 |
| GET /wallpaper-engine/library | 扫描结果 JSON,含 features / kind / motion / reason / codec / sources;?refresh=1 跳过 30s 缓存 |
| GET /wallpaper-engine/media?id=<id>&role=media | 视频(独立文件或 pkg 内嵌),支持 Range → 206 |
| GET /wallpaper-engine/media?id=<id>&role=still | 静态 / GIF 画面 |
| GET /wallpaper-engine/media?id=<id>&role=preview | 卡片缩略图 |
| GET /wallpaper-engine/web/<id>/<path> | 网页工程文件(prefix) |
| GET /wallpaper-engine/asset/<id>/<role> | 媒体/预览的 prefix 捷径(可选) |

安装

在 DSH 里用插件管理器装本仓库(绝对路径):

plugin_manager { action: "install_bundle", target: "<本仓库绝对路径>" }

或手动:

1. 把仓库路径加进 profile 的 package.json dependencies:"dsh-plugin-wallpaper": "file:<绝对路径>";
2. dsh.profile.bundles 数组里加 "dsh-plugin-wallpaper";
3. 让 profile 的 node_modules/dsh-plugin-wallpaper 指到本仓库(junction / symlink 均可)。

装好后刷新页面即生效。

⚠️ Host 半边只在 DSH 启动时 import,所以装好或改过 Host 代码后要重启一次 DeepSeek Harness;没重启时设置页会显示「壁纸服务还没加载」,内置壁纸与动态场景不受影响。

使用

侧边栏 → 设置 → 背景壁纸:

| 控件 | 说明 |
| 启用背景壁纸 | 总开关,关掉即恢复默认外观 |
| 动态壁纸 | 极光 / 星尘 / 深潮(canvas 实时绘制) |
| 内置壁纸 | 8 套渐变,亮/暗各一张 |
| 自定义图片 | 选图或拖图,本地压缩后存 localStorage |
| Wallpaper Engine | 本机库缩略图墙,右上「重新扫描」 |
| 只看动态 | 隐藏静态壁纸 |
| 可读性遮罩 | 15%–80%,越高越好读 |
| 壁纸模糊 | 0–30px(同时决定绘制层为模糊留的边) |
| 填充方式 | 铺满 / 完整 / 拉伸 |
| 壁纸亮度 | 50%–130% |
| 缓慢漂移 | 极慢缩放呼吸感 |
| 恢复默认 | 清空自定义与导入,回到动态壁纸 |

偏好存在浏览器本地(dsh-plugin-wallpaper:v8)。

开发

仓库自带几个离线工具(不需要 DSH 也能跑,用来验证 Host 与页面渲染):

1. 列一遍本机 WE 库:类型 / 文件 / 预览 / 最大视频
node tools/scan-library.mjs "D:/SteamLibrary/steamapps/common/wallpaper_engine/projects" \
"D:/SteamLibrary/steamapps/workshop/content/431960"

2. 直接驱动 Host 半边:打印路由、库 JSON、预览/视频/静态 字节数与 Range 响应
node tools/host-check.mjs lib/host.js

3. 离线渲染 Settings 页,确认 N 个按钮都出来了(不需要浏览器)
node tools/render-client.mjs lib/client.js dark video

隐私与边界

- 只读:不写 Steam 目录、不复制素材、不联网。
- 客户端拿不到文件路径,只能按不透明 id 请求,且 id 必须在本次扫描结果里。
- 网页壁纸的 用 sandbox="allow-scripts allow-same-origin" 且 pointer-events:none,不抢输入。
- 所有资源在插件卸载 / 关闭开关时移除。

已知限制

- scene.pkg 是 Wallpaper Engine 的私有格式,没有浏览器端渲染器:本插件只能取出其中的视频(很多动态壁纸正是这么做的),纯粒子 / 着色器场景无法还原,只能 GIF 或静态一帧。
- 网页壁纸依赖作者自己的运行时,部分工程调用 Wallpaper Engine 专属 API(音频响应、属性)会退化。
- 首次进入大视频(几十 MB)有几秒缓冲;pkg 扫描首次约 1–2s,结果有缓存。
- 大结构面透明后,少数直接拿 bg-base 当底色的弹层也会变透明(菜单/卡片走 bg-layer-*,不受影响)。

License

MIT · 本项目与 DeepSeek 官方无关,Wallpaper Engine 是其版权方的商标。
预览分享卡片长什么样 ↓woshishujiedegou/dsh-plugin-wallpaper
分享 · DeepSeek Harness Hub
woshishujiedegou/dsh-plugin-wallpaper

给 Web 界面铺整窗壁纸,可导入本机 Wallpaper Engine 素材

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部