Launching today

Islet
iPhone's Dynamic Island, brought to your Mac's notch
124 followers
iPhone's Dynamic Island, brought to your Mac's notch
124 followers
Most notch utilities just draw a static shape over the cutout. Islet actually behaves like iPhone's Dynamic Island: native spring-physics expand/collapse, real-time HUDs for volume and brightness, a live music glance with full playback controls, one-tap audio output switching (no System Settings detour), plus calendar, weather, and a file tray you can drop into from anywhere. Built natively in Swift + AppKit, not Electron, fast and fullscreen-aware.







Islet
these notch utilities always make me nervous about the next macOS point release. Apple's changed how the notch/camera housing area behaves at the API level before without much warning. is this drawing into a stable public area (menu bar extra, NSStatusItem territory) or is it doing something closer to overlaying private window layers that could just break on the next update?
Islet
@omri_ben_shoham1 Fair question. The main overlay window is a plain NSPanel at .statusBar level, totally public API. The one exception is the fullscreen-overlay feature (keeping the island visible over fullscreen apps), which uses CGSSpace, an undocumented API a bunch of other notch apps also rely on. It's isolated to that one feature, so worst case it breaks while everything else keeps working. I keep an eye on betas and patch fast if it happens.
Islet
@thys_beesman Trigger conditions were the harder part by far. The spring itself is just two numbers (response/damping) tuned once and left alone. But figuring out exactly when to expand vs stay collapsed, especially across fullscreen apps and multiple displays, needed its own dedicated detection logic (separate fullscreen probe, separate display resolver) plus a grace delay so quick pointer movements don't cause flicker. That state machine took way more iteration than the animation curve did.
And to your other question: same answer as above, the main window is public API (NSPanel, .statusBar level), only the fullscreen-overlay part leans on an undocumented CGSSpace call.
Interesting launch! Everyone fixates on the spring, but catching a brightness change on macOS is the real headache since there's no clean public event to subscribe to. Did you guys land on polling the IOKit display values? Or did you find a notification that fires reliably?
Islet
@artstavenka1 Neither actually, we don't watch for a brightness change at all. There's a HID-level event tap that intercepts the physical F1/F2 key press before it even reaches the window server, then Islet drives the real brightness change itself through DisplayServices.framework, a private framework loaded via dlopen since Apple Silicon's internal display has no reliable public API for this. If that private write ever fails, it falls back to just passing the key through untouched so nothing breaks silently.
Islet
@mrbrjan Thanks! We share some overlap (music controls, calendar, HUD replacements, file shelf), but a few things Islet does differently:
- Live Activities incl. a Meeting HUD — call timer + system-wide mic mute for Zoom/Teams
- Encrypted Clipboard History
- Custom Timer/Pomodoro you can create yourself
- Automatic updates (no manual re-downloads)
- Configurable Weather widget (compact/large)
- Audio output switcher (quick device switching, not just a volume HUD)
- Quick Notes with Obsidian export coming up too, for capturing stuff on the fly
Would love for you to give it a try and let me know what you think — feedback's very welcome!
@lippi304 good to hear it's scoped to just the one feature, that's a sane tradeoff. plain NSPanel for the main overlay means the core experience survives even in a worst case, and CGSSpace breaking would be an annoying but contained regression rather than the whole app going down. appreciate the honesty about tracking betas instead of pretending it's a non-issue.
Islet
@omri_ben_shoham1 Appreciate that that's exactly the mindset with private APIs, isolate the blast radius and stay honest about it.
Islet
@hannesh Thanks a lot, means a lot! Yeah that was the whole goal, wanted it to feel like it belongs on macOS, not bolted on. Let me know what you think once you've tried it!