For about a week my eyes itched. I told myself it was allergies, dry air, too little sleep — anything but the obvious. Then it got bad enough that I couldn't get through a workday, and I finally saw an eye doctor. I left with two eyedrops, an ointment, and a month's course of pills.
The diagnosis was boring and entirely my fault: too many hours staring at a screen at a fixed distance, without ever looking away.
The rule I kept ignoring
Every eye doctor repeats the same one: 20-20-20. Every twenty minutes, look at something twenty feet away for twenty seconds. It's free, it works, and it's almost impossible to remember when you're deep in a problem.
I'd tried a couple of break reminders before and quit every one — they nagged me in the middle of meetings, interrupted a build I was watching, or fired mid-sentence and broke my train of thought. So I'd turn them off, and my eyes went back to paying the bill.
I wanted the opposite: something that insists on the break, but only when it won't cost me anything.
Building the thing I needed
Offscreen is a small macOS app that lives in your menu bar and counts down to your next eye break. When it's time, a full-screen overlay drifts in, a ring counts down twenty seconds, and you look away. Nothing revolutionary — the 20-20-20 rule with a nice coat of paint.
The interesting part is knowing when to stay quiet.
The hard part is knowing when not to interrupt
A break reminder is only as good as its restraint. So most of the work went into a Smart Pause that holds a break whenever interrupting would actually hurt:
- You're on a call — the camera or microphone is live.
- Something is playing full screen: a video, a game, a presentation.
- The screen is being shared or recorded.
- You've stepped away and the machine has gone idle.
The detail I'm proudest of is the smallest: it tells a meeting apart from music. Spotify humming in the background while you work shouldn't defer a break; a call should. Same audio signal, opposite decision.
And it does all of this without asking for a single permission. No Accessibility, no Screen Recording, no camera or mic access — macOS never even shows a prompt. Every signal comes from permission-free system APIs — audio-process state, window bounds, idle time — so the app can tell you're busy without ever seeing your screen or your keystrokes. For something that runs all day, that felt non-negotiable.
Free, native, in the open
Offscreen is a native Swift/SwiftUI app — no Electron, no account, nothing leaves your Mac. It's open source under MIT, Developer ID-signed and notarized, and installs in one line:
brew install --cask dayaki/tap/offscreen
It's the same promise I made myself with my packages: when I solve my own problem, I solve it in the open. This one just happened to start in an eye doctor's office instead of a stack trace.
The prescriptions did their job. Offscreen is so I don't end up back in that chair — every twenty minutes, something politely makes sure I look away.
If your eyes have been quietly filing complaints too, give it a try — issues and ideas welcome.