dsh-wallpaper-skin:给 dsh Web 换一张图片/视频壁纸

前言

在 dsh Web 界面里长期使用,背景样式通常比较固定。如果你想把自己的图片、视频放到 dsh 应用背景上,并且不希望面板大面积遮住背景,dsh-wallpaper-skin 提供一个插件入口:把应用背景换成一张静态图片或一段静音循环视频,同时把面板做半透明,减少遮挡。

它不是临时样式脚本,而是持久化插件,包含真实 Cordis 插件和 webserver 路由,安装一次后持续生效。

插件定位

dsh-wallpaper-skinddbj-hub 维护的 dsh 壁纸皮肤插件。它的目标很具体:给 DeepSeek Harness(dsh)Web 界面增加壁纸背景,并保留界面可用性。

插件支持静态图片和静音循环视频两种背景,右下角提供悬浮面板,可在设置页直接修改壁纸路径。它使用 MIT 许可证,仓库里不包含壁纸素材,需要你自己提供图片或视频文件。

核心功能

下面介绍已核实的能力:

  • 静态壁纸:支持 jpg / png / webp
  • 视频壁纸:支持 mp4 / webm,静音循环播放,作为装饰层,不占音频。
  • 右下角悬浮面板:可打开/关闭壁纸、预览并选择当前配置的壁纸。
  • 路径可配置:在 Settings → Plugins → dsh-wallpaper-skin 中修改路径,改完即生效。
  • 兼容深色/浅色模式,面板半透明化。
  • 持久化插件:真实 Cordis 插件 + webserver 路由,安装一次后持续有效。

安装与启用

方式一:使用 dsh plugin 命令

推荐先用 dsh 的插件命令安装:

dsh plugin --profile web add github:ddbj-hub/dsh-wallpaper-skin

这一步会把插件加入当前 web profile。安装后,profile 的 cordis.patch.yml 里会出现插件行。随后重启 dsh web,插件生效。

方式二:手动 patch

如果没有 git 环境,也可以在 <profile>/cordis.patch.yml 的插件列表里手动加入:

- insert:
    - id: dsh-wallpaper-skin
      name: dsh-wallpaper-skin
      config:
        path: /absolute/path/to/your/wallpaper.mp4

这里的 path 指向本机壁纸文件的绝对路径,图片或视频均可,支持正斜杠或反斜杠。留空则使用默认背景。

方式三:本地开发 / 内网分发

本地开发或内网分发时,可以先把仓库克隆到本地:

git clone https://github.com/ddbj-hub/dsh-wallpaper-skin.git <本地目录>

然后在 profile 的 package.jsondependencies 里加入:

"dsh-wallpaper-skin": "file:<本地目录>"

并执行:

corepack pnpm --dir <profile> install

这里有一个注意事项:file: 依赖有内容缓存,改源码后需要执行 pnpm remove + pnpm add 刷新,--force 无效。

典型用法

安装并重启 dsh web 后,可以按下面的方式使用:

1、右下角出现悬浮面板。点击后可以打开/关闭壁纸、预览并选择当前配置的壁纸,也可以跳转 Settings → Plugins 修改路径。

2、如果你只想配置路径,可以直接进入:

Settings → Plugins → dsh-wallpaper-skin

在配置项里填入壁纸文件路径。改完即生效,不需要每次重启。

壁纸文件建议

仓库不包含壁纸素材,请使用自己的图片或视频文件。README 给出的建议是:

  • 图片:推荐 1080p 以上,文件尽量小于 10MB。
  • 视频:推荐 mp4 (H.264)webm,静音,建议小于 50MB;过长请自行裁剪。
  • path 必须是本机壁纸文件的绝对路径,支持正斜杠或反斜杠;留空则使用默认背景。

实现与配置细节

从已抓取资料看,这个插件的包结构比较直接:

dsh-wallpaper-skin/
├── package.json        # 插件声明:exports ./client + dsh.client { platform: web, immediately }
├── lib/
│   ├── index.js        # Host:webserver 路由(info/media/config)+ settings 命名空间
│   └── client.js       # Client:右下角悬浮面板,轮询 info 刷新

package.json 中暴露了 ./client 入口,并且声明了 dsh.client

"dsh": {
  "client": {
    "platform": "web",
    "immediately": true
  },
  "bundle": {
    "patch": "./cordis.patch.yml"
  }
}

客户端加载方式是通过:

window.__ModuleLoader__.load({ id, factory: (require) => {...} })

其中可以 require("react")。bundle 通过 exports["./client"] 暴露,由 webserver 在:

/plugins/<包名>/client.js

提供。

主题实现上,壁纸作为装饰层挂在主框架 .pI_x6G_frame 上,并使用 !important 盖过主题 presenter 的内联 token;面板半透明由 CSS 变量控制。

配置读取有一个容易踩的点:在 Cordis 4 里读配置,应使用:

apply(ctx, config = {})

的第二个参数,不要读 ctx.config。否则可能报:

cannot get property "config" without inject

适用场景与注意

这个插件适合想把 dsh Web 界面背景换成自己壁纸的开发者。它比较适合本地环境、内网环境,或者希望在演示时让界面看起来不那么默认的场合。

使用前需要明确一点:插件会以当前 dsh 进程权限运行。安装前建议检查源码、依赖和许可证,确认自己可接受其行为边界。

另外注意:

  • 许可证为 MIT。
  • 仓库不含壁纸素材,请自备图片或视频。
  • path 配置指向本机绝对路径,留空则使用默认背景。
  • 本地 file: 依赖有内容缓存,改源码后需要用 pnpm remove + pnpm add 刷新,--force 无效。
  • Cordis 4 中读取插件配置时,使用 apply(ctx, config = {}) 的第二个参数,不要读 ctx.config

结尾

dsh-wallpaper-skin 解决的是一个很小但具体的问题:让 dsh Web 界面可以换成你自己的静态图片或静音循环视频,同时保持面板半透明、路径可改、面板可预览。

相关链接:

  • GitHub:https://github.com/ddbj-hub/dsh-wallpaper-skin
  • 社区目录页:https://www.skillhub.cn/plugins/ddbj-hub/dsh-wallpaper-skin
羽毛球分组比赛记分
小程序二维码

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

Xiaoye