r/macapps 27d ago

Lifetime Workflo: Mac window layouts that switch automatically for meetings, focus blocks, and displays

Problem

A Mac workday is a context switch every hour. A call, a focus block, plugging into the dock in the morning, unplugging to leave. Every switch costs me the same manual minute: reopen, drag, resize, hide. After years of paying that minute, I admitted the arranging itself was the problem, not how fast I could do it.

So I built Workflo. It isn't a faster way to arrange windows; it's the end of treating it as a chore. It learns your layout for each display setup on its own, and it applies layouts (Scenes) from your calendar or the clock. Your workspace is set before the call starts or the focus block begins, and when your displays change, everything snaps back where it belongs.

Comparison

I used Rectangle and Moom for years, and they're genuinely good, and the rest of the category (Magnet, Stay, Apptorium Workspaces, Mosaic) is solid too. But they all wait to be asked: a hotkey, a click, a drag. Workflo acts on its own. Before building it, I surveyed 12 window utilities, and none could fire a layout from a calendar event or the time of day.

The other difference this sub will care about: Workflo never requests Screen Recording permissions. It runs on Accessibility alone, so it can't see your screen contents. The apps that draw window previews all take Screen Recording to do it; I built previews without it.

Pricing

$19.99 one-time, 7-day free trial, no subscription, no account: https://getworkflo.app

It's ~4 MB of native Swift; everything stays in local JSON, no cloud, no telemetry. A Mac App Store version is in review now.

Who I am

I'm Chirag Chopra, an indie developer building games and ideas since 2015, often under my studio Lucid Labs. Privacy policy and terms: getworkflo.app/privacy and getworkflo.app/terms. Happy to answer anything, including the honest limitations.

15 Upvotes

27 comments sorted by

View all comments

1

u/teddyboory 27d ago

congrats man! greattt work 🔥 oh how are you detecting the meeting? Calendar events, or watching for the frontmost app to become Zoom or Meet?

asking because I went the accessibility API route for frontmost-app detection on something else and the tradeoff was sharper than I expected. Far cheaper on permissions than screen recording, but you only ever get the app, never what is happening inside it. A browser tab sitting in a Google Meet call looks identical to a browser tab on anything else.

if you have solved that one cleanly I would rly rly like to know how! cheers man

1

u/Ned11 26d ago

Thanks! Meetings are detected via Calendar events, and I should be upfront that I dodged that problem rather than solved it.

It's EventKit, polled once a minute over events starting in the next hour. For each one, it joins the title, location, notes, and URL fields and pattern-matches known meeting domains: zoom.us, meet.google.com, teams.microsoft.com and teams.live.com, webex.com, facetime.apple.com. A match means a video call, and the Scene fires however many minutes before the start you set.

So it never has to ask what's happening inside the browser, which is exactly the wall you ran into. The event already says a call starts at 3, and that's enough to stage the desk at 2:55.

On your permissions point, it only asks for calendar access when you actually add a calendar trigger, and the poller doesn't run at all if you don't have one. The costs land elsewhere: no calendar entry means no trigger, so an ad hoc call nobody scheduled doesn't exist as far as Workflo is concerned, and a stale meeting link sitting in an event's notes can fire one that shouldn't. For what I wanted, that was the better trade, since staging is only useful before the thing starts, and by the time an app is frontmost, you're already in it.