前言¶
DeepSeek Harness(DSH)桌面端基于自定义 Electron 外壳,并替换了默认应用菜单。在 macOS 上,系统菜单里原本挂着的「进入全屏幕」项随之消失,与之绑定的 ⌃⌘F(Control + Command + F) 在 DSH 窗口里也无法使用。外壳自带的快捷键目录里又没有「窗口全屏」这一条,于是只能点窗口左上角绿色按钮进全屏,和你在其他 macOS 应用里的肌肉记忆不一致。
下面介绍社区插件 dsh-fullscreen-shortcut(维护者 kimufly):在 DSH 桌面窗口内用 ⌃⌘F 切换页面级全屏,把这条物理按键补回来。浏览器 Web 版 DSH 自带全屏能力,不需要装本插件。
这是什么¶
dsh-fullscreen-shortcut 是 DSH 客户端插件(dsh.client + bundle patch),只做一件事:在 macOS 的 DSH 桌面端监听 ⌃⌘F,调用 Fullscreen API 进入或退出全屏,并同步 <html data-fullscreen>,让标题栏留白、红绿灯占位等布局与真实全屏状态一致。纯前端逻辑,无网络请求、无持久化、不访问凭据。
- 仓库:github.com/kimufly/dsh-fullscreen-shortcut
- 社区目录:skillhub.cn/plugins/kimufly/dsh-fullscreen-shortcut
- 许可证:MIT(
package.json版本 1.0.0) - 插件 API:dsh 0.2.x
核心功能¶
⌃⌘F一键切换全屏:按一次进入,再按一次退出。- 按物理键位匹配:用
KeyboardEvent.code === "KeyF"判断,不受 QWERTY / Dvorak / 中文输入法等布局影响。 - 尽量不抢输入:跳过长按重复(
event.repeat)和已被页面其他控件处理(event.defaultPrevented)的按键。 - 同步外壳布局状态:监听
fullscreenchange,维护data-fullscreen,避免页面主动全屏时标题栏仍预留红绿灯高度。
说明:走的是 HTML Fullscreen API(document.fullscreenElement),不是 macOS 原生「全屏幕空间」;窗口会占满当前屏幕,但不会新建桌面 Space,也不会和系统菜单里的「退出全屏幕」状态一一对应。绿色按钮的原生全屏与本插件互不替代。
环境要求¶
| 项 | 要求 |
|---|---|
| 平台 | macOS |
| 宿主 | DSH 桌面端(Electron 外壳) |
| 插件 API | dsh 0.2.x |
| Web 版 DSH | 不需要本插件 |
Windows / Linux 当前未适配,也未在对应平台测试。
安装与启用¶
dsh plugin add 会修改 ~/.dsh/profiles/desktop 的依赖与 dsh.profile.bundles。安装后需要重启 DSH 桌面端,客户端插件才会加载。
从 GitHub 安装(README 推荐方式):
dsh plugin --profile desktop add github:kimufly/dsh-fullscreen-shortcut
确认是否装进 desktop profile:
dsh plugin --profile desktop why dsh-fullscreen-shortcut
安装成功后,DSH 桌面端「插件」列表里会出现 窗口全屏快捷键 / Window Fullscreen Shortcut。
若你曾用旧包名 @local/window-fullscreen-shortcut 本地链接安装,请先移除再装新包:
dsh plugin --profile desktop remove @local/window-fullscreen-shortcut
dsh plugin --profile desktop add github:kimufly/dsh-fullscreen-shortcut
然后重启桌面端。
卸载:
dsh plugin --profile desktop remove dsh-fullscreen-shortcut
重启桌面端后生效。
典型用法¶
在 DSH 桌面窗口内,焦点在应用内时:
| 操作 | 效果 |
|---|---|
⌃⌘F |
进入全屏 / 退出全屏 |
Esc |
退出全屏(Fullscreen API 默认行为) |
工作原理(简)¶
- 通过
package.json的dsh.client(platform: "web"、immediately: true)和cordis.patch.yml的 bundle patch 注入客户端模块。 - 在
window捕获阶段监听keydown:桌面外壳的before-input-event主要拦截已注册快捷键;未注册的组合仍可走 DOM。插件匹配metaKey && ctrlKey且code === "KeyF"(不含 Alt / Shift)。 - 命中后调用
document.documentElement.requestFullscreen()或document.exitFullscreen();真实按键事件带有瞬时用户激活,满足 Fullscreen API 要求。 - 用
fullscreenchange维护<html data-fullscreen>,弥补页面发起全屏时不会触发 Electron 原生enter-full-screen的问题。
实现集中在 client.js;无构建步骤,修改后需重启桌面端(已安装的客户端模块不走热更新)。
适用场景与注意¶
适合谁:长期在 macOS 上用 DSH 桌面端写 Harness、调智能体,希望和其他 macOS 应用一样用 ⌃⌘F 全屏的人。
权限与安全:客户端插件随 DSH 桌面进程在本地运行。安装前建议浏览仓库源码与 MIT LICENSE,确认行为符合预期。本插件自述无网络、无凭据访问。
排错:若 ⌃⌘F 无反应,确认 desktop profile 已安装并已重启、焦点在 DSH 窗口内;检查是否有其他插件或输入法占用同一组合;在 DSH 日志中查找 dsh-fullscreen-shortcut: 前缀的告警(例如 Fullscreen API 被拒绝)。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录由社区维护,与 DeepSeek / 幻方无官方从属关系,安装插件以你自行审阅的仓库为准。
结尾¶
dsh-fullscreen-shortcut 不扩展模型能力,只修补 DSH 桌面端在 macOS 上缺失的 ⌃⌘F 窗口全屏习惯。装好 desktop profile、重启一次,即可在桌面窗口内用快捷键占满屏幕写 Harness。