前言¶
DeepSeek Harness(dsh)桌面端与 Web GUI 共用一套界面主题:字体族由 ui-theme 的 CSS 变量决定,改系统默认字体或长时间盯屏换一套衬线/等宽,往往得动主题源码或手写样式,升级还容易丢。@ibo-mike/dsh-font-tuner 是在客户端注入覆盖这些变量的插件,装一次对桌面内嵌的 http://127.0.0.1:19387 与同源 Web 侧一并生效。
这是什么¶
插件由 IBO-Mike 维护,npm 包名为 @ibo-mike/dsh-font-tuner,当前版本 0.1.0,MIT 许可。定位是:在 GUI 里用 !important 覆盖宿主字体相关 CSS 变量,并提供设置卡片;不改字号(仍走 ui-theme 的 fontSize,10–22)。
它覆盖哪些变量¶
宿主把字体定义成 CSS 变量,插件跨特异性覆盖,主要涉及:
| 变量 | 影响范围 |
|---|---|
--dsw-font-family |
界面正文与大部分 markdown |
--dsw-font-prose / --dsw-font-serif |
长文正文 / 衬线标题(如 dsh-claude-style 皮肤) |
--ds-font-family-code |
代码块、编辑器、CodeMirror |
--dsw-font-mono / --dsh-font-mono |
代码 / 终端回退栈 |
代码字体链式继承:--ds-font-family-code 会传导到 markdown 代码与终端相关变量。未覆盖 --dsw-font-family-brand(品牌字),避免 logo 字形被误改。
安装与启用¶
推荐经插件管理器安装,会同步写 profile 的 package.json 依赖、dsh.profile.bundles 与 node_modules 链接。
从 GitHub 安装:
plugin_manager install_bundle → target: github:IBO-Mike/dsh-font-tuner
本地目录安装:
plugin_manager install_bundle → target: <本插件目录绝对路径>
等价手工三步:
- 在
$DSH_HOME/profiles/desktop/package.json的dependencies增加"@ibo-mike/dsh-font-tuner": "github:IBO-Mike/dsh-font-tuner",并在dsh.profile.bundles增加"@ibo-mike/dsh-font-tuner"。 - 在该目录执行
pnpm install(App 自带 pnpm:.../Resources/app/runtime/pnpm/bin/pnpm.cjs)。 - 刷新 GUI;profile 为
patchReload: live,不生效则重启 App。
本地开发可用 file:<本插件目录绝对路径> 代替 GitHub 地址。卸载:插件管理器移除 bundle,或删掉依赖与 bundles 行后重新 pnpm install。
安装前请自行阅读仓库源码与许可证;插件在 dsh 进程权限下运行,与社区目录站点无官方从属关系。
典型用法¶
打开 设置 → 插件 →「字体调整」。四个输入框默认全空,表示不注入任何覆盖,装完观感与宿主一致。
- 界面与正文:例如
"PingFang SC", "HarmonyOS Sans SC", -apple-system, sans-serif - 长文正文:留空保留皮肤衬线;填
@ui跟随界面字体 - 代码与终端:例如
"JetBrains Mono", "SF Mono", Menlo, monospace - 自定义 CSS:原样注入,用于
@font-face等
改动可即时预览;「保存」写入 localStorage['dsh-font-tuner/fonts/v1'],「恢复默认」清除本地保存并回退到 config.json 或宿主原值。空字段占位符显示宿主当前值,便于对照修改。
配置优先级:
localStorage 中非空字段 > ~/.dsh/dsh-font-tuner/config.json > 宿主原值(不覆盖)
config.json 示例:
{
"ui": "\"Shanggu Sans SC\", \"PingFang SC\", sans-serif",
"prose": "\"Shanggu Serif SC\", Georgia, serif",
"code": "\"JetBrains Mono\", \"SF Mono\", Menlo, monospace",
"custom": "@font-face { ... }"
}
改后刷新 GUI 即可;未知键丢弃,坏 JSON 在宿主日志中 warn。
外部字体文件¶
系统未安装的字体可放到 ~/.dsh/dsh-font-tuner/fonts/(目录可用环境变量 DSH_FONT_TUNER_DIR 覆盖)。宿主暴露只读路由:
GET /dsh-font-tuner/files.jsonGET /dsh-font-tuner/config.jsonGET /dsh-font-tuner/fonts/<文件名>
将 .ttf/.otf/.ttc/.woff/.woff2 放入字体目录后,卡片「可用的外部字体文件」会列出;点「插入 @font-face」生成 CSS,再把字体名写入对应字体栈并保存。
适用场景与限制¶
适合需要在不换主题的前提下统一界面、长文、代码三块字体族,或配合本地字体文件做 @font-face 的用户。
需注意:
- 字体名写错时浏览器静默回退,无报错。
- 欢迎 / 登录窗口(
welcome.css)不加载客户端插件,无法覆盖。 - 不要改
app.asar构建产物,会与 Electron 完整性校验冲突且升级失效。
更多说明与问题反馈见 GitHub 仓库,社区目录页:skillhub.cn/plugins/IBO-Mike/dsh-font-tuner。