Vai al contenuto principale
A

dsh-cursor-theme

auki-zy/dsh-cursor-theme

Personalizza il cursore del mouse del PC per ogni stato dell'interfaccia in DeepSeek Harness.

Installazione

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

Plugin correlati