dsh-bg-carousel: Automatically carousel images and videos in the DSH interface background.

前言

DSH 的界面背景默认是固定的。想在开发工作台里放几张自己的图片、或者一段视频循环播放,通常要手改主题文件和 CSS,改完顺序、间隔、透明度也都没处调。dsh-bg-carousel 把这件事做成了一个标准插件:把媒体文件丢进一个目录,界面背景就能自动轮换,目录、顺序、间隔、透明度都在面板里配置。

下面介绍这个插件的定位、核心功能、安装步骤和典型用法。

这是什么

dsh-bg-carousel 是一个标准 dsh bundle 插件,由 Jonah-Wu23 维护,当前版本 v0.3.0,npm 包名 @jonahwu/dsh-bg-carousel,代码采用 MIT License。一句话定位:图片与视频自动轮换的 DeepSeek Harness 界面背景。

它适配 dsh v0.1.2-rc.1 的 web 界面,架构分两端:

  • 宿主端扫描媒体目录,通过 webServer 提供媒体路由与 API;
  • 客户端在侧边栏底部注册「背景」入口,负责控制面板与背景渲染。

核心功能

图片与视频背景

图片支持 JPEG、PNG、WebP、SVG、GIF,按 body 背景渲染,表面叠一层压暗色,随亮暗主题自动取值。视频支持 MP4、WebM、MOV、HLS、FLV,静音自动播放,以 cover 方式铺满视口。

格式兼容性有环境差异:HLS 由 Safari 原生支持;FLV 需要 MSE 类扩展(如 flv.js);Chromium 环境下这两类文件自动跳过,轮播继续。MOV 能否播放取决于容器内编码,H.264 通常可以播放。

混合轮换

图片和视频在同一个队列里轮换,推进规则如下:

  1. 间隔短于视频时长:截断当前视频并切换下一个;
  2. 间隔长于视频时长:视频播完后立即切换;
  3. 视频卡死:由定时器兜底推进。

环境限制自动播放时,视频停在首帧,定时器照常推进;无法解码的文件自动跳过并在浏览器控制台记录原因;全部媒体失败时暂停轮播并在面板提示。

顺序与透明度

缩略图支持拖拽排序,顺序立即生效并持久化到服务端设置,新增文件按字母序排在末尾。「面板不透明」滑杆实时调整界面 token 透明度,对图片和视频同样生效。

目录与缩略图

媒体目录可以在面板内手输,也可以点「选择」按钮调起宿主原生目录选择器(Windows 为系统文件夹对话框),支持绝对路径与工作区相对路径。「打开文件夹」由宿主在系统文件管理器中打开当前媒体目录,不依赖浏览器 file:// 链接。目录不可用时回退默认目录(工作区 backgrounds)并提示,轮播照常。

大图在宿主端按 320px 生成 JPEG 缩略图缓存(Windows 走 PowerShell System.Drawing),缓存目录在 ~/.dsh/bg-carousel/thumbs/;缩略图懒加载 + 异步解码,上百张高清图面板也不卡。

安装与启用

插件需要 webServer 与 client UI,建议安装到 web profile(或任何包含 @deepseek-ai/dsh-web-app 的 profile);装到其他 profile 时插件静默待命,不影响启动。「选择目录」与「打开文件夹」依赖 dsh v0.1.2-rc.1 组合的 directoryPicker / openWorkspacePath 能力,插件不兼容 dsh v0.1.1-rc2 与 v0.1.2-alpha.1 之前的版本,安装前先确认 dsh 版本。

以下安装命令需要 pnpm 在 PATH 中,三种方式任选其一,每次只执行一条。

git 源安装:

dsh plugin --profile web add github:Jonah-Wu23/dsh-bg-carousel

或者直接装 GitHub Release 里的 tgz:

dsh plugin --profile web add https://github.com/Jonah-Wu23/dsh-bg-carousel/releases/download/v0.3.0/jonahwu-dsh-bg-carousel-0.3.0.tgz

也可以用本地路径,<...> 处填 tgz 文件路径或插件目录路径:

dsh plugin --profile web add <本地 tgz 或目录路径>

安装后重启 dsh 生效。卸载执行:

dsh plugin --profile web remove @jonahwu/dsh-bg-carousel

想从源码构建,需要一份 dsh 源码 checkout,PATH 中有 bash 与 Node.js,然后执行:

DSH_CHECKOUT=<dsh 源码 checkout> bash scripts/build.sh

脚本使用 checkout 内的 tsc 编译宿主端,tsdown 打包 client。运行时零新增依赖:client 只 require 平台种子模块 react,未引入 hls.js 或 flv.js,环境不支持的格式自动跳过。

典型用法

1、把图片和视频复制到媒体目录。默认是工作区的 backgrounds 目录,可以在面板里修改。注意大小限制:图片上限 64 MiB、视频 256 MiB。

2、重启 dsh 后,点击侧边栏底部的「背景」入口打开控制面板,面板会自动加载当前目录的媒体清单。

3、点击缩略图切换背景;拖拽缩略图排序;勾选「自动轮播」按设定间隔循环(intervalMs 取值 1500–120000 毫秒);拖动「面板不透明」滑杆调整界面透明度(panelOpacity 取值 0.1–0.95)。

服务端 API

做二次开发或排查问题时,宿主在 {workspaceRoot} 下挂载了这些媒体路由与 API:

方法 路径 说明
GET /dsh-bg/img/<name> 按文件名返回媒体字节,缓存 1 小时,图片上限 64 MiB、视频 256 MiB
GET /dsh-bg/thumb/<name> 返回 320px JPEG 缩略图,未命中先回退原图字节并后台补生成
GET /dsh-bg/api/list 返回 imagesvideosmedia(混合清单)、dirdirError 与设置
POST /dsh-bg/api/image 按文件名返回 base64 data URL,限制 12 MiB,兼容旧版 client
POST /dsh-bg/api/settings 更新 intervalMs(1500–120000)、enabledpanelOpacity(0.1–0.95)、mediaDirorder

media{name, kind: 'image' | 'video'}[],已按 order 排序;dirError 非空表示配置目录不可用、已回退默认目录。

适用场景与注意

适合的人群:想在 DSH 工作台放个人化背景又不想手改主题文件的开发者;有一批壁纸想按顺序或定时间隔轮换的;想在背景放一段循环视频的。

使用前注意:

  • 插件以当前 dsh 进程权限运行,会读取媒体目录、写入缩略图缓存与服务端设置。安装前建议检查源码与许可证(MIT),确认无误再装;
  • 插件基于 dsh v0.1.2-rc.1 开发,旧版本 dsh 下「选择目录」与「打开文件夹」不可用,甚至无法正常安装;
  • 视频格式的可播性取决于浏览器环境,Chromium 下 HLS 与 FLV 会被自动跳过。

结尾

dsh-bg-carousel 用一个媒体目录加一个控制面板,把 DSH 界面背景的替换、图片视频混合轮播、排序和透明度这几件事串了起来,轮换推进和格式兼容的处理也比较细。装好插件、把文件复制进目录就能用。

  • 社区插件目录(独立站点):https://www.skillhub.cn/plugins/Jonah-Wu23/dsh-bg-carousel
  • GitHub 仓库:https://github.com/Jonah-Wu23/dsh-bg-carousel
羽毛球分组比赛记分
小程序二维码

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

Xiaoye