dsh-window-size:记住 DSH 桌面版窗口尺寸并在重启后恢复

前言

用 DeepSeek Harness 桌面版做日常开发时,窗口大小往往要反复拖一遍:桌面版创建主窗口时把尺寸写死为 1280 × 820,也不持久化窗口状态。在 Electron 渲染端里调用 window.resizeTo() 并不能真正改变 BrowserWindow 的大小,所以单靠前端改不了启动尺寸。

下面介绍社区插件 dsh-window-size(维护者 home-i,分类:客户端)。它在 Host 进程里通过 Win32 API 在窗口显示前设置尺寸与位置,并把用户调整结果记到 harness home,重启后自动恢复;默认水平垂直居中,并可在设置页手动调整。

这是什么

dsh-window-size 是面向 DeepSeek Harness 桌面版(Windows)的 Host 插件:记住窗口尺寸,重启后恢复;首次无记录时使用 1440 × 900 并居中;每次手动调整会自动记录;最大化、最小化、隐藏状态不写入记录,避免下次以错误尺寸打开。

在非桌面版 Host(dsh 命令行、服务器)上仍可加载,但设置页会提示窗口功能不可用。

  • 目录页:https://www.skillhub.cn/plugins/home-i/dsh-window-size
  • 源码与文档:https://github.com/home-i/dsh-window-size
  • 许可证:MIT

核心功能

启动与记忆

  1. 首次启动:没有历史记录时使用 1440 × 900(可通过 Loader 配置修改),并居中。
  2. 每次手动调整:自动记录,下次启动按记录恢复。
  3. 默认居中:每次启动可把窗口放在当前显示器工作区正中;可在设置页关闭「启动时居中」,改为沿用上次位置。
  4. 状态过滤:最大化、最小化、隐藏一律不记录;恢复时会按当前显示器工作区收缩,换显示器也能用。

设置页

路径:设置 → 窗口尺寸。页面显示当前窗口尺寸、已记录尺寸和上次动作(含时间)。设置页不直接操作窗口,而是通过包私有 RPC /dsh-window-size 调用 Host,与启动恢复共用同一控制器。

控件 作用
宽度 / 高度 + 应用并记住 立刻改变窗口尺寸并保存
记住当前尺寸 保存当前手动拖出的尺寸
重新应用 用记录值再应用一次(含当前居中设置)
恢复默认 回到配置的默认 1440 × 900
启动时居中 开关 恢复时是否居中
立即居中 只居中,不改尺寸
启用尺寸记忆 开关 关闭后既不恢复也不记录

技术要点(为何必须是 Host 插件)

桌面版主窗口尺寸在创建时写死且不持久化;渲染端改不了真实窗口大小。插件在 Host 里用 koffi 调用 FindWindowExW、GetWindowRect、GetDpiForWindow、SetWindowPos,并在窗口显示前完成设置,减少先闪一下旧尺寸的情况。

安装与启用

在插件管理器中填写 GitHub 源(资料原文安装方式):

github:home-i/dsh-window-size#v1.1.2

也可在桌面版 插件 页从本地目录安装。本地开发可将包链接进桌面版 profile:

// ~/.dsh/profiles/desktop/package.json
{
  "dependencies": {
    "dsh-window-size": "link:/path/to/dsh-window-size"
  },
  "dsh": {
    "profile": {
      "bundles": ["...", "dsh-window-size"]
    }
  }
}

下次启动即生效;改动源码后无需重装。注意:不要用手工建的 Windows junction 替代上述 link: 再执行 pnpm install,否则可能清空源码目录。

配置与状态文件

在 cordis.patch.yml 的 Loader 行里可配置首次默认值:

# cordis.patch.yml
- insert:
    - id: dsh-window-size
      name: dsh-window-size
      config:
        width: 1440        # 首次启动宽度,CSS 像素
        height: 900        # 首次启动高度,CSS 像素
        center: true       # 每次恢复都居中
        enabled: true      # 是否启用恢复与记录

尺寸单位为 CSS 像素;宽高最小 520 × 600,恢复时还会受当前显示器工作区限制。

记录文件位于 harness home(跟随 profile,而非 Electron userData):

~/.dsh/dsh-window-size/window-size.json

删除该文件即回到配置默认值。last 字段记录最近一次动作及实际尺寸、DPI、窗口标题,便于排查「恢复后尺寸不对」等问题。

典型用法

  1. 安装并重启桌面版后,按习惯拖一次窗口;之后每次启动会自动恢复尺寸,并按「启动时居中」开关决定是否居中。
  2. 需要固定分辨率时:打开 设置 → 窗口尺寸,输入宽高后点 应用并记住。
  3. 临时不想记忆:在设置页关闭 启用尺寸记忆;需要默认大小时点 恢复默认(1440 × 900,或你在 YAML 里写的值)。

适用场景与注意

适合谁:在 Windows 10/11(x64 或 arm64)上使用 DSH 桌面版,希望窗口尺寸可持久化、可居中、可在 UI 里改,而不依赖每次手动拖窗口的用户。

环境:仅 Win32 窗口 API 生效;其它平台不会起作用。

安全与权限:插件以当前 DSH 进程权限运行,安装前请阅读源码与 MIT 许可证,确认来源为 https://github.com/home-i/dsh-window-size 。

常见问题:

  • 包管理器报 dsh: cannot resolve profile bundle "dsh-window-size":manifest 已列 bundle 但 node_modules/dsh-window-size 缺失或链接无效,需补回链接或重装。
  • 设置页不可用:当前 Host 不是桌面版,或 koffi / user32 加载失败(页面会给出原因)。

结尾

dsh-window-size 把「窗口尺寸」从桌面版写死的 1280 × 820 里拆出来:Host 侧 Win32 设置、重启恢复、可选居中,以及 设置 → 窗口尺寸 里的显式控制。社区目录页见 https://www.skillhub.cn/plugins/home-i/dsh-window-size ,实现细节与 RPC 约定见 GitHub README。

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

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

Xiaoye