DEV Community

Cover image for I replaced eight Mac utilities with one app, and measured what it cost
seergiii
seergiii

Posted on

I replaced eight Mac utilities with one app, and measured what it cost

I run the same little pile of utilities on every Mac, and I bet you do too. One to keep it awake during a long download, one to ⌘Tab between windows instead of apps, one to snap windows into place, one for clipboard history, one to hide the menu bar icons I never use, one for per-app volume, and because laptops have a notch, one to make it actually do something. Plus an app cleaner for when I uninstall stuff. That's eight small apps. The seven that sit in the menu bar all day were using around 851 MB of RAM between them on my machine.

So I wrote OmniMac. It's one native app (Swift, SwiftUI for the views, AppKit for the panels) that does the parts I actually used from each of those, and it tries hard to stay out of the way: 0.017 to 0.033% CPU and 33 to 37 MB of real memory while it's just sitting there. It's free and MIT-licensed, and the scripts I measured it with are in the repo, so you don't have to take my word for the numbers.

The island works on Macs without a notch too

The visible bit is a Dynamic Island. You hover the notch and it opens up: whatever music is playing, a little file tray with an AirDrop zone, today's calendar, per-app sound, a timer with Pomodoro, and some performance graphs. Open your AirPods case near the Mac and you get the iPhone-style card with the battery of each earbud, and then it folds away on its own.

The part I'm actually happy about is that it doesn't care what Mac you have. It reads the screen's safe area, and if there's no notch it just draws a floating island the right size for the display. So an iMac, a Mac mini on an external monitor, and a 2019 MacBook all get the same thing. (Notchy does this too, I say so in the README. I wasn't trying to be the only one.)

The other ten modules

  • Keep awake, with a closed-lid mode, timers, "until 18:30", and a stop when the battery gets low. If a session ends on its own it writes down why, and tells you when you're back, because a notification fired while the Mac is falling asleep never actually shows up.
  • ⌘Tab by windows, with live thumbnails. Type to filter, and ⌘W / ⌘M / ⌘H / ⌘Q act on the highlighted window without leaving the switcher.
  • Window shortcuts: halves, thirds, quarters, almost-maximize, next display, drag to an edge to snap, and layouts saved on ⌃⌥1 through 9 like presets. If Rectangle already grabbed a shortcut, it tells you instead of silently doing nothing.
  • Clipboard history with images and files, pins, paste as plain text, and it strips utm_source, fbclid and Spotify's ?si= off links as you copy them. It never records what you copy in a password manager.
  • Sound: per-app volume, a 10-band EQ (global or per app), a boost past 100% with a limiter, and output priority, so you plug in headphones and they take over, then unplug and it goes back.
  • Performance: per-core CPU (you can watch the efficiency cores do the work while the big ones nap), GPU, memory pressure and swap, disk, network, temperature, and the thing you actually want when the Mac drags, which is which apps are eating it. Alerts fire once and then shut up until things are back to normal.
  • Tools: OCR any part of the screen, a colour picker, mute the mic, lock the keyboard to clean it, hide desktop icons, a guard against an accidental ⌘Q, and brightness below the macOS minimum.
  • A command bar (⌥Space, off by default because that one belongs to Raycast), a menu bar hider, an app cleaner that sends everything to the Trash, and a .pkg installer that asks first.

Every module has a switch, and if you turn one off it frees its resources and disappears from the menu.

Why it's light: nothing runs when you're not looking

That one rule covers most of the numbers. The performance graphs only sample while their tab is open. The notch stops doing anything the moment it folds. The audio engine (CoreAudio process taps plus AVAudioEngine) doesn't even get created unless some app has a volume other than 100% and something is actually playing, and it gets torn down when that stops. Battery, music and audio devices all notify me, so nothing sits there polling on a timer.

Two measurement traps cost me an afternoon each, so let me save you the trouble. top -l's IDLEW column is a running total, not a rate, and if you read it as a rate you will "find" a leak of 35 wakeups a second per notch open that isn't real. And reading your own app through the Accessibility API to get the panel height actually costs the app about 3ms a call, which was quietly pushing my idle number from 0.017% up to 0.047% until I switched to CGWindowList.

What it doesn't do

It's not notarized yet (I don't have the Apple developer account), so the first launch is a trip through System Settings, Privacy & Security, Open Anyway. "Now playing" comes from Spotify and Music over AppleScript, because MediaRemote has been off-limits to third parties since 15.4, and album art only shows for Spotify. The menu bar hider is a lot simpler than Ice's, and Stats reads fans and way more sensors than I do. Both are great, and the comparison pages on the site say what each of the eight apps does better than OmniMac.

Where to get it

Free, no accounts, no telemetry, macOS 14.2 or later, Apple silicon and Intel. It lives at bysergimm.github.io/OmniMac (installer and Homebrew there), and the code, the measurements and the 237 tests are on GitHub. Fair warning: the code and comments are in Spanish. Issues in English are completely fine.

Top comments (0)