DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

home-i /

home-i/dsh-window-size

Verified

记住 DeepSeek Harness 桌面版的窗口尺寸:重启后自动恢复、默认水平垂直居中,并提供设置页手动调整。

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@a993fa14

dsh-window-size

简体中文 · English

记住 DeepSeek Harness 桌面版的窗口尺寸:重启后自动恢复、默认水平垂直居中,并且可以在设置页里直接改,不用手动拖窗口。

平台:Windows 宿主:DSH 桌面版 许可证:MIT

  • 首次启动:没有记录时使用 1440 × 900,并居中。
  • 每次手动调整:自动记录,下次启动恢复。
  • 默认居中:每次启动都把窗口放在当前显示器工作区正中;可在设置页关闭,改为沿用上次位置。
  • 不会记错:最大化、最小化、隐藏状态一律不记录,避免下次以超大尺寸打开;恢复时会按当前显示器工作区收缩,换显示器也能用。
  • 设置页:设置 → 窗口尺寸 可手动设定尺寸、记住当前尺寸、立即居中、恢复默认。
  • 在非桌面版 Host(dsh 命令行、服务器)上仍可加载,但设置页会提示不可用。

为什么必须做成 Host 插件

桌面版创建主窗口时把尺寸写死为 1280 × 820,也不持久化任何窗口状态。渲染端改不了它:在 Electron 里,window.resizeTo() 会被路由到 WebContentsDelegate::SetContentsBounds,Electron 只把它转发成 content-bounds-updated 事件,并不会真的改变 BrowserWindow 的大小。

所以真正干活的是 Host 进程:它通过 koffi(@deepseek-ai/dsh-desktop-host 本来就依赖它)调用 FindWindowExW / GetWindowRect / GetDpiForWindow / SetWindowPos,并且抢在窗口显示前完成设置,避免先闪一下旧尺寸。

设置页

设置 → 窗口尺寸 是一个 settings.section 条目。页面上会显示当前窗口尺寸、已记录尺寸和上次动作(含时间),并提供:

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

页面本身不碰窗口,它通过包私有 RPC 通道 /dsh-window-size 调用 Host 端,Host 端用与启动恢复同一个控制器来执行。

安装

直接从 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"]
    }
  }
}

下次启动即生效,之后改动源码也不需要重装。

不要把这个 link: 换成手工建的 Windows junction 再执行 pnpm install:pnpm 安装时会移除该条目,而 Windows 会顺着 junction 进入目标目录,导致源码目录被清空。

配置

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
{
  "size": { "width": 1440, "height": 900 },
  "center": true,
  "enabled": true,
  "last": { "action": "restore", "source": "remembered", "at": 0 },
  "updatedAt": 0
}

last 记录最近一次动作(restore、resize、apply、remember、center、center-on、center-off、enabled、disabled),包含实际达成的尺寸、DPI 缩放和窗口标题——设置页显示的就是它,出问题时也靠它定位。删除这个文件即回到配置默认值。旧版(只有 size + last)的记录会自动升级:尺寸保留,新开关取配置默认。

RPC 约定

Host 在 Web carrier 上注册前缀路由,每个请求都先过 connection.admit,因此只有本 Host 的已认证页面能操作窗口:

POST /dsh-window-size/<endpoint>
content-type: application/json

{ "type": "client-request", "rpcId": "…", "method": "<endpoint>", "payload": … }

端点:status、apply({width,height})、reapply、reset、center、remember、set-center(true|false)、set-enabled(true|false)。返回使用 Connection 的 server-response 信封;业务失败以 HTTP 200 + { ok: false, error: { code, message, details } } 返回,而路由不存在、非 POST、认证失败分别是 404 / 405 / 401。

文件

文件 作用
index.js Host 插件入口;启动控制器与 RPC,并负责释放
window-memory.js 控制器:查找窗口、恢复、居中、跟踪缩放、处理页面动作
rpc.js 前缀路由注册、认证、信封解析、端点分发
win32.js koffi 绑定、DPI、显示器工作区、窗口查找
state.js harness home 下的原子 JSON 记录
client.js 设置页(settings.section),中英双语
cordis.patch.yml bundle 层插入的 Loader 行

环境要求

  • Windows 10/11 x64 或 arm64。
  • DeepSeek Harness 桌面版(Electron shell 的 Host 进程)。窗口 API 是 Win32 的,其它环境不生效。

常见问题

包管理器操作时报 dsh: cannot resolve profile bundle "dsh-window-size":说明 manifest 里列了这个 bundle,但 node_modules/dsh-window-size 不存在、或其链接目标里没有 package.json。插件管理器的 reconcile 阶段对所有已列依赖都会严格解析、没有兜底(而启动时只是跳过并报告),补回链接或重装 bundle 即可恢复。

设置页显示不可用:当前 Host 不是桌面版,或 koffi / user32 加载失败;具体原因会显示在提示下方。

窗口恢复后的尺寸不对:查看状态文件里的 last,它记录了请求值、实际达成值、DPI 缩放与窗口标题。

许可证

MIT © home-i


English version →

—/ 5

No ratings yet

Verified DSH bundle

Commit a993fa14be2c

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout