Notcher
Notcher turns the dead space around the MacBook notch into a small display. It's a menu bar app built from modules: one shows what's playing in Apple Music, one shows Claude usage with pacing against the session and weekly limits, and one rounds off the screen corners. Every module plugs into one protocol, a registry decides which module owns which screen, and the notch itself is measured from the display rather than assumed.

At a glance
- Type
- App
- Industry
- Mac utility
- Built with
- Swift 6, SwiftUI and AppKit, with MusicKit
- Platform
- macOS 14 or later, multiple displays
- Codebase
- Open source on GitHub (MIT)
- Timeline
- January to March 2026, rebuilt October 2026
One protocol for every module
Each module conforms to a single NotcherModule protocol: an id, a name, an icon, a category, activate and deactivate, and two SwiftUI views, one for quick settings and one for full settings. The menu bar dropdown and the settings windows are built from those, so a new module needs no changes anywhere else.
There are two categories. Notch modules take over the notch, so only one runs on each display; a central registry tracks which module owns which screen and hands a display over cleanly when you switch. Effect modules, like the rounded corners, run alongside whatever is in the notch.
Drawing around the notch
The app finds the notch from each screen's top safe-area inset and the free areas to either side of it, and works out its exact frame on every display. A screen without a notch is detected the same way.
Notch content lives in borderless windows at status-bar level. They join every Space, stay out of the window cycle and let clicks pass straight through, so the menu bar underneath keeps working.
The modules
MusicNotch listens for Apple Music's track-change notifications and finds artwork with a MusicKit catalog search, falling back to the iTunes Search API. There is no AppleScript, so there is no automation permission prompt.
Claude Stats reads the account's session and weekly limits and shows them as severity-coloured bars with time left. Pacing compares usage with the time gone in each window, five hours for a session and seven days for the week, and estimates whether the limit runs out before it resets. It also shows the real per-model limit name, credit spend, a weekly product breakdown and a monthly spend history recorded on the Mac.
CornerRadius draws rounded corners as overlays, with a toggle for each corner, custom sizes and support for every display.
An App Store pass
In March 2026 a release pass prepared a separate App Store build: the app sandbox with only the outbound-network entitlement, a privacy manifest, accessibility labels on every control and a menu bar icon that follows dark mode. ClaudeStats was left out of that build, then restored to the app the same day.
The same pass fixed a window leak on wake and an observer leak, and moved MusicNotch's stored settings to namespaced keys, migrating the old ones.
The October 2026 rebuild
In October 2026 I rewrote the app from the ground up, keeping its three modules. One display coordinator now owns display and sleep/wake notifications, and modules reconcile in place instead of tearing their windows down, which fixed flicker, leaked windows and duplicate observers after wake.
The menu became a fixed-size panel with sliding pages and one settings screen per module. Corner radius and the notch curves now match the macOS window radius, the pointer hides behind the notch and corners, and the app opens at login. It is built with Swift 6 strict concurrency for macOS 14 and later, and is MIT licensed.

Claude usage in the notch 
One menu, a switch per module 
Choose what shows in the notch
Highlights
- One protocol for every module, so the registry, menu and settings need no changes for a new one.
- Per-display ownership of the notch, with a clean hand-off between modules.
- Click-through status-bar windows that sit over the notch on every Space.
- Now playing without AppleScript or a permission prompt.
- Runs in the app sandbox with a single outbound-network entitlement and a privacy manifest.
Let's talk.
Tell me what you're building. I read every message myself and usually reply within one business day.