dsh-window-state:自定义 DSH 桌面窗口的启动状态

前言

DSH(DeepSeek Harness)是 DeepSeek 的桌面客户端,采用插件化架构。在日常使用中,窗口每次启动时的位置和大小往往不一致,这会打断工作流。dsh-window-state 插件解决了这一问题,允许用户在设置中指定窗口的启动状态。

核心功能

该插件在 DSH 桌面客户端的「设置 → 通用设置」里增加了一行「启动窗口状态」选项。
用户可选择每次启动时窗口以「默认」、「最大化」或「全屏」打开。用户的偏好会被持久化存储在 localStorage(键名 dsh-window-state:startup)中,并在启动时或修改设置时立即生效。

安装与启用

通过 CLI 安装插件:

dsh plugin install github:gaoyian7251/dsh-window-state

安装完成后,必须重启桌面客户端才能生效。

使用方法

重启 DSH 客户端后,打开「设置 → 通用设置」。
1. 找到「启动窗口状态」一行。
2. 选择「默认 / 最大化 / 全屏」。
3. 选择会立刻应用到当前窗口,并保存。下次启动时自动应用。

注:选择「默认」时,窗口将保持 Electron 记住的上次位置与大小。

工作原理

DSH 桌面主窗口由 Electron 主进程创建。经过反编译验证,dsh-desktop:window-fullscreen 通道是单向通知,且主进程代码中没有提供全屏/最大化的入口供插件调用。因此,本插件采用「越界机制」:通过 Win32 API(user32.dll)从子进程定位并控制窗口。

具体步骤:
1. 使用 EnumWindows 按窗口类 Chrome_WidgetWin_1 和标题含 DeepSeek Harness 定位主窗口。
2. 使用 ShowWindowAsync 发送 SW_MAXIMIZE 或 SW_RESTORE 指令。
3. 全屏模式通过剥离窗口边框样式(WS_CAPTION | WS_THICKFRAME)并调整位置实现。

注意事项

  • 仅限 Windows:依赖 PowerShell 和 Win32 API。
  • 全屏效果:属于「伪全屏」,通过剥离边框实现,视觉效果等同于 BrowserWindow.setFullScreen(true),无系统标题栏。
  • 环境变量修正:插件会探测 PowerShell 的绝对路径(如 System32\WindowsPowerShell\v1.0、PowerShell 7 等),并在起子进程前修正 PATH 和 SystemRoot 等环境变量,不严格要求它们出现在系统 PATH 中。
  • 本地安装报错:如果通过本地路径安装,重装时可能会因 Junction 链接残留报错。需使用 cmd /c rmdir 删除残留链接,然后重新安装。

结语

该插件为 DSH 桌面客户端提供了标准化的窗口启动控制能力。

GitHub 仓库 | 社区目录

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

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

小夜