Chuyển đến nội dung chính

dsh-cursor-theme

Đã xác minh

dsh-cursor-theme · v0.3.0 · MIT · Giao diện web

Customize the PC mouse cursor for every UI state inside DeepSeek Harness. 在 DSH 里自定义鼠标各种状态的图案。

Cài đặt

dsh plugin add dsh-cursor-theme

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Thẻ

Tác giả

Readme

dsh-cursor-theme

🖱️ 为 DeepSeek Harness 自定义鼠标各种状态的图案 —— 每个 UI 状态(默认、点击、文本、等待、禁止……)都可以换成你喜欢的 PNG/CUR 光标,实时生效、跨会话保存。

English · 需求文档 · 可行性分析 · 已发布到 npm · 已收录于 DSH 1024Store · 已收录于 dshfind · 发布流程


dsh-cursor-theme — 19 套主题 × 14 状态

上面每个格子展示一套主题的全部 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 图片包(无需写代码)

  1. 在 DSH 中:设置 → 光标主题 → 导入任意 ZIP 图片包(每状态 PNG + manifest.json——可先导出一套内置主题作为模板,或用内置 AI 提示词生成一套)
  2. 把 ZIP 存在自己的笔记/仓库里,随处可重新导入

方式 B —— Fork 仓库(推荐给贡献者)

  1. Fork 本仓库(Fork 就是你的独立副本,自行管理)
  2. 在 scripts/theme-art.mjs 里添加你的主题条目(复制一个现有的改配色/图案即可),或把自己的图片包放到 data/themes-personal.json(格式 { "schema": 1, "name": "...", "states": { ... } })
  3. 运行 node scripts/generate-theme-packs.mjs && node scripts/generate-assets.mjs 烘焙
  4. 在 设置 → 光标主题 中应用,或发布你的 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>.json
  • scripts/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