Smart 20-20-20 reminders for macOS. Lives in your menu bar. Triggers TV static when it's time to rest.
Download Β· Website Β· Report Bug Β· Request Feature
Staring at screens all day causes digital eye strain β headaches, dry eyes, blurred vision. The 20-20-20 rule (every 20 min, look 20 feet away for 20 seconds) is clinically proven to help, but reminders are easy to dismiss.
EyeBreak takes a different approach: when break time comes, your screen fills with TV static. No countdown to stare at, no pretty animation. Just a boring screen that makes you look away naturally.
|
|
- Download the latest DMG
- Open the DMG and drag EyeBreak to
/Applications - Right-click the app β Open (first time only β due to macOS security)
brew install --cask eyebreakgit clone https://github.com/MayadahAA/EyeBreak.git
cd EyeBreak
make run| Requirement | Version |
|---|---|
| macOS | 13 (Ventura) or later |
| Swift | 5.9+ (for building) |
| Disk | ~1 MB |
- Launch β an eye icon appears in your menu bar
- Click to view the timer, stats, and settings
- Work normally β EyeBreak runs quietly in the background
- Break time β your screen fills with TV static for 20 seconds
- Press ESC anytime to skip a break
EyeBreak uses an Open Core model. The free version in this repo is fully functional and open source. Pro features are distributed as signed DMG builds.
EyeBreak/
βββ Sources/EyeBreak/ # Core app (free, open source)
β βββ EyeBreakApp.swift # Entry point
β βββ TimerManager.swift # Timer + stats engine
β βββ SettingsManager.swift # UserDefaults + login item
β βββ NotificationManager.swift # macOS notifications
β βββ BreakOverlayWindow.swift # TV static NSPanel
β βββ MenuBarView.swift # SwiftUI popover
β βββ Strings.swift # AR + EN localization
β βββ ProManager.swift # Pro stub (free build)
β βββ UpdateManager.swift # GitHub Releases checker
βββ Resources/Info.plist # App bundle metadata
βββ scripts/ # Build + release tooling
βββ website/ # Landing page (GitHub Pages)
βββ docs/ # Documentation + screenshots
Tech stack: Swift 5.9 Β· SwiftUI Β· AppKit Β· UserNotifications Β· ServiceManagement Β· Combine Β· Swift Package Manager
Zero external dependencies.
# Build release
make
# Build + launch
make run
# Install to /Applications
make install
# Demo mode (10-second timer for testing)
open build/EyeBreak.app --args --demo
# Create distribution DMG
bash scripts/create-dmg.sh- v1.0 β Initial release: menu bar app, TV static, AR/EN
- v1.1 β Pro features: weekly stats, custom sounds, Pomodoro
- v1.2 β Homebrew Cask distribution
- v1.3 β Apple Notarization (no security warnings)
- v2.0 β iOS companion app (Shortcut integration)
See CHANGELOG.md for version history.
Contributions welcome! Please read CONTRIBUTING.md first.
Quick guide:
- Fork the repo
- Create a feature branch (
git checkout -b feat/amazing-feature) - Commit (
git commit -m 'feat: add amazing feature') - Push (
git push origin feat/amazing-feature) - Open a Pull Request
- Found a bug? Open an issue
- Feature idea? Request it
- Like the project? Sponsor development Β· Star on GitHub
EyeBreak is released under the MIT License.
Built with β€οΈ by MayadahAA
Made using Claude Code Β· Inspired by the 20-20-20 rule


