ScreenNap
I wanted my screens to take a break while my agents kept working.
Try ScreenNap →
Why I built it
Since I started using AI coding agents, stepping away from my desk doesn't always mean my Mac is done working. An agent might still be working through a task, or a build might still be running. I wanted to leave those things going while I took a break.
With a laptop and external monitors, that meant leaving multiple screens lit up when nobody needed to look at them. Closing the laptop wasn't always the right fit when I wanted tasks to keep running. Leaving it open with every display on wasn't ideal either.
Keeping the Mac awake solved one part of it. I also wanted to choose which displays went dark: just the laptop screen, an external monitor, or everything at once. So I built a small app for my own setup.
A little rest for the screens
ScreenNap lives in the macOS menu bar. I can black out one display and keep using the others, or cover every connected display when I step away. While blackout is active, it keeps the Mac from falling asleep through inactivity. Keep awake also works on its own.
Moving the mouse doesn't dismiss the blackout. When I'm ready to come back, pressing Command + Escape restores the displays.
Small on purpose
And yes, I vibe coded it with Claude Code. The screens get to nap; I still had to test it. An app for leaving my agents running, built with the help of an agent. That feels about right.
The app is native Swift, with SwiftUI for the controls, AppKit for the menu bar and screen overlays, and IOKit to keep the Mac awake. There are no third-party package dependencies. Everything I need fits in one menu bar popover.
Blackout covers the displays with black overlays. On the built-in display and supported Dell USB-C monitors, it also attempts to lower hardware brightness and restores it afterwards. Other displays use the overlay alone. It's a way to darken the screens; locking the Mac remains a separate action.
It started with a small annoyance in my daily workflow. Now I can let a task run, give the screens a break, and come back when I need them.
See the demo and download the app:
screennap.mdsaban.com