fidgy Svelte Themes

Fidgy

A playful box-robot desktop companion that pops up while Claude Code is thinking. Tauri + Svelte.

Fidgy πŸ€–

A tiny box-robot who keeps you company while Claude Code is busy thinking.

Fidgy

You know that gap between hitting Enter and getting Claude's reply? That weird limbo where you stare at the spinner, alt-tab to Twitter, and forget what you were even doing? Fidgy fills it.

He's a small floating widget who:

  • πŸ‘€ Watches Claude for you. Wakes up when Claude starts thinking. Bounces a yellow chip when Claude needs your input. Sparkles + chimes when Claude is done β€” so you can stop staring and look back.
  • 🌬️ Gives you something nicer to do. Breathing exercises, eye exercises, back stretches, face workouts, Islamic dhikr, housekeeping nudges, idea capture. Pick one, or hit surprise me ✨.
  • 🀏 Has feelings. Click and hold him to drag β€” his eyes go shocked while he swings from his antenna. Click his chest LED and he shrinks to a corner. Click him there to bring him back.

It's open source. It's MIT-licensed. Go wild.


Get Fidgy

🟒 The easy way (most people)

  1. Grab Fidgy.app.zip from the latest release.
  2. Unzip β†’ drag Fidgy.app to Applications.
  3. Important first launch: macOS will say "Fidgy is damaged and can't be opened" because the app isn't signed by Apple ($99/yr developer account, no thanks). Open Terminal and run:
    xattr -cr /Applications/Fidgy.app
    
    This removes the quarantine attribute that browsers add to downloaded apps. You only need to do this once.
  4. Launch from Spotlight (⌘ + Space β†’ type "fidgy") or double-click in Finder.
  5. Wire him up to Claude Code (one command):
    git clone https://github.com/halaAlfaisal/fidgy.git
    bash fidgy/hooks/install.sh
    
    That's it. Now Fidgy reacts whenever Claude does something.

πŸ› οΈ The terminal-flex way (if you want to hack)

You'll need Rust, Node 20+, and pnpm.

git clone https://github.com/halaAlfaisal/fidgy.git
cd fidgy
pnpm install
pnpm tauri dev          # launches Fidgy with hot reload

To build your own Fidgy.app:

pnpm tauri build --bundles app
# β†’ src-tauri/target/release/bundle/macos/Fidgy.app

Then drag it into /Applications like a real Mac app.


What does Fidgy actually do?

A button-tap menu of things to keep you sane while Claude works:

Mode What
🌬️ breathe Two animations to pick from: nested polygons emerging vertex-by-vertex, or three teal ripples gently radiating. Both follow the medical 4-7-8 breath.
πŸ“Ώ athkar Arabic dhikr counter. Tap to count. Hit your target β†’ stars in his eyes.
🀸 move "Calf raises Γ— 20!" Random seated exercise + rep counter.
🧘 stretch Back stretches, seated or standing. Reps or timed holds.
😊 face Silly face workouts. Lion face. Fish lips. Goes harder than you'd think.
πŸ‘€ eyes 20-20-20 rule, palming, near-far focus. For when you've been staring too long.
🧹 tidy "Wipe down your monitor." "Make your bed." One small thing at a time. Hit βœ“ done and Fidgy gets heart eyes.
πŸ’‘ ideas Stash a thought. Goes to localStorage. Won't bother you.
πŸ‘Ύ invaders A tiny Space Invaders. ←/β†’ to move, space to shoot. Clear all aliens before they reach you. Each cleared wave makes the next harder.
πŸƒ dash A Chrome-dino style endless runner. Space/↑ to jump, hold ↓ to kneel. Avoid cacti, duck under birds, score grows over time.

How Fidgy hears Claude

Three Claude Code hooks:

Hook in ~/.claude/settings.json Becomes Fidgy's reaction
UserPromptSubmit thinking πŸ‘€ wakes up Β· gray "thinking…" chip
Notification input βœ‹ bouncy yellow "needs you" chip Β· brings window to front
Stop done ✨ sparkle burst · mint "done ✨" chip · auto-fades

Run bash hooks/install.sh (idempotent β€” safe to re-run, backs up your settings first).

To trigger any state by hand for testing:

curl -s -X POST http://127.0.0.1:7777/event \
  -H 'Content-Type: application/json' \
  -d '{"event":"done"}'

(Swap done for thinking or input.)


Tech under the hood

  • Tauri 2 (Rust shell) + Svelte 5 (UI with runes) + Vite
  • Local Axum HTTP listener on 127.0.0.1:7777 for Claude lifecycle events
  • Web Audio synth for chimes/pops/sparkles β€” no SFX file dependencies
  • Mint accent #5cd6c0, cream-yellow eyes #ffe98c, peach-pink hearts #ff6c9e
  • Polygon morph uses true vertex-based interpolation: each new vertex emerges from the top center of the previous polygon (apex for odd N, top-edge midpoint for even N)

Tiny manual

Action What it does
Click ❌ button Hides Fidgy. Click his dock icon to bring him back.
Drag the robot Moves the window. He'll go shocked-eyed.
Click his chest LED Mini mode β€” shrinks to a tiny window in the bottom-right.
Click him in mini mode Restores full window, recentered.

Contributing

Open issues, PRs, weird ideas all welcome. If you add a new mode or expression, the codebase tries to keep things simple β€” modes live in src/lib/modes/, expressions live in src/lib/Robot.svelte, state lives in src/lib/stores.ts.


License

MIT β€” do whatever, just don't sue me if Fidgy becomes self-aware.

Top categories

Loading Svelte Themes