dsh-cursor-theme
已验证dsh-cursor-theme · v0.3.0 · MIT · Web 界面
Customize the PC mouse cursor for every UI state inside DeepSeek Harness. 在 DSH 里自定义鼠标各种状态的图案。
安装
dsh plugin add dsh-cursor-theme 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
作者
说明文档
dsh-cursor-theme
🖱️ 为 DeepSeek Harness 自定义鼠标各种状态的图案 —— 每个 UI 状态(默认、点击、文本、等待、禁止……)都可以换成你喜欢的 PNG/CUR 光标,实时生效、跨会话保存。
English · 需求文档 · 可行性分析 · 已发布到 npm · 已收录于 DSH 1024Store · 已收录于 dshfind · 发布流程
上面每个格子展示一套主题的全部 14 种鼠标状态。除预设主题外,你导入的 personal 主题 也会出现在这里——见下方「个人主题」章节。
✨ 功能
- 🎯 按 UI 状态独立配置 —— 14 种鼠标状态(default、pointer、text、wait、help、not-allowed、grab、grabbing、progress、cell、copy、move、resize-ew、resize-ns),每个状态可单独设置图案、热区与尺寸
- 🎨 18 套原创预设主题 —— 每套完整覆盖全部 14 状态(内置烘焙 PNG):
- 6 套配色:极光、蜜糖、薄荷、晚霞、石墨、高对比
- 12 套创意主题:猫爪 🐾 · 能量充能 ⚡ · 霓虹夜城 🌃 · 表情包 😀 · 像素 8-bit 👾 · 天气 ⛅ · 折纸 📐 · 太空人 🧑🚀 · 糖果玻璃 🍬 · 幽灵小镇 👻 · 高可见放大 🔍(48px)· 波普圆点 🎈
- 一键应用;每套主题还可一键下载为 ZIP 图片包
- 🖼️ 内置 SVG 模板库(25 个原创形状)+ 上传自己的 PNG/CUR(≤128×128、≤5MB 校验)
- 📦 图片包导入/导出 —— 一个 ZIP(每状态一张 PNG +
manifest.json),可直接查看、修改、分享真实图片文件,或用 AI 生成后导入 - 🪟 应用到系统(Windows) —— 一键把主题写入系统光标方案(注册表 +
SPI_SETCURSORS),Explorer 与所有应用立即生效;macOS 实验性 Swift 覆盖层 + 辅助功能权限引导 - 📍 热区编辑(X/Y)点击精确 · 🔍 尺寸档位 16/24/32/48
- 👁️ 每行右侧成品光标预览 + 左侧系统默认图标 —— 始终清楚自己正在替换什么
- ♿ 无障碍 —— 每项规则必带 fallback 关键字,图案失效自动回退系统光标,永不隐藏
- 💾 配置持久化到 profile(dsh-settings),重启保留
- 🌐 中英双语(locale 机制)
📦 安装
# DSH Desktop(GUI 运行的是 desktop profile)—— 也可从插件市场(1024Store)安装
dsh plugin --profile desktop add dsh-cursor-theme
# 纯 dsh web / 浏览器(可选)
dsh plugin --profile web add dsh-cursor-theme
重启 DSH Desktop(或刷新 dsh web),打开 设置 → 光标主题。
🎯 使用
| 操作 | 方法 |
|---|---|
| 套用预设主题 | 设置 → 光标主题 → 点击主题 |
| 下载主题 ZIP | 点击主题旁的下载图标 |
| 自定义单个状态 | 状态行点「编辑」→ 上传 PNG/CUR 或选内置形状 → 设置热区/尺寸 |
| 导入 ZIP 图片包 | 图片包 → 导入(例如 AI 生成的图片包) |
| 应用到整个系统(Windows) | 应用到系统 → 一键生效 |
| 全部还原 | 恢复系统默认 |
🎨 个人主题(Personal)—— Fork 自己的主题
宣传图上带 Personal 徽章、虚线边框、排在最后的那个格子,就是你自己的主题(示例:cat-sitiao)。两种方式让你的主题永久化:
方式 A —— ZIP 图片包(无需写代码)
- 在 DSH 中:设置 → 光标主题 → 导入任意 ZIP 图片包(每状态 PNG +
manifest.json——可先导出一套内置主题作为模板,或用内置 AI 提示词生成一套) - 把 ZIP 存在自己的笔记/仓库里,随处可重新导入
方式 B —— Fork 仓库(推荐给贡献者)
- Fork 本仓库(Fork 就是你的独立副本,自行管理)
- 在
scripts/theme-art.mjs里添加你的主题条目(复制一个现有的改配色/图案即可),或把自己的图片包放到data/themes-personal.json(格式{ "schema": 1, "name": "...", "states": { ... } }) - 运行
node scripts/generate-theme-packs.mjs && node scripts/generate-assets.mjs烘焙 - 在 设置 → 光标主题 中应用,或发布你的 Fork / 提 PR 分享
你的 Fork 完全属于你——自由定制配色与图标,不用担心上游改动影响(Fork 相互独立)。
🛠️ 开发
npm install
npm run check # typecheck + build + test
npm run build # 构建宿主端 lib/ 与客户端 client/client.js
素材管线
scripts/theme-art.mjs—— 12 套创意主题的原创手绘矢量素材(逐状态 SVG + 装饰器:发光 / 高光 / 圆点)scripts/generate-theme-packs.mjs—— 用@resvg/resvg-js把每套主题渲染成 32×32(或 48×48)PNG,产出data/theme-packs/<id>.zip(图片包)+data/themes-<id>.jsonscripts/generate-assets.mjs—— 把主题包合并进data/assets.json(内置预设目录)- 客户端经 esbuild 打包为单文件
client/client.js(external 仅 react 与@deepseek-ai/*,由宿主__ModuleLoader__注入)
插件市场
docs/catalog/manifest.json+docs/catalog/v1/plugins.json—— DSH Community Market 标准目录源(v1 合约),可部署到任何能正确返回 JSON content-type 的托管平台(如 Cloudflare Pages / Vercel)- npm 发布:
npm publish(需要带 bypass 2FA 的公共 npm 发布 token)
📁 目录结构
├── package.json # dsh.bundle + dsh.client 声明
├── cordis.patch.yml # 层插入补丁
├── docs/
│ ├── feasibility.md # 可行性分析
│ ├── requirements.md # 需求文档
│ └── catalog/ # 标准市场目录源
├── src/
│ ├── index.ts # 宿主端入口(settings 命名空间注册)
│ ├── schema.ts # 配置 schema(dsh-settings)
│ ├── system.ts # Windows 注册表应用 / macOS Swift 覆盖层
│ ├── cur.ts # PNG → .cur 编码
│ └── client/ # 客户端(esbuild 打包为单文件 client/client.js)
│ ├── index.ts # 客户端入口(样式注入 + settings.section 注册)
│ ├── section.tsx # 设置界面(状态/素材/主题/热区/尺寸/预览/还原)
│ ├── style.ts # cursor CSS 生成器
│ ├── states.ts # 状态 → CSS 选择器映射表
│ ├── assets.ts # 内置素材目录
│ ├── themes.ts # 内置主题目录
│ ├── pack.ts # 主题包导出/导入与校验
│ ├── locales.ts # 中英文案
│ └── types.ts # 客户端结构类型
├── scripts/
│ ├── build-client.mjs # esbuild 打包 + __ModuleLoader__ banner
│ ├── theme-art.mjs # 原创创意主题素材
│ ├── generate-theme-packs.mjs # PNG 渲染 → 图片包 + 内置数据
│ └── generate-assets.mjs # 合并主题包到 data/assets.json
├── data/ # 生成产物(主题图片包、内置目录)
└── tests/ # 单元测试(34 个)
📄 License
MIT