A lightweight macOS menu bar app that reminds you to take eye breaks. Built with Swift + AppKit + SwiftUI, no third-party dependencies.
- Menu bar countdown -- eye icon with live countdown timer always visible
- Full-screen break overlay -- covers all screens with a dark overlay when it's time to rest; cannot be dismissed until the minimum break duration passes
- 30-second pre-alert -- a floating notification appears before each break, so you can wrap up what you're doing
- Postpone -- delay a break by 5 minutes (up to 2 times per cycle)
- Configurable -- adjust work interval (15/20/25/30/45 min) and minimum break duration (15/20/30/60 sec) from the menu bar
- Launch at login -- optional, toggle from the menu bar
- Random tips -- each break shows a random wellness tip (look away, blink, stretch, drink water, etc.)
- Zero dependencies -- pure Swift, ships as a single
.appbundle
- macOS 13.0+
- Xcode Command Line Tools (
xcode-select --install)
# Build and package into .app
bash scripts/build.sh
# Install
cp -r .build/release/Blink.app /Applications/
# Or run directly
open .build/release/Blink.appOnce running, Blink lives in your menu bar:
| Menu bar | Description |
|---|---|
👁 18:32 |
Eye icon + countdown to next break |
Click the icon to access settings:
- Work interval -- how long between breaks
- Minimum break -- shortest enforced break duration
- Launch at login -- start automatically on boot
- Reset timer -- restart the current countdown
- Quit -- exit the app
- Pre-alert (T-30s): A floating banner appears at the top of your main screen showing a countdown. If postpones remain, a "Postpone 5 min" button is available.
- Break (T-0s): All screens are covered with a dark overlay. A random tip is displayed along with a countdown. You cannot dismiss until the minimum break time passes.
- Dismiss: Once the timer expires, an "End break" button appears. The elapsed rest time is shown so you can choose to rest longer.
MIT