A macOS application that cares about your sight and posture
Find a file
hicham 6a00a8ddcc
Fix countdown range crash; update README screenshot
Crash report from 01:10: OverlayView traps when body re-evaluates after
endsAt has passed (dismissal lags up to a tick) — ClosedRange requires
lowerBound <= upperBound. Clamp the timer interval to now.

Screenshot updated to the menu-bar-free overlay.
2026-07-09 15:58:33 +02:00
docs Fix countdown range crash; update README screenshot 2026-07-09 15:58:33 +02:00
Horizon Fix countdown range crash; update README screenshot 2026-07-09 15:58:33 +02:00
.gitignore Initial version: menu bar reminder with full-screen overlay, local history, stats and settings 2026-07-08 17:37:51 +02:00
project.yml Initial version: menu bar reminder with full-screen overlay, local history, stats and settings 2026-07-08 17:37:51 +02:00
README.md README: add overlay screenshot 2026-07-09 15:42:47 +02:00

Horizon

macOS menu bar app that periodically reminds you to sit up straight and look at the horizon. Reminders appear as a full-screen overlay with a countdown on every display, skippable with Esc or the Skip button. Every reminder (completed or skipped) is logged locally and browsable in a stats window.

Break overlay on a blurred wallpaper

The overlay backdrop is your own wallpaper, blurred — including macOS aerial wallpapers, resolved from the wallpaper store.

Build

Requires Xcode and XcodeGen (brew install xcodegen).

xcodegen generate
xcodebuild -project Horizon.xcodeproj -scheme Horizon -configuration Debug \
           -derivedDataPath build build
open build/Build/Products/Debug/Horizon.app

project.yml is the source of truth; Horizon.xcodeproj is generated and git-ignored.

Usage

Horizon lives in the menu bar (no Dock icon) and shows the minutes until the next break. The menu offers: start a break now, pause for an hour or until resumed, stats, settings, quit.

Settings: reminder interval (1060 min, default 30), countdown duration (10120 s, default 30), sound, launch at login. Debug builds add a 10-second interval option for testing.

Events are stored in ~/Library/Application Support/Horizon/events.json. The schedule resets on wake and screen unlock so a break never fires the moment you come back.