dsh-im-workspace-buttons:在工作区标题行按 dsh-im 频道筛选会话列表

前言

在 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。

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

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

Xiaoye