dsh-rightbar-exit-strip:给全屏右侧栏补两个退出入口

前言

用 DSH(DeepSeek Harness)时,右侧栏一旦被切成全屏,会盖住整个视口,屏幕上只剩右上角那两个面板控件可以点。想退出全屏,得把鼠标移到角落找小按钮。如果右侧栏窗口拉得很宽,或者屏幕上同时开着别的窗口,这个操作并不顺手。

dsh-rightbar-exit-strip 就是针对这个场景的客户端插件:它在全屏右侧栏的左边缘加一条可点击的退出竖条,并支持双击会话与右侧栏之间的分割线直接进入全屏。维护者是 2315137135,分类为客户端,纯 JavaScript 实现,无需构建。

这是什么

一句话定位:给 DSH 右侧栏全屏状态补上更顺手的进、退入口。

它解决的问题很具体:全屏面板盖住视口后,可用出口只剩右上角的面板控件;本插件补的入口是①全屏中左边缘的退出条,②双击分割线进入全屏。

需要说明的是,插件本身不改右侧栏布局,也不新增面板,只是在既有 DOM 标记之上增加了两个交互入口。

核心功能

支持的手势与结果如下:

手势 结果
双击会话与右侧栏之间的拖拽分割线 进入全屏
全屏中悬停左侧竖条 → 点击 退出全屏
全屏中 分割线不渲染,退出只能走竖条或右上角的面板按钮

竖条的视觉与交互细节:

  • 平时是 5px 半透明竖条。
  • 悬停变宽成 11px,显示右向箭头,并转成品牌色。
  • 上下各留 18%,避开页签条和面板左下角的缩放控件。
  • 键盘聚焦同样会展开竖条,回车即可退出。

进出全屏走的是同一条路径:都调用 ctx.sidebarRight.commandTarget() 加 toggleFullscreen(),与面板上的按钮一致,会记入布局历史;服务不可用时退回点击面板自己的 [data-sidebar-right-mode] 控件。

安装与启用

从 GitHub 安装,纯 JavaScript,无需构建:

plugin_manager install_bundle
target: github:2315137135/dsh-rightbar-exit-strip

也可以使用 git+https://github.com/2315137135/dsh-rightbar-exit-strip.git,或克隆到本地后用绝对目录安装。安装后刷新 Harness 页面。

仓库:https://github.com/2315137135/dsh-rightbar-exit-strip,许可证为 MIT。插件当前版本号为 0.1.0(见 package.json 的 version 字段),在 Harness 中无需再做额外配置,刷新页面即生效。

典型用法

安装并刷新页面后,按下面的顺序验证两个入口即可:

1、把右侧栏拉成全屏:进入会话视图,点击右侧栏右上角的形态切换按钮,或直接双击会话与右侧栏之间的拖拽分割线。
2、确认左边缘出现退出竖条:此时视口被面板盖住,左侧能看到 5px 的半透明竖条;把鼠标移过去,竖条变宽为 11px 并显示右向箭头。
3、点竖条退出全屏:点击后面板回到正常宽度。
4、用键盘退出:用 Tab 把焦点移到竖条上,竖条同样展开,按回车退出。

如果只想进全屏不想退出,第 2 步和第 3 步可以跳过;纯键盘操作时,第 4 步是主要路径。

实现要点

这一节说明插件是怎么做到“跟随面板走”的,便于判断它在你的环境里是否稳定。

只在全屏时渲染

插件检测 [data-sidebar-right-panel="fullscreen"],位置取自该面板的 getBoundingClientRect()。所以 Windows 桌面端的标题栏内缩、左侧栏展开宽度、窗口缩放都自动跟随。同时另挂了 ResizeObserver、窗口 resize 与 MutationObserver。

为什么 portal 到 document.body

shell.overlay 容器是 z-index:20 的层叠上下文,而全屏面板内部的 ._tabCell 用 z-index: var(--dsh-dockkit-dock-layer)(全屏为 40)参与同一个层叠上下文。浮层里的元素再高的 z-index 也压不过面板。跳出这个上下文,把竖条挂到 document.body 才是正解。

为什么不用 dblclick

分割线是框架的 [data-side="rightbar"] 拖拽柄,它在 pointerdown 里调用了 preventDefault(),兼容性鼠标事件会被抑制,因此 dblclick 不可靠。插件自己在捕获阶段数左键 pointerdown:500ms 内、6px 范围内两次即判定为双击。

依赖的出厂契约

插件读的是面板的 DOM 标记与 ARIA 属性。Harness 大版本升级后若这些标记改名,需要同步调整:

  • [data-sidebar-right-panel="fullscreen"] —— 全屏形态标记
  • [data-side] 等于 rightbar —— 会话与右侧栏之间的拖拽分割线
  • [data-sidebar-right-mode] —— 面板右上角的形态切换按钮(值为下一个形态)

换句话说,这套交互依赖框架侧的稳定标记,升级 Harness 后建议先跑一遍上面的验证步骤。

适用场景与注意

适合的场景:经常使用右侧栏并切成全屏,或者窗口布局复杂、角落按钮不好点的开发者。

需要注意:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(本插件为 MIT)。
  • 插件读的是框架的 DOM 标记与 ARIA 属性,Harness 大版本升级后若标记改名,需要同步调整。
  • 全屏状态下分割线不渲染,退出只能走左边缘竖条或右上角面板按钮;这是插件的限制,不是配置项。

结尾

dsh-rightbar-exit-strip 的价值不在于新增面板,而在于给已有的全屏右侧栏补上顺手的进、退入口:进屏双击分割线,退屏点左边缘竖条或按回车,不改变原有布局。如果你主要用右侧栏全屏工作,值得装来试试。

目录页:https://www.skillhub.cn/plugins/2315137135/dsh-rightbar-exit-strip
GitHub:https://github.com/2315137135/dsh-rightbar-exit-strip

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

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

小夜