dsh-fullscreen-shortcut:为 DSH 桌面端恢复 macOS 窗口全屏快捷键

前言

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>,让标题栏留白、红绿灯占位等布局与真实全屏状态一致。纯前端逻辑,无网络请求、无持久化、不访问凭据。

核心功能

  1. ⌃⌘F 一键切换全屏:按一次进入,再按一次退出。
  2. 按物理键位匹配:用 KeyboardEvent.code === "KeyF" 判断,不受 QWERTY / Dvorak / 中文输入法等布局影响。
  3. 尽量不抢输入:跳过长按重复(event.repeat)和已被页面其他控件处理(event.defaultPrevented)的按键。
  4. 同步外壳布局状态:监听 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 默认行为)

工作原理(简)

  1. 通过 package.json 的 dsh.client(platform: "web"、immediately: true)和 cordis.patch.yml 的 bundle patch 注入客户端模块。
  2. 在 window 捕获阶段监听 keydown:桌面外壳的 before-input-event 主要拦截已注册快捷键;未注册的组合仍可走 DOM。插件匹配 metaKey && ctrlKey 且 code === "KeyF"(不含 Alt / Shift)。
  3. 命中后调用 document.documentElement.requestFullscreen() 或 document.exitFullscreen();真实按键事件带有瞬时用户激活,满足 Fullscreen API 要求。
  4. 用 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。

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

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

小夜