Persistent image or MP4 wallpaper for the DSH Web profile: a wallpaper card under Settings -> General selects a local image or MP4 (up to 300 MB), tunes surface opacity and blur, compresses video locally to H.264 when ffmpeg/ffprobe are on PATH, stores media under ~/.dsh/wallpapers, and pins the Web server to port 9191 so the saved wallpaper survives restarts.
Install
# from npm (prebuilt)
dsh plugin --profile web add @frog755/dsh-wallpaper
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Frog755/dsh-wallpaper
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Persistent custom wallpaper for the DeepSeek Harness Web profile.
dsh-wallpaper adds one settings row under Settings -> General:
- choose a local image or MP4 video;
- tune surface opacity and wallpaper blur;
- remove the wallpaper at any time.
Images are resized in the browser. MP4 videos up to 300 MB are uploaded only to
the local DSH Host. When ffmpeg and ffprobe are available, they are compressed
into high-quality H.264 wallpapers with a single fast encoding pass, a target
near 18 MB, 1080p maximum resolution, and 30 fps maximum. Audio is removed
because a background video is muted. Without those optional tools, the original
MP4 is retained so video wallpapers remain usable, although they may take more
disk space. Uploads stream directly to a temporary local file rather than being
buffered in the DSH Host process. The result is stored under ~/.dsh/wallpapers, while localStorage
keeps only its local URL. Replacing or removing a video deletes its prior local
file, and startup removes old unreferenced wallpaper videos. Video wallpapers are muted, looped, and
auto-played; media is restored on the next launch. Its bundle patch also fixes
the Web server to port 9191: browser storage is scoped to protocol + host +
port, so a random port would make saved wallpaper appear to disappear after
every restart.
Requirements
Image wallpapers need no extra software. Video wallpapers also work without
extra software by retaining the original MP4. Install ffmpeg and ffprobe on
PATH for the DSH Host process to enable local compression.
Screenshots
Wallpaper applied to the Web profile (image background with adjusted surface opacity):

The wallpaper settings card under Settings -> General:

Compatibility
- Target: the DeepSeek Harness Web profile (
dsh webor the desktop build's Web UI). The settings card is rendered by the DSH client runtime and needs a modern browser withlocalStoragesupport. - The bundle patch pins the Web server to
http://127.0.0.1:9191; see Fixed origin below for why, and what to do when the port is occupied. - Image wallpapers require no external tools. Video wallpapers accept MP4 files
up to 300 MB; without
ffmpeg/ffprobeonPATHthe original file is kept as-is, otherwise it is compressed locally to H.264 (target ~18 MB, max 1080p, max 30 fps, audio removed). - Peer dependencies:
react ^18.2.0,@deepseek-ai/cordis ^4.0.1, and the DSH client packages listed inpackage.json. They are provided by the DSH host installation; do not install them manually.
Install
Install the public npm package in one command:
dsh plugin --profile web add -w @frog755/dsh-wallpaper
Restart dsh web after initial installation so the host loader reads the new
bundle patch. Open Settings -> General -> Wallpaper to choose your image.
For local development from a cloned repository, run this from the repository root instead:
dsh plugin --profile web add -w .
Changing lib/client.js later is picked up by the DSH client HMR chain;
hard-refresh the page if the browser has an older module active.
Fixed origin
The package patch pins DSH Web to http://127.0.0.1:9191. This is intentional:
localStorage isolates values by origin, including the port.
If 9191 is occupied, either stop the process holding it or change the port in
cordis.patch.yml before starting DSH. Changing the port creates a different
browser storage namespace, so the wallpaper must be selected once on that new
origin.
What is persisted
All settings remain local to the current browser profile:
dsh-wallpaper:imagedsh-wallpaper:opacitydsh-wallpaper:blur
On its first run, the plugin imports an existing dsh-skin wallpaper and its
opacity/blur values when no dsh-wallpaper value exists. This lets a profile
migrate without selecting the background again.
No image is sent to a server. Images are stored as compressed data URLs and are reduced to keep the browser storage footprint bounded.
Development
The client bundle uses DSH's window.__ModuleLoader__.load format, so no build
step is needed. It is served by dsh-client-modules; dsh-client-hmr watches
its content and sends a rebuilt notification to the browser when it changes.
Attribution
This independent wallpaper-focused plugin was derived from, and substantially reworked from, the wallpaper component of KinGao294/dsh-skin, which is licensed under MIT. The original copyright notice is retained in LICENSE.
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8639
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8639
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4515
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
ccch1mneyyy/dsh-TUI★ 4296
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 4116
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1449
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.