dsh-font-settings:为 DSH 通用设置提供可搜索的字体选择器

前言

DeepSeek Harness(DSH)的 Web 界面在 Settings → General 里提供文本、代码、终端三类字体配置。默认交互是让你凭记忆输入逗号分隔的字体族名,既容易拼错,也很难在改之前「看见」候选长什么样。若你经常换字体、或在多台机器上对齐阅读体验,这种纯文本字段会拖慢调整节奏。

下面介绍社区插件 dsh-font-settings(维护者 YiQiuAcc):它在同一设置页用可搜索的下拉选择器替换内置字体行,并在列表里用对应字体绘制每一行,便于按外观挑选。

这是什么

dsh-font-settings 是一个 DSH Web 插件(profile bundle),定位是替换 Settings → General 中原有的字体相关设置,改为带搜索的字体选择器;文本、代码、终端三类角色各自独立设置,并可按需列出本机已安装的字体。

插件不自带存储与样式表,读写均通过 Harness 的 theme 服务(ctx.theme),与内置字体设置共用同一套持久化与首屏注入逻辑。

核心功能

可搜索的字体与字号

  • 三类角色:正文(text)、代码(code)、终端(terminal)各有字体选择器;每种角色旁还有对应的字号控件。
  • 搜索与键盘:聚焦或输入打开列表;↑/↓ 循环移动,Enter 应用,Escape 取消,点击外部关闭。
  • 按外观识别:列表中每一行用该字体族绘制,不必只靠名称辨认。
  • 仍支持自由输入:不在列表中的名称可直接键入;Harness 会规范化(族名加引号、通用族保持裸名)并写入字段。
  • 系统默认:每个列表的第一项用于一键清除覆盖,回到系统默认。

本机字体目录

通过按钮可尝试加载当前机器已安装的字体(Chromium 系浏览器通过 queryLocalFonts 暴露列表)。不支持或权限被拒绝时,按钮会说明原因,其余功能仍可用。本机目录需通过输入过滤后才展示匹配项,而非一次性倾倒全表。

界面布局

默认折叠为单行 Font settings(带 chevron),折叠行上会摘要当前正文字体,避免 General 列表过长。安装并启用后,该组会取代原先内置的字体分组行(通过 shadow 同一 slot id,见下文机制说明)。

安装与启用

插件以 profile bundle 形式安装。可用 Web 侧栏 Plugins 页面,或使用 plugin_manager 工具的 install_bundle(需 danger-full-access)。spec 可以是 Git 地址、本地路径或 registry 名称。

从 GitHub 安装(安装前 manager 会对 GitHub 执行 git ls-remote 校验;pnpm 的 github: 简写同样可用):

https://github.com/yiqiuacc/dsh-font-settings.git

或:

github:yiqiuacc/dsh-font-settings

从本地目录链接(将路径换成你的绝对路径):

link:<absolute path to this directory>

自 registry 安装(发布后可用):

@styiqiu/dsh-font-settings

安装后 bundle 默认启用。打开 Settings → General 即可看到 Font settings 一行(或展开后的完整分组),原先内置字体组不再单独渲染。

安装与运行发生在当前 DSH 进程权限下。添加任何社区插件前,建议自行查看仓库源码与 MIT 许可证,确认符合你的安全与合规要求。

典型用法

  1. 在 Harness Web 或 Desktop 中完成上述 bundle 安装并确认已启用。
  2. 进入 Settings → General,展开 Font settings。
  3. 分别打开 text / code / terminal 的字体字段:输入关键字过滤列表,用方向键选中后 Enter;或直接在输入框键入自定义族名。
  4. 需要参考本机字体时,使用加载本机字体按钮;在过滤框输入族名片段,从匹配结果中选择(本机列表在过滤展示时有行数上限,见注意事项)。
  5. 调整各角色旁的字号步进器;范围由 Harness 约束(text 10–22 px,code 10–16 px,terminal 10–20 px)。

选择与内置设置写入同一存储:settings scope 与 profile 的 cordis.patch.yml 中 ui-theme 配置行;首屏由 Harness boot 脚本注入,避免先闪默认字体再切换。

工作原理(简要)

  • 客户端逻辑集中在 client.js:在 General 区 item slot 以低于内置项的优先级注册与内置字体入口相同 id 的项,从而 shadow 内置行,用一组控件替换而非并列重复。
  • UI 使用 @deepseek-ai/dsh-client-ui-primitives 的 Input、MenuSurface、MenuGroup,与 Harness 字段几何与焦点行为一致。
  • index.js 为空 mount shell(export function apply() {}),满足 profile bundle 对 Host 插件行的要求;无独立构建步骤,依赖由 client module loader 提供。
  • 若运行环境中不存在 theme 服务,插件不注册任何 UI,内置字体设置保持原样。

适用场景与注意事项

适合谁

  • 希望在 DSH 里快速试字体、且依赖「看得见再选」的开发者或日常用户。
  • 需要在 text / code / terminal 三套栈上分别微调,并偶尔引用本机已安装字体的场景。

已知限制(来自上游 README)

  • 本机字体列表仅在过滤时展示,且最多 24 行;精选列表不受此限。原因是每行按真实字体绘制,冷缓存下大量 distinct 族会明显卡顿。
  • 该分组在 General 中会排在 Appearance 之上(shadow 机制与 slot 排序导致,无法在不改替换策略的情况下去掉)。
  • 依赖内置入口 id font-size;若未来 Harness 改名,shadow 失效时会出现与内置字体行并存的重复控件,不会崩溃。
  • 三类角色无「联动替换等宽字体」开关;无单独预览块(列表行即预览)。
  • ctx.theme 为 pre-stable API,升级 Harness 后可能需要同步更新插件。
  • 「加载本机字体」依赖 Chromium 系浏览器;其余能力对引擎无特殊要求。

结尾

dsh-font-settings 把 General 里凭记忆填字体名的流程,换成可搜索、可预览列表的选择器,并与 Harness 主题存储保持一致。若你在 DSH 0.2.x Web 或 Desktop 上折腾排版,可以从社区目录或 GitHub 按官方 README 的安装 spec 添加 bundle,再在 Settings → General → Font settings 里完成配置。

  • 目录页:https://www.skillhub.cn/plugins/YiQiuAcc/dsh-font-settings
  • GitHub:https://github.com/YiQiuAcc/dsh-font-settings

社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;选型与安装请以仓库文档与源码为准。

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

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

小夜