Turn the MacBook notch into something you actually use.
Notchly is a lightweight macOS menu-bar app that lives in (and around) the camera notch. Hover it and it melts open into a Dynamic-Island-style panel with your music, calendar, reminders, weather, a webcam mirror, a drag-and-drop file shelf, and system HUDs — then quietly collapses back into the bezel when you're done. On notch-less Macs it renders a tidy virtual pill in the same spot.
Built for fun as a love letter to
boring.notch, rebuilt from scratch in modern SwiftUI so I could learn the guts of it and make it mine.I also built this to test and learn how well I can use AI assistance in a genuinely productive way.
| Feature | What it does | |
|---|---|---|
| 🎵 | Now Playing | Live track from any app (Apple Music, Spotify, browsers/YouTube…) via MediaRemote — artwork, scrubber, transport controls, and marquee titles that scroll only when they're too long. Optional ambient glow tinted from the album art, and it remembers the last track when idle. |
| 📅 | Calendar | A scrolling week strip, the selected day's events, and a live countdown to your next event next to the notch. Tap any event to open it in Calendar.app. |
| ✅ | Reminders | Today's incomplete reminders, surfaced in the panel. |
| 🔋 | Battery | A real macOS-style battery glyph, a plug/unplug glance, and a tap-for-details popover (status, time remaining, power source). |
| 🪞 | Camera Mirror | A quick FaceTime-style webcam mirror — the notch grows to give it room, and the camera light only runs while it's on screen. |
| 🗂️ | File Shelf | Drag files onto the notch to stash them, then drag them back out to Finder, Mail, a chat — anywhere. |
| 🔊 | System HUD | Clean volume / brightness overlays. |
| 👆 | Gestures | Scroll down over the notch to open, up to close, swipe to switch sections. |
| 🎨 | Theming | Match your macOS accent colour or pick your own; tints the calendar, tabs, and shelf. |
| ⚙️ | Settings | Per-module toggles, weather units, calendar timing, hover tuning, display selection, and a Permissions tab that shows what's granted and lets you request/open access in one click. |
Works across multiple displays and re-homes itself when you dock/undock.
- macOS 26.5 or later (Tahoe)
- Xcode 26+
- A Mac with a notch is nice, but not required (a virtual pill is used otherwise)
git clone https://github.com/raphzz11/Notchly.git
cd Notchly
open Notchly.xcodeprojThen in Xcode: select the Notchly scheme and hit Run (⌘R).
The only dependency, mediaremote-adapter,
is a Swift Package and resolves automatically on first build — no manual setup.
On first launch Notchly asks only for what each feature needs. You can review and grant everything from Settings → Permissions at any time:
- Camera — the Mirror section
- Calendar — events + the calendar column
- Reminders — today's reminders
- Location — local weather
- Input Monitoring (optional) — scroll-to-open gestures over the notch
Denying any one of these just disables that feature; everything else keeps working.
Notchly is SwiftUI hosted inside a borderless, non-activating NSPanel that
floats at the menu-bar level across every Space.
NotchViewModel— a single@Observablestate machine (collapsed → now-playing → hover-expanded → glances). Every transition runs through one shared spring animation so the shape and its contents morph as one object.- Monitors — small focused controllers (
BatteryMonitor,CalendarMonitor,RemindersMonitor,WeatherMonitor,NowPlayingController,ShelfController,CameraMirrorController,SystemHUDMonitor,GestureMonitor) each own one data source and feed the view model. NotchGeometry— detects the physical notch (or synthesises a virtual one) and keeps the panel positioned as displays change.- Everything is async/await; no Combine.
- AirPods / Bluetooth battery in the glance
- Timers & Live-Activity-style progress
- Custom section ordering
- Per-app now-playing source filtering
boring.notch— the inspiration; dimensions and interaction feel are modelled on it.mediaremote-adapterby ejbills — the now-playing bridge that makes the music panel possible.
Released under the MIT License. Made with ☕ by Raphael.