Introduction

When using the dsh Web interface for an extended period, the background style is usually relatively fixed. If you want to put your own images or videos on the dsh application background and do not want the panel to obstruct the background too much, dsh-wallpaper-skin provides a plugin entry point: it replaces the application background with a static image or a silent looping video, while making the panel semi-transparent to reduce obstruction.

It is not a temporary style script, but a persistent plugin containing a real Cordis plugin and webserver routes. It takes effect continuously after being installed once.

Plugin Positioning

dsh-wallpaper-skin is a dsh wallpaper skin plugin maintained by ddbj-hub. Its goal is specific: to add a wallpaper background to the DeepSeek Harness (dsh) Web interface while preserving interface usability.

The plugin supports two types of backgrounds: static images and silent looping videos. A floating panel is provided in the bottom-right corner, allowing you to modify the wallpaper path directly on the settings page. It uses the MIT license. The repository does not contain wallpaper assets; you need to provide the image or video files yourself.

Core Features

Below are the verified capabilities:

  • Static Wallpaper: Supports jpg / png / webp.
  • Video Wallpaper: Supports mp4 / webm, plays in a silent loop, acts as a decoration layer, and does not consume audio.
  • Bottom-Right Floating Panel: Can open/close the wallpaper, preview, and select the currently configured wallpaper.
  • Configurable Path: Modify the path in Settings → Plugins → dsh-wallpaper-skin; changes take effect immediately.
  • Compatible with Dark/Light Mode: The panel is semi-transparent.
  • Persistent Plugin: Real Cordis plugin + webserver route; valid continuously after being installed once.

Installation and Activation

Method 1: Using the dsh plugin command

It is recommended to install it first using the dsh plugin command:

dsh plugin --profile web add github:ddbj-hub/dsh-wallpaper-skin

This step adds the plugin to the current web profile. After installation, the plugin line will appear in the profile’s cordis.patch.yml. Subsequently, restart dsh web, and the plugin will take effect.

Method 2: Manual patch

If you do not have a git environment, you can manually add it to the plugin list in <profile>/cordis.patch.yml:

- insert:
    - id: dsh-wallpaper-skin
      name: dsh-wallpaper-skin
      config:
        path: /absolute/path/to/your/wallpaper.mp4

Here, the path points to the absolute path of the local wallpaper file. Both images and videos are supported; forward slashes or backslashes are accepted. If left empty, the default background will be used.

Method 3: Local development / Internal distribution

When developing locally or distributing within a local area network, you can first clone the repository locally:

git clone https://github.com/ddbj-hub/dsh-wallpaper-skin.git <local_directory>

Then, add it to the dependencies in the profile’s package.json:

"dsh-wallpaper-skin": "file:<local_directory>"

And execute:

corepack pnpm --dir <profile> install

Here is a note: The file: dependency has content caching. After modifying the source code, you need to run pnpm remove + pnpm add to refresh; --force is ineffective.

Typical Usage

After installing and restarting dsh web, you can use it as follows:

  1. A floating panel appears in the bottom-right corner. Clicking it allows you to open/close the wallpaper, preview, and select the currently configured wallpaper, or jump to Settings → Plugins to modify the path.

  2. If you only want to configure the path, you can go directly to:

Settings → Plugins → dsh-wallpaper-skin

Fill in the wallpaper file path in the configuration item. Changes take effect immediately; no need to restart every time.

Wallpaper File Suggestions

The repository does not contain wallpaper assets; please use your own image or video files. The suggestions given in the README are:

  • Images: Recommended to be 1080p or higher, and preferably smaller than 10MB.
  • Videos: Recommended to be mp4 (H.264) or webm, silent, and recommended to be smaller than 50MB; if it is too long, please trim it yourself.
  • The path must be the absolute path of the local wallpaper file; forward slashes or backslashes are supported; if left empty, the default background will be used.

Implementation and Configuration Details

Based on the gathered information, the plugin’s package structure is quite straightforward:

dsh-wallpaper-skin/
├── package.json        # Plugin declaration: exports ./client + dsh.client { platform: web, immediately }
├── lib/
│   ├── index.js        # Host: webserver routes (info/media/config) + settings namespace
│   └── client.js       # Client: bottom-right floating panel, polls info to refresh

package.json exposes the ./client entry and declares dsh.client:

"dsh": {
  "client": {
    "platform": "web",
    "immediately": true
  },
  "bundle": {
    "patch": "./cordis.patch.yml"
  }
}

The client loading method is via:

window.__ModuleLoader__.load({ id, factory: (require) => {...} })

Inside, you can require("react"). The bundle is exposed via exports["./client"] and provided by the webserver at:

/plugins/<package_name>/client.js

Regarding the implementation of the theme, the wallpaper is hung on the main frame .pI_x6G_frame as a decoration layer, using !important to override the inline tokens of the theme presenter; the panel’s semi-transparency is controlled by CSS variables.

There is a common pitfall in reading the configuration: In Cordis 4, when reading configuration, you should use the second parameter of:

apply(ctx, config = {})

Do not read ctx.config. Otherwise, you might get the error:

cannot get property "config" without inject

Applicable Scenarios and Notes

This plugin is suitable for developers who want to replace the dsh Web interface background with their own wallpaper. It is quite suitable for local environments, internal network environments, or occasions where you want the interface to look less “default” during a demonstration.

Before use, you need to clarify one point: The plugin will run with the permissions of the current dsh process. Before installation, it is recommended to check the source code, dependencies, and license to confirm that you can accept its behavioral boundaries.

Additionally, note:

  • The license is MIT.
  • The repository does not contain wallpaper assets; please prepare your own images or videos.
  • The path configuration points to a local absolute path; if left empty, the default background will be used.
  • Local file: dependencies have content caching. After modifying the source code, you need to use pnpm remove + pnpm add to refresh; --force is ineffective.
  • When reading plugin configuration in Cordis 4, use the second parameter of apply(ctx, config = {}), do not read ctx.config.

Conclusion

dsh-wallpaper-skin solves a small but specific problem: it allows the dsh Web interface to be replaced with your own static image or silent looping video, while keeping the panel semi-transparent, the path modifiable, and the panel previewable.

Related Links:

  • GitHub: https://github.com/ddbj-hub/dsh-wallpaper-skin
  • Community Directory Page: https://www.skillhub.cn/plugins/ddbj-hub/dsh-wallpaper-skin