The design philosophy of DeepSeek Harness (DSH) is “Everything is a plugin.” On top of the default interface, developers often need a visual experience that better fits their personal or brand style. @dshp-inx/custom-ui is a UI toolkit specifically designed for DSH, aiming to address single interface styling and missing preference persistence through a theme gallery and appearance configuration tools.
Core Features¶
This plugin provides a complete set of appearance customization capabilities, mainly including:
- Theme Gallery: Built-in 23 themes, including 14 brand-adapted themes (such as Linear, GitHub, Notion, etc.) and 9 original themes.
- One-Click Switching: In the “Custom Appearance” module on the Settings page, click a swatch directly to switch themes.
- Preference Persistence: It addresses the limitation that the official
ui-theme.preferenceonly supportslight/dark/system, and supports saving and reading custom theme IDs, automatically restoring them after restart. - Global Radius Configuration: Supports three settings: -1 (follow theme), 0 (fully sharp corners), and 12 (uniform rounding); takes effect immediately after saving.
- Wallpaper Color Extraction: Based on the Material You algorithm, upload a wallpaper to extract a palette, generate tokens with MD3 export, and enable with one click.
- Full Token Mapping: Each theme includes about 110
--dsw-*tokens, covering background, borders, buttons, interaction states, text, shadows, and other UI aspects.
Installation and Enablement¶
The plugin is mounted in the DSH Web Profile layer. Run the following command to install:
cd ~/.dsh/profiles/web
pnpm add --offline "@dshp-inx/custom-ui@link:../../plugins/dsh-custom-ui"
rm -rf node_modules/@dshp-inx/custom-ui
ln -s "$HOME/.dsh/plugins/dsh-custom-ui" node_modules/@dshp-inx/custom-ui
After installation, restart DSH Web for changes to take effect.
Typical Usage¶
- Switch Themes: Go to Settings -> Custom Appearance -> Theme Gallery. Click a swatch to switch; the theme in use will be followed by a real-time badge.
- Configure Radius: Find Global Radius in Custom Appearance, choose -1, 0, or 12, and save.
- Extract Colors from Wallpaper: Find the Wallpaper Color Extraction section in Custom Appearance and upload a local wallpaper. The plugin generates 5 palettes (light/dark mode) and supports one-click enable or copying MD3 tokens.
Notes¶
- Data Source Structure: The theme data source is
lib/themes/. The host side only delivers tokens, while the client side only stores metadata (id,label,swatch, etc.). To add a theme, add files to the directory, update the aggregation index, and run the validation script. - Version Conflicts: If both the dynamic plugin version (in-session
cordis_define) and the statically mounted version exist in the system, it will cause aWEB_DUPLICATE_PROVIDERerror. Runcordis_undefinefor the dynamic version before statically mounting it. - Limitations: The official theme service settings schema only supports
light/dark/system. This plugin implements custom theme persistence by extending the Settings namespace.
Plugin address: https://github.com/Yinxe/dsh-custom-ui