READMESource: main@9d8ef192
工作区顶栏(dsh-workspace-topbar)
把「工作区(项目)切换器」从左侧栏中部搬到窗口标题栏——也就是 macOS 菜单栏正下方、 红绿灯右边那一条,然后在顶部选定一个项目,左侧会话列表就只留下这个项目的会话。
效果
- 标题栏左侧出现一个胶囊按钮:
▣ 全部项目 ⌄;点开后列出全部工作区(显示会话数)。 - 选定某个项目后,左侧列表只显示该项目的分组与会话,其他项目隐藏。
- 选「全部项目」恢复原样;选择会记住,重启 DSH 后仍然生效。
- 新建项目后自动切过去:顶部胶囊换成新项目,左侧同步只显示它。
- 只在插件自己的选择器上做视觉优化,不改动现有布局。
为什么不在菜单栏里
macOS 菜单栏(Menu Bar)由 Electron 主进程用系统菜单 API 绘制,挂在安装包的 主进程代码里。DSH 插件运行在独立的 Node 进程和网页里,没有修改它的入口; 硬改安装包会被应用更新覆盖,也会破坏签名。因此选择器放在插件能到达的最顶部 位置:窗口标题栏。
安装
dsh plugin add dsh-workspace-topbar
也可以从源码目录安装(plugin_manager 的 install_bundle,目标是本目录的绝对路径)。
装好后重启 DSH 或刷新页面,插件页会显示「工作区顶栏」及说明。
原理
- 顶栏:Client 半边向
conversation.header.leading槽位注册组件,用槽位自带的useWorkspaces读取工作区快照;选中状态存localStorage。 - 过滤:ui-workspace 在渲染侧边栏时给行打了
data-row-key="workspace:<id>"/"session:<id>"标记。插件按选中项目隐藏其他分组,并兜底隐藏其他项目的会话行; 列表被 React 重渲染时用MutationObserver重新应用。
限制与风险
- 过滤依赖上述
data-row-key标记。DSH 大版本升级若改了侧边栏结构,过滤可能失效; 失效时插件会安静地不处理(列表恢复原样),不会报错。 - 隐藏只是显示层面,不删除、不归档任何会话;取消选择或卸载插件即恢复。
- 若与其他改写侧边栏的插件(例如提供文件树的侧栏插件)同时使用,过滤逻辑仍作用于 「工作区/会话」标记所在的行,不会改动文件树区域。
卸载
在插件页停用或卸载本 bundle,然后重启 DSH。所有被隐藏的行会自动恢复显示。
No comments yet. Be the first to write one.