<h1 align="center">dsh-global-font</h1>
<p align="center">DSH 全局字体插件:设置页提供字体选择面板(预设 + 自定义 + 预览),选择立即全局生效(含代码块与插件界面)并持久保存。</p>
<p align="center"><a href="https://github.com/ErrorLst/dsh-global-font">github.com/ErrorLst/dsh-global-font</a></p>
功能
| 能力 | 说明 |
|---|---|
| 设置页「字体」面板 | 侧栏设置 → 字体:UI 字体 / 代码字体两个下拉选择器 |
| 预设字体 | 系统默认、system-ui、霞鹜文楷、思源黑体、微软雅黑、衬线;代码字体含 JetBrains Mono / Cascadia Code / Fira Code / Consolas |
| 自定义字体栈 | 下拉选「自定义字体…」,输入完整 CSS font-family 栈 |
| 实时预览 | 选择后立即应用到整个 UI(含 markdown、代码块、插件界面),面板内同步预览两种字体 |
| 还原默认 | 一键恢复 DSH 原始字体 |
| 持久保存 | 选择保存在本浏览器(localStorage),刷新 / 重启后保持 |
原理
DSH 主题把字体收敛在两个 CSS 变量(@deepseek-ai/dsh-client-ui-theme):
| 变量 | 作用 |
|---|---|
--dsw-font-family | UI 字体(body、按钮、输入框、markdown、插件 UI) |
--ds-font-family-code | 代码字体(行内代码、代码块、终端、JSON 树) |
client half 注入一条 <style>,以 !important 覆盖这两个变量并强制 body/button/input/select/textarea 继承——宿主 UI 和使用主题变量/继承字体的插件 UI 都会统一换字体。
安装
dsh plugin --profile web add github:ErrorLst/dsh-global-font本包声明了 dsh.bundle.patch:dsh plugin add 成功后 reconcile 会自动把它登记进 profile 的 bundle 层(dsh.profile.bundles),无需手动编辑配置;重启 dsh web 即生效。
本地开发安装(同一目录即本仓库 checkout):dsh plugin --profile web add <本仓库路径>。
使用
1. 重启 dsh web 后刷新 GUI 页面(新 client bundle 自动生效)。 2. 打开侧栏 设置 → 字体,选择或自定义字体;选择立即全局生效并保存。 3. 想恢复默认,点「还原默认」即可。
配置与持久化
- 面板选择:保存在浏览器
localStorage(keydsh-global-font.config),刷新/重启保持;换浏览器需重新选择。 - 服务器基线:包内
config.json(uiFont/codeFont两个 CSS font-family 栈)由 Node half 路由/api/dsh-global-font/config下发,作为未选择时的默认值;当前内容即 DSH 原始字体栈,可改为你偏好的默认。 - 改
config.json后无需重启(路由每次请求读磁盘),刷新页面生效。
还原 / 卸载
1. 设置页「还原默认」或浏览器控制台执行 localStorage.removeItem('dsh-global-font.config')。 2. 完全卸载:dsh plugin --profile web remove @dsh-external/dsh-global-font(仅旧版本 dsh 才需手动删除 profile 的 insert 行)。
已知边界
- 插件若在具体元素上硬编码
font-family(如内联样式),不会被强制覆盖;绝大多数插件 UI 走继承或主题变量,均在覆盖范围内。 - 持久化是浏览器级的(localStorage),不跨浏览器同步;服务端只提供默认基线。
插件管理
已装插件用 plugin-registry 的薄控制台管理(浏览器面板):管理 profile 插件安装态(bundle 层栈 + insert 行 + 启停),无需手改配置。安装:dsh plugin --profile web add <plugin-registry>/packages/plugin/console