dsh-theme-material:DSH 里能不能一次给八套配色,点一下就换

前言

DSH 本身是「一切皆插件」的宿主,界面主题这类东西天然是社区插件的活。问题是这类插件通常要么只给一套深色、要么要改配置文件改很久,「想换个合并看看」这一步很轻的的事,做起来很重。dsh-theme-material 解决的就是这件事:它把八套 Material / 类 Material 的配色塞进一个插件,设置页里点一张色卡就换,深浅都有,装完不用改任何配置文件。下面介绍这个插件。

它由 heinrich0505 维护,放在社区目录的「趣味换装」分类下,目录页标注星标为 0,是一个很新的小插件。它不扩展功能、不改工作流,只是把界面颜色这一层交给用户控制。

这是什么

一句话定位:给 DeepSeek Harness Web 界面提供八套预设配色主题的皮肤包,深浅各几套,在设置里切换。

它解决的问题有两个:一是默认配色不一定合每个人眼睛的习惯,二是挨个调 CSS 变量的成本太高、且容易调出读不清的低对比度组合。这个插件把这两件事变成「点一下」。

八套主题

README 给了一张表,每套列出底色、强调色和一句说明。下面照录,色值可以作为挑选依据。

主题 底色 强调色 说明
夜紫 Palenight #292D3E #80CBC4 Material 最有名的一套,靛蓝灰底、青绿强调,侧栏和正文同色
幽蓝 Ocean #0F111A #80CBC4 压到近黑的深蓝,状态色是屏幕上唯一还亮着的东西
墨灰 Darker #212121 #80CBC4 中性纯灰,不带色相,最不抢眼
素白 Lighter #FAFAFA #26A69A Material 唯一的浅色主题:冷白纸面、蓝灰字、青绿强调
奶咖 Latte #EFF1F5 #8839EF Catppuccin 的浅色:灰紫底、紫强调
青苔 Vitesse #FFFFFF #1C6B48 近乎纯白的极简底加一抹墨绿,彩度全场最低
霓光 Snazzy #FAFBFC #09A1ED 冷白底配亮青强调
灰阶 GitHub Gray #F0F0F0 #005CC5 整屏灰底配纯黑字,README 里说的加的那套

其中「灰阶 GitHub Gray」就是维护者在简介里提到的 github light gray 那一套,相比其余七套的原作者描述,这套是在 GitHub Light Gray 基础上改的 GitHub 灰版。

安装

README 给出两种方式。应用内打开「插件 → 添加插件」,填入:

github:heinrich0505/dsh-theme-material

也可以走命令行,网页端 profile 直接加:

dsh plugin --profile web add github:heinrich0505/dsh-theme-material

装好按提示刷新窗口,插件才会生效。

package.json 里的声明值得先看一眼:dsh.engines.dsh 是 >=0.2.0-rc.1 <0.3.0-0,compatibility.platform 只有 web,client.immediately 为 true。换句话说它只保证在 Web 端按插件机制加载,对应版本区间是 DSH 0.2.x 的 rc 到 0.3 之前;版本明显不在这个区间要先确认兼容性再装。

换主题

换主题不需要命令,进 设置 → 通用 → 主题,点一张色卡即可。深色主题有夜紫、幽蓝、墨灰三套,选它们时插件会把「外观」一起切到深色;其余五套浅色主题会切回浅色。之后如果你手动改「外观」,就以你的为准,插件不再接管。

选中的主题记在浏览器本地,而不是服务端。这意味着同一台机器上用不同浏览器的人可以各自用一套,互相不覆盖。

配色是怎么算出来的

这套插件值得看的地方不是八张表,而是它怎么把这么少的定义变成一整套颜色。每套主题在 src/skins.mjs 里只写十个输入:底色、卡片面、正文、注释、强调色、次强调,以及几个状态色的来源。其余按钮、输入框、边框、代码块、提示条的颜色,由 src/derive.mjs 按用途推导出来,package.json 里描述的是「一套 token 引擎按 appearance 推导 126 个 --dsw-* 颜色 token」。

推导时会保证读得清:正文对比度不低于 7:1,次要文字和按钮上的字不低于 4.5:1;达不到就把颜色往黑或往白调到最近的能满足的值。npm run verify 会把每套主题的对比度打出来,哪一对不够清楚直接标出来。

每套主题只定义它原生的那一面(深色或浅色),另一面自动补:深色主题的浅色版统一用 Material Lighter;浅色主题的深色版是中性夜色加这套主题自己的强调色。想自己做一套,照抄 src/skins.mjs 里任意一段改颜色,然后跑上面的 verify 命令验一遍即可。

适用场景与注意

适合这两类人:一是想把自己的 DSH 界面调成顺手习惯、但不想每次改 CSS 变量的人;二是需要给多套主题做对比、或者想抄它的 token 推导逻辑写自己主题的人,它的 skins.mjs + derive.mjs + verify 这条链路可以直接当参考实现。

几点必须清楚:

  1. 插件运行时以当前 DSH 进程的权限工作,装之前应先检查源码(尤其是它对 cordis.patch.yml 的 patch 和 client 的加载声明)再决定要不要启用。
  2. 许可证是 MIT,源码可以自由查看和修改。
  3. 它只做配色,不提供功能扩展,期望「装了插件 DSH 就变强」是不合适的。
  4. 版本 0.4.2,星标 0,属于刚起步的小项目,更新窗口和技术依赖要有预期。

结尾

把它当作一个干净的配色层来看比较合适:八套主题、深浅都有、点一下就换,同时它自带的 token 推导和对比度校验让「自己再做一套」这件事成本很低。目录页在 https://www.skillhub.cn/plugins/heinrich0505/dsh-theme-material,源码在 https://github.com/heinrich0505/dsh-theme-material。

需要说明的是,这个目录站是社区站点,与 DeepSeek / 幻方没有官方从属关系,不是应用商店。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜