主题插件 · dsh-plugin · MIT 开源

Triptych 三联画主题

keyshub.top 的三种主题色调与壁纸带进 DSH Web GUI: NEXUS 赛博霓虹、COMIKET 温暖纸感、IRONCORE 机械工业。 三套主题通过标准 theme.register 注册, 将 keyshub 色板逐字映射到 DSH 的 --dsw-alias-* 设计令牌, 半透明表面让壁纸透出,形成玻璃拟态观感;与内置 Light / Dark / System 完全互通,一键切换、卸载即还原。

The Triptych

一幅画,三种景致

色板逐字取自 keyshub.top / isolo-news(web/src/config/themes.ts),壁纸与线上 Hero 背景 SHA-256 完全一致;下方预览卡已接入正式壁纸并按真实 token 色值渲染。

NEXUS
赛博霓虹 · dark
agent · 正在分析本周数据… tool · read_file ✓
好的,继续
任务已完成,正在生成报告… goal · 第 3 / 3 阶段
主色 #00f0ff 次色 #ff2d95 底色 #0a0e1a
壁纸 /dsh-theme-triptych/nexus.jpg
表面 α · base 0.35 / layer-1 0.78 / overlay 0.94
NEXUS · 赛博霓虹
暗色 · 深蓝底 + 荧光青 / 品红点缀
COMIKET
温暖纸感 · light
agent · 正在分析本周数据… tool · read_file ✓
好的,继续
任务已完成,正在生成报告… goal · 第 3 / 3 阶段
主色 #ff6b2b 次色 #3b9eff 底色 #faf8f5
壁纸 /dsh-theme-triptych/comiket.jpg
表面 α · base 0.40 / layer-1 0.82 / overlay 0.95
COMIKET · 温暖纸感
亮色 · 暖纸白底 + 活力橙 / 清透蓝
IRONCORE
机械工业 · dark
agent · 正在分析本周数据… tool · read_file ✓
好的,继续
任务已完成,正在生成报告… goal · 第 3 / 3 阶段
主色 #f0a030 次色 #4ecdc4 底色 #121418
壁纸 /dsh-theme-triptych/ironcore.jpg
表面 α · base 0.35 / layer-1 0.78 / overlay 0.94
IRONCORE · 机械工业
暗色 · 铁灰底 + 警示琥珀 / 青绿
Specs

主题规格与色板

色值与表面透明度均取自插件 THEME_SPECS 的真实定义(keyshub.top / isolo-news),壁纸为随包发布的正式背景图。

NEXUS 壁纸
NEXUS · 赛博霓虹
colorScheme: dark · 壁纸 nexus.jpg
primary#00f0ff
primaryDark#00b8c5
secondary#ff2d95
bgBase#0a0e1a
bgLayer1#151c2e
bgOverlay#1e2640
sidebar#111827
text1#e8edf5
success#00ff88
warn#ffaa00
error#ff3366
border2rgba(0,240,255,.4)
表面 α · base 0.35 / layer-1 0.78 / layer-2 0.70 / overlay 0.94 / sidebar 0.66
COMIKET 壁纸
COMIKET · 温暖纸感
colorScheme: light · 壁纸 comiket.jpg
primary#ff6b2b
primaryDark#cc5522
secondary#3b9eff
bgBase#faf8f5
bgLayer1#ffffff
bgOverlay#ffffff
sidebar#f2eee8
text1#2a2520
success#22c55e
warn#f59e0b
error#ef4444
border2rgba(0,0,0,.24)
表面 α · base 0.40 / layer-1 0.82 / layer-2 0.76 / overlay 0.95 / sidebar 0.70
IRONCORE 壁纸
IRONCORE · 机械工业
colorScheme: dark · 壁纸 ironcore.jpg
primary#f0a030
primaryDark#c08020
secondary#4ecdc4
bgBase#121418
bgLayer1#1e2128
bgOverlay#282c35
sidebar#1a1d24
text1#d8dce5
success#4ecdc4
warn#f0a030
error#e74c5e
border2rgba(240,160,48,.36)
表面 α · base 0.35 / layer-1 0.78 / layer-2 0.70 / overlay 0.94 / sidebar 0.66
Effects

安装后的真实效果

两处零侵入切换入口均为 additive 槽位(replaceRisk: none),nothing shipped is shadowed。

设置 → 通用「外观主题 / Theme」

紧跟内置 Appearance 行(order 11):三张壁纸预览卡片 + 「默认 System」卡,点击即切换,当前主题高亮描边。

侧边栏底部「主题外观」调色板

四色渐变调色板按钮(order 10),点击弹出菜单:NEXUS 赛博霓虹 / COMIKET 温暖纸感 / IRONCORE 机械工业 / 默认 System;窄栏(rail)下自动收成纯图标。

 调色板按钮图标为四色锥形渐变(真实样式)

壁纸即换肤 · 玻璃拟态

自定义令牌 --dsw-theme-wallpaper 由主题 presenter 写入 body 内联变量,切换主题即换壁纸(零 DOM 代码);表面令牌半透明(base 0.35 / layer-1 0.78 / overlay 0.94),壁纸从底层透出。

Features

为什么选择 Triptych

三色一体

NEXUS / COMIKET / IRONCORE 三套完整主题,色板逐字取自 keyshub.top / isolo-news 的 themes.ts,壁纸 SHA-256 与线上一致。

玻璃拟态壁纸

--dsw-theme-wallpaper 令牌驱动 body 壁纸,表面令牌按 alpha 分层半透明(base 0.35 / layer-1 0.78 / overlay 0.94),毛玻璃观感。

全量令牌映射

60+ 个 --dsw-alias-* / --dsw-specific-* 令牌:品牌、标签、状态、按钮、交互悬停、代码块、输入框、气泡、侧边导航,一处色板全局生效。

双入口零侵入

设置 → 通用「外观主题 / Theme」(order 11)+ 侧边栏底部调色板(order 10),additive 槽位注册,replaceRisk: none。

卸载即还原

主题、样式、槽位全部 fiber-owned:插件停用或更新时自动注销、移除、释放,不留任何残留,偏好安全复位。

MIT 开源

完整源码开放,可自由修改、二次创作与分发(壁纸版权归 keyshub.top 项目所有)。

Install

安装指南

要求:本机已安装 DSH(dsh CLI 可用),并能访问 npm registry。

🚀 方式一 · 官方安装脚本

推荐。脚本自动完成安装与 loader 插入,可传参指定 profile。

  1. 克隆或下载 dsh-theme-triptych 仓库
  2. 运行安装脚本(Linux/macOS/Git Bash 用 install.sh;Windows 用 PowerShell 执行 install.ps1)
  3. 按提示重启 DSH(默认 profile: web)
  4. 打开 Web GUI:侧边栏底部出现调色板按钮;设置 → 通用 出现「外观主题 / Theme」

🧑‍💻 方式二 · 手动三步

适合熟悉 DSH 部署结构的用户,全程无需修改客户端文件。

  1. 在 DSH 部署的 profile 目录安装包:pnpm add dsh-theme-triptych(或 npm install)
  2. 在 cordis.patch.yml 末尾追加 insert 块(见下方命令)
  3. 重启 DSH:dsh --profile web
install · 安装命令
# 方式一:官方安装脚本(推荐)
bash install/install.sh                          # Linux / macOS / Git Bash
powershell -ExecutionPolicy Bypass -File install/install.ps1

# 方式二:手动三步
cd "$DSH_HOME/profiles/web"                      # Windows: %USERPROFILE%\.dsh\profiles\web
pnpm add dsh-theme-triptych                      # 或 npm install dsh-theme-triptych

# 在 cordis.patch.yml 末尾追加:
# - insert:
#     - id: dsh-theme-triptych
#       name: dsh-theme-triptych

# 重启 DSH
dsh --profile web
verify · 验证与卸载
# 验证壁纸路由(应返回 200 与 image/jpeg)
curl -I http://127.0.0.1:3080/dsh-theme-triptych/nexus.jpg

# 卸载
cd "$DSH_HOME/profiles/web"
pnpm remove dsh-theme-triptych
# 并从 cordis.patch.yml 删除安装时追加的 insert 块
For Developers

主题插件如何工作

Triptych 是一个标准 DSH 双面 dsh.client 包: Node 半部(lib/index.js)用 webServer 提供三张壁纸路由;浏览器半部(lib/client.js)经 __ModuleLoader__.load 工厂包装, 注册主题、注入壁纸样式与切换器 UI。宿主扫描 dsh.client.inject 后自动把客户端包编入 window.__DSH_BOOT__——无需重新构建 DSH Web 产物。以下为仓库源码节选。

package.json · 双面 dsh.client 包声明
{
  "name": "dsh-theme-triptych",
  "version": "0.1.0",
  "type": "module",
  "main": "lib/index.js",
  "exports": {
    ".": { "default": "./lib/index.js" },
    "./client": { "default": "./lib/client.js" }
  },
  "dsh": {
    "client": {
      "inject": [
        "@deepseek-ai/dsh-client-runtime",
        "@deepseek-ai/dsh-client-ui-theme"
      ],
      "platform": "web"
    }
  }
}
lib/client.js · 主题注册与令牌映射(源码节选)
// 把 keyshub 色板映射到 DSH --dsw-alias-* / --dsw-specific-* 令牌
theme.register({
  id: 'nexus',
  displayName: 'NEXUS',
  colorScheme: 'dark',
  tokens: {
    /* 表面(半透明 → 壁纸透出,玻璃拟态) */
    '--dsw-alias-bg-base': hexToRgba('#0a0e1a', 0.35),
    '--dsw-alias-bg-layer-1': hexToRgba('#151c2e', 0.78),
    '--dsw-alias-bg-overlay': hexToRgba('#1e2640', 0.94),
    '--dsw-specific-sidebar-fill': hexToRgba('#111827', 0.66),
    /* 品牌 / 文字 / 状态 */
    '--dsw-alias-brand-primary': '#00f0ff',
    '--dsw-alias-label-primary': '#e8edf5',
    '--dsw-alias-state-business-primary': '#00f0ff',
    /* 壁纸(主题 presenter 写入 body 内联变量) */
    '--dsw-theme-wallpaper': "url('/dsh-theme-triptych/nexus.jpg')",
    // ... 共 60+ 个令牌
  },
})
壁纸规则 · 玻璃拟态核心 CSS
/* 主题 presenter 把活动主题令牌写入 body 内联变量后生效 */
body {
  background-image: var(--dsw-theme-wallpaper, none);
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  background-repeat: no-repeat;
}

兼容性

需要本机已安装 DSH(dsh CLI 可用)并能访问 npm registry; 切换入口仅在 Web GUI 显示(依赖 dsh.client.inject 注入的运行时与 UI 主题包)。 插件停用/更新时主题、样式与槽位自动清理,卸载即还原。壁纸图片版权归 keyshub.top 项目所有。

喜欢三联画?去 GitHub 给它一颗星 ⭐

开源项目需要社区的滋养:Star、Issue、PR,都是最好的支持。