- Главная
- Плагины
- Улучшения UI
- dsh-cursor-theme
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-themeREADME
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
| Action | How |
|---|---|
| Apply a preset theme | Settings → Cursor Theme → click a theme pill |
| Download a theme as ZIP | Click the download icon next to a theme |
| Customize one state | Edit next to a state row → upload PNG/CUR or pick a built-in shape → set hotspot/size |
| Import a ZIP pack | Image pack → Import (e.g. a pack generated by an AI) |
| Apply to the whole OS (Windows) | Apply to system → one click |
| Reset everything | Restore 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, emitsdata/theme-packs/<id>.zip(image packs) +data/themes-<id>.jsonscripts/generate-assets.mjs— merges packs intodata/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