前言¶
在 DSH 桌面端里接 @xmanrui/dsh-im 后,多个 IM 频道的会话会混在官方侧边栏的工作区列表里。若同时用了带皮肤的全套主题,往往只为「按频道切视图」而装一整包样式与构建链。dsh-im-workspace-buttons 把原先 eva-inspired-theme 里这一项能力单独拆成客户端插件:在工作区标题行放频道按钮,点选后只显示该频道会话,再点一次回到官方列表。下面介绍它的定位、行为与安装方式。
这是什么¶
维护者为 WhatCannotBeSaid,npm 包名 dsh-im-workspace-buttons,插件 id 同为 dsh-im-workspace-buttons(也是客户端模块 id 与 locale 命名空间)。分类属于 DSH 客户端插件:不替换主题、不依赖 eva-inspired-theme 的 CSS 或构建,只负责工作区 header 行上的 28×28 频道入口与会话可见性规则。
核心功能¶
工作区标题行的频道按钮¶
每个已配置账号的 dsh-im 频道对应一个 28×28 图标按钮,位置在官方「工作区」标题行(带 sidebar.workspaces.directoryFlow 标记的那一行),位于搜索槽左侧,顺序与插件内的频道表一致。
点击:频道视图与官方列表切换¶
按一次某个频道按钮,侧边栏进入该频道的视图:只绘制该频道的会话行(通过 data-dsh-im-session-channel 或行标题归属识别),其余行全部隐藏——其他频道、官方会话、分组标题、展开更多控件等。再按同一入口,回到官方列表。
默认隐藏 dsh-im 会话¶
在未点亮任何频道按钮时,三种视图(工作区、工作区树、单列表)里 都不显示 dsh-im 会话;每条 dsh-im 行带有 data-eva-im-tag='off'。只有当前点亮的频道其会话行变为 'on' 并可见。非 dsh-im 会话不会被这条规则打上 tag,在官方列表里照常显示;在频道视图里则与其它无关行一样被隐藏。
按钮何时出现¶
仅当频道 已有账号 时显示入口:connection.status 在 bots[] 里返回非空 botId,或旧字段 configured: true。若 RPC 未就绪或探测失败,首次不画按钮,之后会沿用上一次判定。没有 @xmanrui/dsh-im 或没有任何已连接频道时,按设计不会出现按钮。
折叠分组与单列表¶
点击频道时,若会话在折叠分组内,插件会展开、分页并滚动到该频道第一条会话,步数上限 CLICK_LIMIT = 200。控件在视图中被隐藏但仍可点击,以便先画出再隐藏行。分组归属遵循宿主 groupByWorkspace 规则(home()),与 cwd 无关。Ungrouped 无分组标题可点,插件只点其 overflow: 展开控件。
样式与主题版差异¶
运行时注入 <style data-dsh-im-workspace-buttons-sheet>,颜色来自 --dsw-* token;选择器仍使用自主题提取的 data-eva-im-* 前缀以保持与 eva-inspired-theme 样式兼容。标签文案经 Client locale 服务,跟随 profile 语言,无 registry 时回退中文。
官方分组、折叠状态、spy 计数、会话顺序 不会被改写;退出频道视图后,官方行按宿主原有状态重新显示。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。需 Node >= 18,且已安装 @xmanrui/dsh-im 并至少有一个已连接频道。
1、安装 npm 包到 desktop profile:
npm install dsh-im-workspace-buttons --prefix ~/.dsh/profiles/desktop --registry=https://registry.npmjs.org
2、在 profile 的 package.json 里,把 dsh-im-workspace-buttons 追加到 dsh.profile.bundles(<profileDir> 即 ~/.dsh/profiles/desktop)。
包内自带 dsh.bundle.patch,一般 不必 手改 cordis.patch.yml;但若 bundles 列表未包含本包,加载器不会挂载插件。
3、重启 DSH。
从 eva-inspired-theme 迁移¶
eva-inspired-theme 1.2.0 起已不再内置这些按钮。不要 与主题版同时安装:主题版用 data-eva-im-* 与 eva-im-filter locale,本包用 data-dsh-im-* 与 dsh-im-workspace-buttons,并存会在同一行画两套按钮且样式互不覆盖。升级到 eva-inspired-theme@1.2.0 并安装本包,交互、图标、顺序与可见性规则与原先一致,可视为直接替换。
典型用法¶
安装并重启后,在工作区标题行左侧会出现已配置频道的图标。需要只看某一 IM 频道会话时,点对应按钮;处理完或要回到 DSH 原生工作区列表时,再点同一按钮。无需额外配置文件或 CLI。
适用场景与注意¶
- 适合:已在 DSH 使用 dsh-im、希望侧边栏按频道切换视图、又不想为这一功能装整套 eva 主题的用户。
- 不适合:未装 dsh-im 或没有任何已连接频道(不会出现按钮)。
- 依赖:运行时必须有
@xmanrui/dsh-im;宿主客户端服务sessions/workspaces/locale/connection由插件通过ctx.get使用,不单独 import。 - 生态:DSH 社区插件目录见 SkillHub 条目,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
结尾¶
dsh-im-workspace-buttons 把「工作区旁按频道筛会话」从主题里拆成独立客户端插件,安装路径清晰,与 dsh-im 账号状态绑定。进一步了解可查阅 GitHub README(含英文与 README.zh.md)及目录页 skillhub.cn/plugins/WhatCannotBeSaid/dsh-im-workspace-buttons。