Перейти к основному содержимому
A

dsh-cursor-theme

auki-zy/dsh-cursor-theme

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

Установка

dsh plugin --profile web add github:auki-zy/dsh-cursor-theme

README

dsh-cursor-theme

🖱️ Per-state mouse cursor customization for DeepSeek Harness — give every UI state (default, pointer, text, wait, not-allowed, …) its own PNG/CUR cursor, applied live and persisted across restarts.

中文文档 · Requirements · Feasibility · Published on npm · Listed on DSH 1024Store


✨ Features

  • 🎯 Per-UI-state overrides — 14 mouse states (default, pointer, text, wait, help, not-allowed, grab, grabbing, progress, cell, copy, move, resize-ew, resize-ns), each with its own image, hotspot and size
  • 🎨 18 original preset themes — every theme covers all 14 states with baked PNGs:
    • 6 color palettes: Aurora, Honey, Mint, Sunset, Graphite, High Contrast
    • 12 creative themes: Paw 🐾 · Energy ⚡ · Neon 🌃 · Emoji 😀 · Pixel 👾 · Weather ⛅ · Origami 📐 · Astro 🧑🚀 · Candy 🍬 · Ghost 👻 · Hi-Vis XL 🔍 (48px) · Pop 🎈
    • One click to apply; every theme is also downloadable as a ZIP image pack
  • 🖼️ Built-in SVG template library (25 hand-drawn shapes) + upload your own PNG/CUR (≤128×128, ≤512 KB validated)
  • 📦 Image pack import/export — one ZIP (a PNG per state + manifest.json), inspect/edit/share real image files, or generate with an AI
  • 🪟 Apply to system (Windows) — one click writes the theme into the OS cursor scheme (registry + SPI_SETCURSORS), visible in Explorer and every app; macOS: experimental Swift overlay + Accessibility guidance
  • 📍 Hotspot editor (X/Y) for pixel-accurate clicks · 🔍 size steps 16/24/32/48
  • 👁️ Per-row finished-cursor preview (right) + system-default icon (left) so you always know what you are replacing
  • Accessibility — every rule carries a fallback keyword; failed images degrade to the system cursor, never none
  • 💾 Persisted to the profile (dsh-settings), survives restarts
  • 🌐 Bilingual (locale-driven zh/en)

📦 Install

# DSH Desktop (the GUI runs the `desktop` profile) — also installable from the Community Market (1024Store)
dsh plugin --profile desktop add dsh-cursor-theme

# Plain dsh web / browser (optional)
dsh plugin --profile web add dsh-cursor-theme

Restart DSH Desktop (or reload dsh web), then open Settings → Cursor Theme.

🎯 Usage

ActionHow
Apply a preset themeSettings → Cursor Theme → click a theme pill
Download a theme as ZIPClick the download icon next to a theme
Customize one stateEdit next to a state row → upload PNG/CUR or pick a built-in shape → set hotspot/size
Import a ZIP packImage pack → Import (e.g. a pack generated by an AI)
Apply to the whole OS (Windows)Apply to system → one click
Reset everythingRestore system default

🛠️ Development

npm install
npm run check    # typecheck + build + test
npm run build    # host lib/ + client client/client.js

Asset pipeline

  • scripts/theme-art.mjs — original hand-drawn art for the 12 creative themes (per-state SVG + decorators: glow / gloss / dots)
  • scripts/generate-theme-packs.mjs — renders every theme into 32×32 (or 48×48) PNGs via @resvg/resvg-js, emits data/theme-packs/<id>.zip (image packs) + data/themes-<id>.json
  • scripts/generate-assets.mjs — merges packs into data/assets.json (built-in preset catalog)
  • Client is bundled by esbuild into a single file (client/client.js), with react and @deepseek-ai/* kept external (injected by the host __ModuleLoader__)

Market catalog

  • docs/catalog/manifest.json + docs/catalog/v1/plugins.json — standard DSH Community Market catalog source (v1 contract), deployable to any host that serves JSON with the right content-type (e.g. Cloudflare Pages / Vercel)
  • npm publishing: npm publish (requires a public npm token with bypass 2FA for publishing)

📁 Layout

├── package.json            # dsh.bundle + dsh.client declarations
├── cordis.patch.yml        # layer insertion patch
├── docs/
│   ├── feasibility.md      # feasibility analysis
│   ├── requirements.md     # requirements (draft)
│   └── catalog/            # standard market catalog source
├── src/
│   ├── index.ts            # host entry (settings namespace registration)
│   ├── schema.ts           # config schema (dsh-settings)
│   ├── system.ts           # Windows registry apply / macOS Swift overlay
│   ├── cur.ts              # PNG → .cur encoding
│   └── client/             # client (esbuild → single-file client/client.js)
│       ├── index.ts        # client entry (style injection + settings.section)
│       ├── section.tsx     # settings UI (states/assets/themes/hotspot/size/preview/reset)
│       ├── style.ts        # cursor CSS generator
│       ├── states.ts       # state → CSS selector mapping
│       ├── assets.ts       # built-in asset catalog
│       ├── themes.ts       # built-in theme catalog
│       ├── pack.ts         # theme pack export/import + validation
│       ├── locales.ts      # zh/en dictionaries
│       └── types.ts        # client-local structural types
├── scripts/
│   ├── build-client.mjs    # esbuild bundle + __ModuleLoader__ banner
│   ├── theme-art.mjs       # original creative theme art
│   ├── generate-theme-packs.mjs # PNG rendering → packs + built-in data
│   └── generate-assets.mjs # merge packs into data/assets.json
├── data/                   # generated assets (theme packs, built-in catalog)
└── tests/                  # unit tests (34)

📄 License

MIT

Похожие плагины