dsh-pwsh-style:为 DSH 会话中的 PowerShell 卡片换肤

DSH 会话中,PowerShell(pwsh)工具卡片的样式往往较为单一,缺乏统一的视觉规范和交互细节,影响阅读体验。下面介绍 dsh-pwsh-style 插件,它通过 CSS 注入和 DOM 装饰,为这些卡片提供了一套完整的换装方案。

插件定位

dsh-pwsh-style 是由 me9rez 维护的插件,分类为“趣味换装”。它的核心作用是修改 DSH 会话回复中 pwsh 工具卡片的主题、字体与可读性。架构沿袭了 dsh-file-mentions:Host 半负责设置与配置路由,Client 半通过 __ModuleLoader__ bundle 注入 CSS 并可选装饰 DOM。

核心功能

  1. 八套主题:提供 ps-blue、monokai、classic、dracula、nord、tokyo-night、solarized-dark、github-light 等预设。这些主题只通过 --pwsh-panel-* 变量作用于插件新增的元素(徽标、工具条、命令面板),绝不改写原生输出配色。
  2. PowerShell 徽标:卡片标题行自动注入 PS 图标药丸。
  3. 复制命令按钮:从 tool/call 事件精确读取 arguments.command,点击即可复制命令内容,不混入描述、输出或按钮文本。
  4. 展开/收起按钮:显示完整命令(长命令不再被省略号截断),并展示调用时的 工作目录。
  5. 字体配置:支持下拉选择系统已安装字体(font-list 枚举),并调整字号(11–16px)与字重(300–700)。
  6. 零 hash class 依赖:全部钩子基于稳定的 data-* 属性,DSH 升级重写 CSS-module 类名也不失效。

安装与启用

  1. 确保系统 PATH 中包含 pnpm(dsh plugin 会转发给 pnpm)。
  2. 执行官方安装命令:
dsh plugin --profile web add "github:me9rez/dsh-pwsh-style#main"

本地开发时也可用 link 方式安装:

dsh plugin --profile web add "link:C:/workspace/dsh-pwsh-style"
  1. 安装后需要重启 dsh web。该插件的 bundle 层在启动时组合,热更新(HMR)不生效。浏览器端需要硬刷新页面才能看到效果。

配置说明

打开 DSH Web GUI,进入 设置 页面,找到本插件的配置卡片。

可配置项包括:
* 启用:开关插件整体效果。
* 主题:下拉选择八套预设之一。
* 字体:下拉框选择系统字体,或选择“默认等宽字体”恢复内置栈(系统字体枚举失败时的回退列表)。
* 字号:11–16px。
* 字重:300(细)/ 400(常规)/ 500(中)/ 600(半粗)/ 700(粗)。

注意:字体配置的唯一例外是,它会整体覆盖官方 token --dsw-font-markdown-code-block-small,以便让命令提示行与输出区跟随所选字体。默认值时不注入任何样式。

工作原理

该插件通过 [data-tool="pwsh"] 属性定位卡片。由于 pwsh 在外层被归类为 bash 变体(TOOL_VARIANTS: { pwsh: "bash" }),但它的 entryKey 仍是字面工具名 "pwsh",因此命不中 bash toolview,回退到 GenericToolCard,其根元素稳定打上 data-tool="pwsh"。

命令数据从 tool/call 事件的 arguments 中读取 command / workdir,通过祖先节点的 data-chat-call-id 精确关联到卡片。徽标、按钮、命令面板等节点需要新建,插件使用 MutationObserver 在 React 渲染后动态插入,下一帧自动补回。

结语

该插件通过零 hash class 依赖和稳定的属性钩子,确保了在 DSH 升级后的兼容性。对于需要频繁查看 PowerShell 输出或希望统一会话风格的开发者,这是一个实用的配置项。

GitHub
DSH 插件目录

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

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

小夜