dsh-hotkey-enhance:DSH Desktop 键盘增强与会话切换

前言

在 DSH Desktop 里日常开多个会话时,两件事很容易让人别扭:一是没有像 Codex 那样按住修饰键、连点 Tab 预览再松手切换的会话切换方式;二是 DSH Desktop 2.0.18 在 web runtime 下,文档里的 desktop:* 默认键位整套不生效,Cmd+N、Ctrl+Tab 等组合又进不了官方快捷键注册表的白名单。浏览器里这些键本来就要留给标签页和系统菜单,所以在非 Electron 环境里也不该被插件抢走。

下面介绍社区插件 @brantshi1/dsh-hotkey-enhance(GitHub:brantshin/dsh-hotkey-enhance,维护者 brantshin,分类:客户端)。它只在 DSH Desktop 的 Electron 环境里挂载监听,补 Codex 式 Ctrl+Tab 浮窗切换,并接管一批桌面常用快捷键。

这是什么

npm 包名 @brantshi1/dsh-hotkey-enhance,当前资料中的版本为 0.2.0,许可证 MIT。插件描述为:Desktop keyboard enhancement for DSH——Codex 式按住预览的会话切换器,加上 DSH 从未真正生效过的桌面键位映射。仅适配 DSH Desktop;在普通浏览器中加载即惰性返回,不注册监听器,也不抢键。

为什么需要绕过官方快捷键表

DSH Desktop 2.0.18 客户端跑在 web runtime。资料说明:dsh-client-shortcuts 依赖的 document.documentElement.dataset.platform 在安装包里未被赋值,导致 desktop:* 默认键位失效,实际生效的是 web:*(例如新会话为 Cmd+Alt+N)。同时 isWebBindingAllowed() 会拒绝 Cmd+N、Cmd+W、Cmd+D、Ctrl+Tab 等浏览器保留组合,向注册表注册时会抛出 Unsupported Web shortcut。

本插件因此不在注册表注册,而是在 window 捕获阶段监听 keydown——与社区里 dsh-custom-hotkeys、dsh-file-finder 等面对同一限制时的做法一致。副作用是:这些键不会出现在 设置 → 通用 → 快捷键(注册表目录)里,改键由插件自己的设置卡片完成。

核心功能

十一条可改键动作

下列组合在资料中有明确说明;全部可在 设置 → 通用 → 桌面快捷键 里录制改键(设置卡片在 README 中也称为「会话快捷键」)。

按键 动作
Cmd/Ctrl+N 新建会话
Cmd/Ctrl+W 关闭当前会话,回会话列表
Cmd/Ctrl+Shift+W 同上(macOS 菜单 Cmd+W 的备用)
Cmd/Ctrl+D 置顶 / 取消置顶当前会话
Ctrl+Tab 打开最近会话浮窗;按住连按移动高亮,松开才切换
Ctrl+Shift+Tab 同上,反向
Cmd+B 收起/展开左侧栏
Cmd+, 打开设置
Cmd+Opt+S 打开侧边对话(需 better-sidebar)
Cmd+J 新建终端
Cmd+T 新建浏览器页面

Cmd+J / Cmd+T 转发 DSH 自带的 terminal.new / browser.new,不依赖第三方插件。Cmd+Opt+S 需要安装 dsh-better-sidebar;未安装时设置里该行置灰并注明依赖,按键不会被吞。

Ctrl+Tab 浮窗切换器

按下 Ctrl+Tab 弹出最近会话列表,而不是立刻切换。松开 Ctrl 才提交到高亮行;Tab 在按住 Ctrl 时可反复点选下一项;Esc 取消。浮窗挂在 shell.overlay,pointer-events: none,不抢焦点。列表在打开瞬间快照,上限 9 条;过滤 blank、归档、origin: "subagent" 会话。浮窗打开期间会暂时抑制其余会话快捷键。

改键与持久化

在 设置 → 通用 底部卡片中:每行显示动作、当前键、修改、恢复;点 修改 后按下新组合即保存,Esc 取消。组合须至少含 Ctrl/Alt/Cmd;与内置命令冲突或与其它行重复会被拒绝。键位保存在 localStorage 键 dsh.sessionkeys.bindings.v1,结构为 { version: 1, bindings: { <动作>: "<修饰键>+<code>" } },卸载插件不会清除,重装后仍在。

只在命中组合时 preventDefault() 与 stopPropagation();未命中一律放行,不干扰输入框、终端与内嵌页面。

安装与启用

面向 DSH Desktop profile 的安装命令(来自 README 原文):

dsh plugin --profile desktop add @brantshi1/dsh-hotkey-enhance

安装后重启 DSH Desktop。设置 → 通用 底部应出现「桌面快捷键」相关一节。

本地开发可从源码路径安装(改动即时生效):

dsh plugin --profile desktop add /path/to/dsh-hotkey-enhance

卸载:

dsh plugin --profile desktop remove @brantshi1/dsh-hotkey-enhance

也可手动从 ~/.dsh/profiles/desktop/package.json 的 dependencies 与 dsh.profile.bundles 移除包名,在 profile 目录执行 pnpm install 后重启。

package.json 中声明与 dshReleases 的 0.2.1-rc.2 为 compatible;安装前请对照你本机 DSH Desktop 版本与插件仓库说明。

典型用法

1、安装并重启后,用 Cmd/Ctrl+N 新建会话,用 Cmd/Ctrl+W 从主视图回到列表。

2、需要 Codex 式切换时:按住 Ctrl,点 Tab 在浮窗里移动高亮,松开 Ctrl 切换;反向用 Ctrl+Shift+Tab。

3、改键:打开 设置 → 通用,在插件卡片里对某行动作点 修改,录新组合;需要时用「全部恢复默认」。

4、若使用侧边对话快捷键,先安装 dsh-better-sidebar 并重启,再使用 Cmd+Opt+S。

维护者在仓库中提供离线测试(62 条断言):

pnpm test

等价于 node tests/hotkey-enhance.test.mjs。

适用场景与注意

适合长期用 DSH Desktop、多会话并行、且希望桌面键位与 Codex 切换习惯对齐的开发者。不适合在纯 Web DSH 或浏览器里指望同样效果——插件会主动不装监听器。

插件以当前 DSH 进程权限在客户端运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,自行评估信任边界。

已知边界(来自 README):快捷键绕过注册表,无原生目录的冲突检测;持久化用 localStorage 而非 profile host 配置;macOS 上 Cmd+W 可能与原生菜单竞争;浮窗 z-index 极高但仍可能被更高模态遮住;Cmd+1..9 侧栏顺序跳转未实现。

DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-hotkey-enhance 针对 DSH Desktop web runtime 下桌面键位失效与 Ctrl+Tab 无法注册的问题,用捕获阶段监听补上常用快捷键和按住预览的会话切换,并在设置里单独改键持久化。需要时可从目录页或 GitHub 查看更新与 issue:

  • 目录:https://www.skillhub.cn/plugins/brantshin/dsh-hotkey-enhance
  • 仓库:https://github.com/brantshin/dsh-hotkey-enhance
羽毛球分组比赛记分
小程序二维码

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

小夜