Skip to main content

Exercise reminder overlay for Claude Code thinking time

Project description

vibe-wellness

Exercise reminder overlay for macOS. Pops up during Claude Code sessions to remind you to move.

overlay python PyPI

What it does

A floating overlay window appears periodically when you're using Claude Code:

  1. 3-second countdown with exercise name
  2. Animated stick figure GIF showing the exercise
  3. Progress bar + auto-dismiss after 30 seconds (or click to dismiss)

Install

One-liner:

curl -fsSL https://raw.githubusercontent.com/odysa/vibe-wellness/main/install.sh | bash

Or with uv:

uvx vibe-wellness

Both methods will:

  1. Install vibe-wellness via uv tool install
  2. Run the interactive setup wizard (language, interval, exercises, hook)
  3. Create a hook script at ~/.claude/hooks/vibe-wellness/show.sh
  4. Register the hook in ~/.claude/settings.json

Re-configure

Run vibe-wellness again to change settings.

Exercises

Key English 中文
kegels Kegels 提肛
drink_water Drink Water 喝水
squats Squats 深蹲
wall_pushups Wall Push-ups 靠墙俯卧撑
neck_rolls Neck Rolls 颈椎运动

All exercises include animated stick figure GIFs.

Configuration

Edit ~/.config/vibe-wellness/config.json:

{
  "lang": "zh",
  "interval": 900
}
Key Default Description
lang "auto" "en", "zh", or "auto" (detect system)
interval 900 Seconds between reminders
duration 30 Overlay display time in seconds
opacity 0.95 Window opacity (0.0 - 1.0)
exercises (built-in) Custom exercise list

Custom exercises

Exercises merge with defaults by key:

{
  "exercises": [
    { "key": "stretching", "name": { "en": "Stretch", "zh": "拉伸" } }
  ]
}

Custom GIFs

Drop {key}.gif in ~/.config/vibe-wellness/gifs/ to override any exercise animation.

Uninstall

vibe-wellness --uninstall

How it works

~/.claude/settings.json          Hook triggers on UserPromptSubmit/Stop/Notification
  -> ~/.claude/hooks/vibe-wellness/show.sh
    -> ~/.local/bin/vibe-wellness --show
      -> checks interval + single-instance lock
      -> spawns overlay (tkinter, borderless, always-on-top)
vibe_wellness/
  cli.py          Entry point
  installer.py    Interactive setup wizard (TUI)
  show.py         Single-instance guard + interval check
  ui.py           Overlay window (tkinter + CoreGraphics + ObjC runtime)
  config.py       Config loading, i18n, language detection
  uninstall.py    Clean removal
  config.json     Default exercises
  gifs/           Bundled exercise GIFs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vibe_wellness-0.3.6.tar.gz (181.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vibe_wellness-0.3.6-py3-none-any.whl (184.6 kB view details)

Uploaded Python 3

File details

Details for the file vibe_wellness-0.3.6.tar.gz.

File metadata

  • Download URL: vibe_wellness-0.3.6.tar.gz
  • Upload date:
  • Size: 181.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vibe_wellness-0.3.6.tar.gz
Algorithm Hash digest
SHA256 33ea75a818bff06a58bea5b4b97323f758a309d7a9083a40c22f8a4efe23efd2
MD5 6f4a1cb8b35013a84a0e9d5b178f0c1f
BLAKE2b-256 d0ff847ba0e940471a7c391d8fa381c2337568990395ed873d09ef87489ccc4f

See more details on using hashes here.

File details

Details for the file vibe_wellness-0.3.6-py3-none-any.whl.

File metadata

  • Download URL: vibe_wellness-0.3.6-py3-none-any.whl
  • Upload date:
  • Size: 184.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vibe_wellness-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a72bd8ee82bfba2ebba7c0c3c7406c018d217f6ffdae03f2654e481c58a45611
MD5 3c8ee5b651ad64dd5443b98b79ac1827
BLAKE2b-256 fbee8272adf7ca0f99078fe9ea614c55f3930fb71a2b1ee1943534657ee9bb82

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page