DSH is built around the philosophy of “everything is a plugin.” When developing or using DSH, customizing the UI appearance is a common need. Traditional skinning approaches often require modifying source code directly or manually managing style files, which can introduce side effects and is hard to maintain. EAC-skin-loader provides a standardized loader, bundles 13 skins, supports convention-based migration, and aims to make the skin-switching process more controllable and recoverable.
Plugin Positioning¶
EAC-skin-loader is a UI skin loader maintained by DSH-EAC. It follows the weakly constrained convention dsh.ecosystem.ui-skin-loader/v1 as a reference implementation. The plugin includes one loader core and 13 skin artifacts: 2 built-in examples (original to this repository) and 11 convention-aligned migrated skins.
Its core value lies in the zero-side-effect loading mechanism. When inactive, the plugin only registers metadata and produces no visual or behavioral side effects. Only after the user manually activates it does the appearance change; when disabled, it shuts down completely, ensuring consistency with the state as if it were not installed.
Core Features¶
The loader provides the following capabilities:
- Skin discovery and registration: Automatically scans and registers installed skins.
- Global mutually exclusive switching: Only one skin can be active at a time.
- Persistence and recovery across restarts: Supports automatically restoring the currently selected skin across restarts.
- Fault isolation: Automatically rolls back if activation fails; if disabling times out, it accurately marks suspected residue.
- Cross-tab synchronization: Ensures appearance consistency in multi-tab environments.
- Settings console: Provides a visual skin-switching console in DSH settings (supports adaptive light and dark themes).
Compatibility and Requirements¶
- Supported host:
@deepseek-ai/dsh0.1.7-rc.2or0.2.0-rc.2. - Runtime: Node.js >= 24.
- Current version: 1.2.0.
Installation and Enablement¶
Recommended Method: Git Installation¶
This is the most efficient installation method. The loader is installed along with the embedded artifacts in the repository and requires no local build.
- Run the installation command:
dsh plugin --profile web add github:DSH-EAC/EAC-skin-loader
-
After installation, the loader starts automatically. It checks based on
packages/loader/skin-manifest.jsonand auto-completes missing skins. This process does not overwrite the skin you are currently using, nor does it change the appearance. -
Open Settings → Skin. In the Skin Auto-Completion section at the bottom, you can check the installation status of each package (ready / installing / failed / another version exists / will no longer be auto-completed).
Build Installation Packages¶
If you need offline installation or want to control the build process:
- Clone the repository and install dependencies:
pnpm install
pnpm build
- Run the packing command in the repository root:
mkdir -p dist
npm pack --pack-destination dist
-
Under
packages/skins, runnpm packfor each skin directory and move the generated artifacts to thedistdirectory. -
Use
dsh plugin addto install the artifacts one by one (loader first, then skins):
dsh plugin --profile web add <dist>/dsh-eac-ui-skin-loader-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-aurora-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-inkwash-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-trading-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-dragon-heir-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-whale-song-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-blue-fantasy-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-maid-atelier-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-miku-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-minecraft-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-qq98-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-ths-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-xp-1.2.0.tgz
Usage¶
After installation, restart DSH:
- Open Settings → Skin and enter the skin console.
- Click the Activate button on the card. The system then applies the skin and ensures global mutual exclusion (the previously active skin is removed).
- In the console, select Auto-Recovery Across Restarts. The current appearance is preserved the next time DSH starts.
- If an error occurs during activation, the original error message is displayed on the card. If an anomaly is detected while disabling, it is accurately marked as “suspected residue”.
- Skins with custom settings (such as “Aurora Night”) expose a dedicated settings section after activation, available under Settings → Aurora Night.
Skin List¶
The plugin bundles 13 skins, including 2 built-in examples and 11 convention-aligned migrated skins. The license boundary is as follows: the engineering skeleton is MIT, while the visual content is distributed under its upstream license.
| Skin | Package | Skin ID | License | Source |
|---|---|---|---|---|
| Aurora Night | @dsh-eac/skin-aurora |
dsh-eac.skin.aurora |
MIT | Built-in example (original to this repository, with a custom settings pane) |
| Ink and Blue Smoke | @dsh-eac/skin-inkwash |
dsh-eac.skin.inkwash |
MIT | Built-in example (original to this repository, no settings pane) |
| Trading Terminal | @dsh-eac/skin-trading |
dsh-eac.skin.trading |
MIT AND BSD-3-Clause | dsh-web-ui |
| Dragon Heir | @dsh-eac/skin-dragon-heir |
dsh-eac.skin.dragon-heir |
MIT AND BSD-3-Clause | dsh-web-ui |
| Whale Song | @dsh-eac/skin-whale-song |
dsh-eac.skin.whale-song |
MIT AND BSD-3-Clause | dsh-web-ui |
| Blue Fantasy | @dsh-eac/skin-blue-fantasy |
dsh-eac.skin.blue-fantasy |
MIT AND BSD-3-Clause | dsh-web-ui |
| Deep Sea Maid Atelier | @dsh-eac/skin-maid-atelier |
dsh-eac.skin.maid-atelier |
MIT AND CC-BY-NC-SA-4.0 | dsh-external |
| Hatsune Miku · Vocaloid | @dsh-eac/skin-miku |
dsh-eac.skin.miku |
MIT AND BSD-3-Clause | dsh-web-ui |
| Minecraft Block World | @dsh-eac/skin-minecraft |
dsh-eac.skin.minecraft |
MIT AND BSD-3-Clause | dsh-web-ui |
| QQ2008 Retro Edition | @dsh-eac/skin-qq98 |
dsh-eac.skin.qq98 |
MIT AND BSD-3-Clause | dsh-web-ui |
| Tonghuashun Style | @dsh-eac/skin-ths |
dsh-eac.skin.ths |
MIT AND BSD-3-Clause | dsh-web-ui |
| Windows XP (Luna) | @dsh-eac/skin-xp |
dsh-eac.skin.xp |
MIT AND BSD-3-Clause | dsh-web-ui |
| Whalegirl Day/Night Workshop | @dsh-eac/skin-deep-whale-day-night |
dsh-eac.skin.deep-whale-day-night |
MIT AND CC-BY-NC-SA-4.0 | GGBond2424648901 |
Notes¶
- Dependencies: The skin artifact manifest points to GitHub Release assets. If installation occurs before the Release is published, the auto-completion status accurately displays the failure reason (network/404), but the loader itself is unaffected.
- License Check: The plugin skeleton is MIT, while skin content follows upstream licenses. Please check the source code and licenses before use.
- Not Included: Some feature plugins (such as audio notifications and diagnostic persistence) are not pure skin migrations and are not included in this release.
With EAC-skin-loader, developers can manage UI skins in DSH in a standardized way, enjoying the convenience brought by conventions and a safe, zero-side-effect experience. Project address: GitHub.