# dsh-wallpaper

[English](README.md) | [简体中文](README.zh-CN.md)

为 DeepSeek Harness Web 提供持久化自定义背景图的插件。

`dsh-wallpaper` 会在 **设置 -> 通用** 中增加一个背景图设置项，可用于：

- 选择本地图片或 MP4 视频作为背景；
- 调整界面表层透明度和背景模糊度；
- 随时移除背景图。

图片会在浏览器本地压缩。最大 300 MB 的 MP4 视频仅上传给本机运行的 DSH Host。
检测到本机的 `ffmpeg` 与 `ffprobe` 时，视频会以单遍快速编码压缩为高质量 H.264
背景视频：目标约 18 MB、最高 1080p、最高 30fps。背景视频会静音，因此会移除音轨。
未检测到这些可选工具时，插件会直接保留原始 MP4，使视频背景仍可使用，但可能占用
更多磁盘空间。上传内容会直接流式写入本地临时文件，不会完整缓存在 DSH Host 内存中。
结果保存在 `~/.dsh/wallpapers`，`localStorage` 只保存本机媒体 URL。替换或移除视频时会删除旧文件，插件启动时也会清理未被当前背景引用的历史视频。视频背景会静音、循环和自动播放，重启后自动恢复。插件的 bundle patch 还会把 Web 服务固定到 `9191`
端口。浏览器存储按“协议 + 域名 + 端口”隔离；随机端口会导致重启后看似丢失背景
设置。

## 前置条件

图片背景不需要额外软件。视频背景在未安装额外软件时也可直接保存原始 MP4 使用。
若 DSH Host 所在设备安装了 `ffmpeg` 与 `ffprobe`，且二者可从 `PATH` 调用，则会启用本机压缩。

## 安装

从 npm 直接一行安装：

```powershell
dsh plugin --profile web add -w @frog755/dsh-wallpaper
```

首次安装后，重启 `dsh web` 或 DeepSeek Harness 桌面端，使 Host 重新读取 bundle
patch。随后打开 **设置 -> 通用 -> 背景图片** 选择图片。

如需从克隆的仓库本地开发，请在仓库根目录执行：

```powershell
dsh plugin --profile web add -w .
```

之后修改 `lib/client.js` 时，DSH 的 client HMR 链会尝试加载新 bundle；若浏览器
仍使用旧模块，请硬刷新页面。

## 固定地址

插件会把 DSH Web 固定到 `http://127.0.0.1:9191`。这是有意设计：`localStorage`
按 origin 隔离，而端口属于 origin 的一部分。

如果 `9191` 已被占用，请先停止占用端口的进程，或在启动 DSH 前修改
`cordis.patch.yml` 中的端口。换端口后会使用新的浏览器存储命名空间，因此需要在
新地址上重新选择一次背景图。

## 本地保存的数据

所有数据只保存在当前浏览器 profile 中：

- `dsh-wallpaper:image`
- `dsh-wallpaper:opacity`
- `dsh-wallpaper:blur`

首次运行时，如果没有 `dsh-wallpaper` 自己的保存值，插件会自动迁移旧
`dsh-skin` 插件保存的背景图、透明度和模糊度，无需重新选择背景。

图片不会上传到服务器。它们以压缩 data URL 保存在浏览器中，并会缩放以控制
本地存储占用。

## 开发

客户端 bundle 使用 DSH 的 `window.__ModuleLoader__.load` 格式，因此无需构建步骤。
它由 `dsh-client-modules` 提供，并由 `dsh-client-hmr` 监视内容变化后通知浏览器。

## 署名

本独立背景图插件源自并大幅重构自
[KinGao294/dsh-skin](https://github.com/KinGao294/dsh-skin) 的背景图组件，遵循 MIT
许可。原始版权声明保留在 [LICENSE](LICENSE) 中。
