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

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

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

小夜