Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Notchly

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.


✨ Features

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.


🚀 Getting started

Requirements

  • macOS 26.5 or later (Tahoe)
  • Xcode 26+
  • A Mac with a notch is nice, but not required (a virtual pill is used otherwise)

Build & run

git clone https://github.com/raphzz11/Notchly.git
cd Notchly
open Notchly.xcodeproj

Then 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.

Permissions

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.


🧠 How it's built

Notchly is SwiftUI hosted inside a borderless, non-activating NSPanel that floats at the menu-bar level across every Space.

  • NotchViewModel — a single @Observable state 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.

🗺️ Roadmap / ideas

  • AirPods / Bluetooth battery in the glance
  • Timers & Live-Activity-style progress
  • Custom section ordering
  • Per-app now-playing source filtering

🙏 Credits

  • boring.notch — the inspiration; dimensions and interaction feel are modelled on it.
  • mediaremote-adapter by ejbills — the now-playing bridge that makes the music panel possible.

📄 License

Released under the MIT License. Made with ☕ by Raphael.

About

A SwiftUI macOS app that turns the MacBook notch into a Dynamic-Island-style hub for music, calendar, weather, a webcam mirror, and a file shelf.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages