dsh-bg-carousel:讓 DSH 界面背景自動輪播圖片與視頻

前言

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
羽毛球分组比赛记分
小程序二维码

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

小夜