How sadsnake1/cursor-smith works
Cursor-Smith is an Obsidian plugin that replaces and animates the caret. Its main user-to-result path is enabling/configuring the plugin, tracking caret positions in editors and other editable surfaces, then drawing the configured cursor and effects on a canvas. Settings also support presets, share codes, Vim-specific looks, and commands; effect modules cover the README’s distinct visual features. The sampled code confirms the plugin/settings and several internal dependencies, but does not expose all runtime wiring, so uncertain call edges are omitted.
Main entry points: plugin.ts Plugin lifecycle · settings-tab.ts Settings panel · effects.ts Effect dispatch · effects-fire.ts Hot-head flames
Components 26
Plugin integration
- Plugin entry
src/main.ts - Plugin lifecycle
src/plugin.ts - Vim integration
src/vim.ts
Caret tracking
- Caret state
src/carets.ts - Caret measurement
src/measure.ts - Motion behavior
src/motion.ts
Canvas rendering
- Canvas engine
src/engine.ts - Canvas geometry
src/geometry.ts - Cursor painting
src/paint.ts - Shape and color
src/paint-shape.ts - Frame effects
src/paint-frame.ts - Color utilities
src/color.ts
Settings and presets
- Settings panel
src/settings-tab.ts - Settings model
src/settings.ts - Preset catalog
src/presets.ts - Preset sharing
src/share.ts
Visual effects
- Effect dispatch
src/effects.ts - Pop and fireworks
src/effects-pops.ts - Particle trails
src/effects-trail.ts - Stardust
src/effects-dust.ts - Torch spotlight
src/torch.ts - Torch painting
src/torch-paint.ts - Hot-head flames
src/effects-fire.ts - Fire behavior
src/fire.ts
Other components
- Obsidian user
- Obsidian APIs
Connections 22
- Obsidian user → Obsidian APIs: uses
- Obsidian APIs → Plugin entry: loads plugin
- Plugin entry → Plugin lifecycle: exports
- Plugin lifecycle → Obsidian APIs: uses APIs
- Plugin lifecycle → Settings panel: creates panel
- Plugin lifecycle → Settings model: migrates settings
- Plugin lifecycle → Motion behavior: applies motion policy
- Plugin lifecycle → Vim integration: integrates Vim
- Settings panel → Settings model: reads configuration
- Settings panel → Preset catalog: offers presets
- Settings panel → Preset sharing: encodes share codes
- Settings panel → Obsidian APIs: uses UI APIs
- Plugin lifecycle → Canvas engine: runs canvas engine
- Canvas engine → Canvas geometry: fits canvas region
- Caret measurement → Motion behavior: checks caret host
- Effect dispatch → Pop and fireworks: dispatches pop effects
- Effect dispatch → Particle trails: dispatches trails
- Effect dispatch → Stardust: dispatches dust
- Effect dispatch → Hot-head flames: dispatches flames
- Hot-head flames → Fire behavior: quantizes fire
- Pop and fireworks → Color utilities: uses colors
- Hot-head flames → Color utilities: uses colors