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 许可证。