dsh-resizable-settings:让 DSH 设置窗口可拖拽缩放与移动

前言

在 DeepSeek Harness(DSH)里打开设置,默认会弹出一个固定宽度(约 800px)的模态面板,居中叠在页面上。内容多、字段长时,可视区域往往不够;面板也不能拖到不挡主界面的位置。下面介绍的插件只改这一处设置对话框:在边缘和四角加拖拽手柄,在顶部留一条可拖动的区域,并把尺寸与位置记到本机,下次打开或重启应用后仍生效。

这是什么

dsh-resizable-settings 是维护者 funswe 发布的 DSH Web 插件(package.json 版本 0.1.1,MIT 许可证)。它通过 Cordis bundle patch 在客户端注入逻辑,针对由 ui-settings-general 渲染、带 role="dialog" 与 aria-modal="true" 的设置面板增加交互,不改变面板内部的布局、快捷键或其它对话框。

核心功能

缩放

操作 区域
改宽度 左右边缘内侧约 6px 宽的热区
改高度 上、下边缘
同时改宽高 四个角(16×16)
恢复默认尺寸与位置 在任意边缘热区连续按两次(插件自行识别 400ms 内的两次按下,不用 dblclick)

鼠标悬停在边缘时,指针会变成对应的缩放光标,并显示细线提示手柄位置。右侧手柄向内缩进 6px,避免与设置区域最外侧约 5px 的滚动条重叠,以免拖滚动条时被当成缩放。

移动

拖动面板顶部 20px 的空白条(标题栏上方的区域)可整体平移。可移动范围有上限:面板顶边不能高于 DSH 顶栏(标题栏)下沿,避免窗口被拖进顶栏后无法再抓住移动区。在 Windows 上顶栏约 40px;具体下限会读取 DSH 的 CSS 变量(如 --dsh-frame-chrome-top);macOS 使用 --dsh-frame-top-clearance;普通浏览器文档没有这些变量时,回退为距视口顶部 12px 的边距。

记忆与边界

尺寸与位置写入浏览器 localStorage,键名为 dsh-resizable-settings.v1,按本机、按浏览器 profile 独立保存。拖拽时会把面板从 flex 居中改为带明确 left/top/width/height 的绝对定位,使「抓住的一边跟指针、对边不动」;放大受视口边界约束,且以当前位置动态计算上限,避免把面板拖出屏幕或触顶时锚点边突然跳动。

设置面板每次开关会重新挂载(React portal),插件用 MutationObserver 在面板出现时挂上手柄,关闭时一并移除。

安装与启用

官方 README 给出的步骤是先取得插件目录,再用 DSH 桌面版 CLI 以本地路径安装。示例(PowerShell,路径按你的环境替换):

git clone https://github.com/funswe/dsh-resizable-settings
& "<DSH install dir>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "<the cloned directory>"

完成后重启 DSH Desktop。插件列表中的标题与说明来自 locale/*.json(en 为锚点语言文件,须存在且通过 package.json 的 exports 与 files 发布)。

典型用法

  1. 安装并重启 DSH Desktop 后,照常点击设置按钮打开设置对话框。
  2. 将鼠标移到面板左、右、上、下边缘或四角,出现缩放光标后拖动,调整到合适的宽高。
  3. 需要挪位置时,在面板最上方约 20px 的空白条按下并拖动(不要拖进 DSH 顶栏之上)。
  4. 想恢复默认大小和居中位置时,在任意边缘热区快速按两次。

仓库提供离线测试,可在克隆目录下执行:

node test/resize.test.mjs

用简化 DOM 与指针事件跑真实 bundle,校验各边缩放、视口与顶栏夹紧、双击重置、重新打开恢复等算术行为。

适用场景与注意

适合经常在 DSH 里改设置、希望加大设置面板或把它移到一侧的用户。插件以当前 DSH 进程在浏览器侧的权限运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。

限制方面:仅作用于设置模态([role="dialog"][aria-modal="true"] 且 class 含 _panel),其它对话框不受影响。若 DSH 升级后设置面板 DOM 约定变化,插件会静默失效,不会报错也不会破坏设置页。尺寸只存在本机 localStorage,不跨设备同步。

社区插件目录见 SkillHub 上的 funswe/dsh-resizable-settings;该站点为社区生态索引,与 DeepSeek / 幻方无官方从属关系。更多实现细节与英文说明见仓库 README 与 README.zh.md。

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

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

Xiaoye