dsh-wallpaper
Manifest validDSH web plugin: change the whole-app background image. Curated anime wallpaper library, online search, local import, right-click actions.
dsh-wallpaper
A background-image plugin for the DeepSeek Harness (DSH) Web GUI.
Adds a 背景图片 / Background image row right below the Appearance (dark mode) row in Settings → General. Click it to open a centred picker dialog: choose from your own wallpaper library, search online (wallhaven, SFW anime only), import images from disk — and right-click any card to set it as the background or open the original image page.
No bundled wallpaper images. All code is MIT licensed; artwork is not. The shipped gallery is empty by design — see Assets policy.
Features
- Whole-app background — takes over the backdrop layer: neutralises any existing skin background image, makes the app chrome translucent via a tunable content veil, and paints the wallpaper on a fixed layer behind everything.
- Sits exactly below Dark Mode — registers into the same
settings.general.itemslot as the official appearance row withorder: 11(theirs is 10). No forking, no patching official code. - Centred picker dialog — opened from the settings row, rendered through a React portal into
document.body; Esc or click-outside closes it. - Local library —
<plugin>/assets/full/*+catalog.json; read per request, so drop in files anytime without restarting. - Online search — the host proxies the wallhaven v1 API (categories 010, purity 100 = SFW anime only). Picked results are downloaded into your local library, so they keep working offline.
- Local import — file picker AND drag-and-drop; imported files are stored host-side in
<plugin>/user/and survive browser storage clears. - Right-click menu — set as background / open the original image page / copy URL / save to library (online results) / delete (imports only; built-ins are protected).
- Display controls — fill mode (cover/contain/stretch/center/tile), blur, scrim, content veil; scrim colour follows the light/dark theme. When a character-art skin (e.g. maid-atelier) is detected, an extra
hide skin artcheckbox appears. - Clean lifecycle — every DOM/CSS write is restored by the Cordis effect disposer; uninstalling leaves no residue.
Requirements
- DSH web build 0.1.1-rc.2 (tested). Uses
slots.inject('settings.general.item')andwebServer.register({ kind:'prefix', path:'/dsh-wallpaper' }). - Node.js ≥ 20.
Install
Not published to npm — install from this repository. (The npm package named
dsh-wallpaperis an unrelated project: a Wallpaper Engine integration.)
git clone https://github.com/dugujun3-cloud/dsh-wallpaper.git
cd dsh-wallpaper
./install.sh # symlink into ~/.dsh/profiles/web/node_modules + cordis.patch.yml entry (backs up first)
kill $(pgrep -f 'dsh/lib/bin.js web') # launchd KeepAlive restarts it within ~10 s
Then refresh http://127.0.0.1:3080 → Settings → General: the 背景图片 row sits directly below the Appearance row.
Uninstall:
./uninstall.sh
kill $(pgrep -f 'dsh/lib/bin.js web')
Both scripts are idempotent and back up cordis.patch.yml before touching it.
Assets policy
The public build ships no wallpaper images. Bundling third-party fan art (wallhaven / safebooru / konachan) would violate the artists' rights. Instead:
-
Build your own library from the Wallhaven API:
python3 make-assets.py # starter set (3 themes x 4) python3 make-assets.py --query 'sakura anime' --query 'cyberpunk city' --per-theme 8This writes
assets/catalog.json+assets/full/+assets/thumb/; the dialog picks them up on next load (catalog is read per request, no restart needed). -
Or use in-app search / import — every online result you pick is saved locally with its source page, so you can always right-click
open image linkto credit the artist.
assets/ image files are gitignored; make-assets.py records each item's page (original post) and source links for attribution.
HTTP API
| Method | Path | Purpose |
|---|---|---|
| GET | /dsh-wallpaper/catalog | built-in library + user imports + prefs |
| GET | /dsh-wallpaper/assets/<path> | built-in images (traversal hardened) |
| GET | /dsh-wallpaper/user/<name> | imported images |
| GET/POST | /dsh-wallpaper/prefs | preference read/write |
| POST | /dsh-wallpaper/upload?name= | upload an image (max 32 MB) |
| POST | /dsh-wallpaper/import-url | download a remote image into the local library |
| POST | /dsh-wallpaper/delete | delete an imported image (built-ins protected) |
| GET | /dsh-wallpaper/search?q= | online search (wallhaven, SFW anime) |
Project layout
lib/index.js host plugin: routes, catalog/upload/delete, wallhaven proxy, prefs persistence
lib/client.js browser plugin: settings row, portal dialog, grid + search + context menu, backdrop engine
assets/ your wallpaper library (images gitignored; see Assets policy)
user/ your imports (gitignored)
make-assets.py regenerate assets/catalog.json from the Wallhaven API
test-host.mjs 16 host-route tests (incl. traversal + built-in delete protection)
test-client.mjs 20 client wiring tests (slot order 11, stylesheet/canvas injection, full dispose)
install.sh idempotent live-profile install
uninstall.sh reversible uninstall (byte-level round-trip verified)
Tests
node test-host.mjs && node test-client.mjs # 36 checks, all green
Disclaimer
- The wallhaven proxy hits the public wallhaven.cc API without a key. Convenience wrapper, not an affiliated service.
- Only the SFW anime category (
categories=010,purity=100) is queried server-side; the client never talks to the upstream directly. - Unofficial community plugin. Not affiliated with, endorsed by, or supported by DeepSeek.
- The plugin targets
settings.general.itemandwebServer.register({ kind: 'prefix' }); a DSH version that changes those may need a small update.
License
MIT © 2026 dugujun3-cloud (独孤菌). Artwork excluded — see Assets policy.
Comments
Loading…
From the same category
by ccch1mneyyy
DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol
★ 4.6k
↓ 11.6k/wk
MIT
TypeScript
Oct 14, 2026
dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tuiby strukto-ai
The World's First Virtual Terminal for AI Agents
★ 3.7k
↓ 374/wk
Apache-2.0
TypeScript
Oct 14, 2026
dsh plugin --profile agent add @struktoai/mirage-dshby bowenliang123
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,
★ 2.1k
↓ 44k/wk
Apache-2.0
TypeScript
Oct 13, 2026
dsh plugin --profile web add dsh-contextby huiliyi37
官方 DeepSeek Harness 的交互式终端 UI 插件:自研 ANSI 极简交互渲染、流式 Markdown/工具卡、16+ 主题、slash 命令与选择器、输入历史与本地偏好持久化、LSP 诊断、memory记忆,很丝滑的开发体验。
★ 285
↓ 486/wk
Apache-2.0
TypeScript
Sep 30, 2026
dsh plugin --profile terminal add @huiliyi37/dsh-tianshu-tuiby Hilbert-beinghappy
面向 DeepSeek Harness 的 Claude Code 风格终端界面,支持 Windows、macOS 与 Linux,兼容透明终端、VS Code 主题和自定义配色。
★ 196
↓ 108/wk
MIT
TypeScript
Oct 13, 2026
dsh plugin --profile web add seekttyby T-Auto
deepseek-harness Plugin Access and Implementation Standards / deepseek-harness交互生态插件规范与实施标准
★ 83
MIT
JavaScript
Oct 10, 2026