DSH 标题栏按钮自动收折与排序

前言

DeepSeek Harness(DSH)客户端在会话页的标题栏中会展示多个按钮,包括内置按钮与其他插件注册的按钮。当按钮数量较多且宽度有限时,标题栏布局会被挤压,右侧按钮被截断或溢出,操作体验下降。

dsh-header-modify 插件针对这一场景,自动检测标题栏内的按钮,当空间不足时按优先级将靠后的按钮收进「更多」菜单,并在设置中提供拖动排序功能,让用户控制保留哪些按钮。

插件定位

dsh-header-modify 是一个 DSH Desktop 客户端插件,由开发者 dthcle 维护。它解决标题栏按钮溢出问题,提供自动收折与优先级管理,不影响宿主布局,卸载时干净还原。

核心功能

自动发现与收折

  • 扫描标题栏中实际存在的所有按钮(内置按钮与其它插件注册的按钮都算)。
  • 同一个 cell 内的多个按钮也分别识别。
  • 当空间不足时,按优先级把靠后的按钮收进「更多」菜单。
  • 全部放得下时,「更多」菜单隐藏,不占用额外空间。

优先级与排序

  • 在「设置 → 标题栏按钮」中提供拖动排序,越靠上的按钮优先级越高,越容易被保留。
  • 提供上/下移按钮与恢复默认选项。
  • 按钮身份与具体会话无关,条件按钮出现时沿用已保存的位次。
  • 设置页只显示按钮名称,不显示数字优先级。

体验细节

  • 收折只通过内联样式修改,逐属性还原,测量宽度时将元素移出文档流,不触发标题栏重排。
  • 带迟滞余量,避免边界闪烁;自身写入不会引发更新循环。
  • 「更多」菜单保留原图标、名称、禁用状态、点击行为与配色(含危险色)。
  • 点击菜单项即执行原动作并关闭菜单,支持 Esc、点击外部、Tab 关闭,方向键与 Home/End 可导航。
  • 由标题栏按钮打开的浮层(内联渲染或 portal 渲染)会脱离标题栏布局,落到标题栏下方、右对齐触发按钮、限制在视口内,过高时内部滚动,不相关的浮层不会被移动。

干净卸载

  • 停用插件时移除全部自建 UI、监听器、观察器与样式,还原宿主 DOM 的改动。

安装与启用

使用官方安装命令安装插件:

dsh plugin --profile <profile> add dsh-header-modify

本地开发时可用 link: 安装:

dsh plugin --profile desktop add link:F:/path/to/dsh-header-modify

开发

源码位于 src/*.js,build.mjs 将其拼装成浏览器用的 client.js(window.__ModuleLoader__ 格式):

node build.mjs

改完客户端代码后,需在插件管理器中关闭再打开该 bundle(必要时完全重启 DSH Desktop)才会加载新代码。

适用场景与注意

  • 适合需要管理标题栏按钮数量与顺序的用户,尤其是使用多个插件时。
  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
  • 卸载时自动还原改动,不会留下残留样式或监听器。

总结

dsh-header-modify 通过自动收折溢出按钮与拖动排序,让标题栏按钮在有限空间内保持可用,同时保持原生交互体验。更多细节可在 GitHub 查看源码与文档。

  • 目录页:https://www.skillhub.cn/plugins/dthcle/dsh-header-modify
  • GitHub:https://github.com/dthcle/dsh-header-modify
羽毛球分组比赛记分
小程序二维码

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

小夜