DSH 插件化架構允許開發者擴展 WebUI。若需自定義壁紙或增加視覺裝飾層,直接修改源碼成本較高。本地自建插件 dsh-liya-skin-plugin 提供了一套解決方案:既支持目錄化的壁紙管理(含透明度調節與狀態持久化),也內置了自繪 SVG 的“莉婭星月”裝飾層。
核心功能¶
壁紙管理¶
插件通過 wallpapers/ 目錄管理壁紙。支持 png、jpg、webp、gif、svg 格式。WebUI 提供縮略圖網格,點擊即可動態切換壁紙,無需重啓進程。
透明度與持久化¶
提供 0-100 的透明度滑條(默認 100),該滑條僅作用於壁紙圖片本身(body::before 的 opacity)。圖片選擇與透明度設置由 host 層持久化,保存在 $DSH_HOME/liya-wallpaper-state.json。刷新 WebUI 後狀態自動恢復。
莉婭星月裝飾層¶
這是一個自繪 SVG 裝飾層,包含三部分:
1. 頂部星帶:跟隨側欄寬度移動。
2. 底部星軌:響應對話狀態,對話激活時 (data-liya-chat-active) 星軌會退下。
3. 標題欄徽標:在標題欄顯示“莉婭”彎月標誌。
裝飾層支持在設置頁獨立開關,卸載時通過 effect 銷燬器完整還原 CSS、樣式變量與 DOM 節點,不留殘留。
配置方式¶
配置項(皮膚層總開關及分項)通過“設置 → 插件 → 本插件”入口管理,保存即時生效。
安裝¶
使用 DSH CLI 安裝插件。請將 <dsh> 替換爲實際的 CLI 調用方式,將 <profile> 替換爲當前使用的配置文件名,<本插件目錄> 替換爲插件所在路徑。
<dsh> plugin --profile <profile> add <本插件目錄>
使用步驟¶
- 準備素材:從倉庫克隆或下載插件源碼。插件目錄下無預設圖片,需自行準備圖片並放入
wallpapers/目錄。 - 刷新列表:進入 WebUI 的“設置 → 壁紙”頁面,點擊刷新按鈕(🔄),縮略圖列表會重新加載。
- 選擇壁紙:在縮略圖中點擊選擇,或拖動透明度滑條。
- 配置裝飾:進入“設置 → 插件 → 本插件”,開啓/關閉星帶、星軌或標題欄徽標。
注意事項¶
- 素材自備:倉庫不包含任何壁紙圖片,需用戶自行準備。
- 透明度限制:半透明層固定 alpha 爲 0.6,某些深色的系統面板可能無法透出背景。
- 安全防護:圖片服務接口
/liya-wallpaper/file/<name>對文件名進行了 basename 和 startsWith 校驗,防止路徑穿越攻擊。 - 交互遮擋:裝飾層設置了
pointer-events: none以確保不阻擋交互。但由於 z-index 爲 20,在少數全屏浮層下可能會被遮擋。 - 許可協議:代碼部分採用 MIT 許可證;文檔部分採用 CC BY 4.0 許可證。