NotchLand lives in your notch, not your menu bar. It stays anchored there across every
desktop and Space, moving with the same fluid, spring-loaded animations Apple uses for its
own system UI — so it feels like a feature macOS shipped, not an app you installed. Media
controls, system HUDs, AirDrop, live activities, calendar peeks, and more, all in one place.
A native SwiftUI + AppKit menu-bar app built in the open.
- What it does
- Features
- Gallery
- Requirements
- Build & run
- Architecture
- Contributing
- License
- Acknowledgments
NotchLand runs as an accessory app (no Dock icon) and overlays a floating panel exactly where your MacBook's notch sits. It stays out of the way until something happens worth showing — then it expands, animates, and collapses back.
It sticks to the notch, not the menu bar. Switch desktops, move between Spaces, go full-screen — NotchLand stays anchored to the notch on every one of them, with the same fluid, spring-loaded animations Apple uses for its own system UI. That's the main thing NotchLand does differently: it feels like a feature built into macOS, not a third-party app running alongside it.
Designed for a MacBook with a display notch — NotchLand renders a floating panel where the notch lives.
| Feature | Description |
|---|---|
| Notch-native, not menu-bar | Anchored to the notch across every desktop and Space, with fluid, Apple-style animations — feels like a built-in macOS feature, not a third-party app. |
| Now Playing | Live media controls and artwork for whatever's playing, right in the notch. |
| AirDrop | Drag a shareable file near the notch and a drop zone opens — only for content AirDrop can actually accept — and confirms the drop. |
| System HUDs | Clean, Apple-style overlays for volume and brightness. |
| Battery alerts | Charging and low-battery notices surface in the notch. |
| Focus alerts | A heads-up whenever your Focus mode changes. |
| Calendar & countdown | A next-event peek and a countdown chip for what's coming up. |
| Lock / unlock showcase | A padlock animation on lock and a "welcome back" card on unlock, with away-time, battery, and your next event. |
| Guided onboarding | A first-launch walkthrough introduces the features and requests Calendar and Accessibility permissions step by step, both skippable. |
More screenshots & demo GIFs coming soon — contributions welcome! Drop images into
docs/images/ and wire them into this section.
- macOS 26.3 or later
- Xcode 26.4 or later (to build from source)
- A MacBook with a display notch (recommended)
NotchLand is a standard Xcode project — no Swift Package Manager manifest, dependencies are resolved through Xcode (Sparkle, Lottie).
# Clone
git clone https://github.com/scienceLabwork/NotchLand.git
cd NotchLand
# Build (Debug) from the command line
xcodebuild -project NotchLand.xcodeproj -scheme NotchLand -configuration Debug build
# …or just open it in Xcode (preferred for iteration — SwiftUI Previews need Xcode)
open NotchLand.xcodeprojRun the tests (Swift Testing, hosted in the app target):
xcodebuild -project NotchLand.xcodeproj -scheme NotchLand -configuration Debug test \
-destination 'platform=macOS'Building as a contributor? The project ships with the maintainer's signing Team (
H7RVWCMKF5). To build locally, open Signing & Capabilities in Xcode and set your own Team (or disable signing). App Sandbox is off and Hardened Runtime is on by default.
NotchLand is a SwiftUI/AppKit hybrid that runs as an LSUIElement accessory app. Most of
the interesting design lives in one clean pipeline:
Controller ──publishes──▶ Presentation { branchKey } ──▶ FloatingNotchView
(ObservableObject) (priority-ordered switch)
AppDelegatebootstraps the shared singletons (NotchSettings,AppState,WindowManager) and keeps the app alive after settings windows close.WindowManagerowns the borderless floatingNSPanel, the menu-bar companion item, global drag monitors, and launch-at-login viaSMAppService.- Feature controllers each publish a
PresentationwhosebranchKeyfeeds a single priority-ordered switch inFloatingNotchView:screen-lock → airdrop-drop-target → battery → focus → expanded → hud → collapsed. Adding a feature means adding a branch — not touching the others. - Settings (
SettingsView,SettingsSidebar,*SettingsView) is a sidebar + forms + a right-hand live preview of the notch.
This makes the codebase easy to extend: a new overlay is a new controller, a new
branchKey, and a content view — wired in at four well-defined points.
Contributions of all sizes are welcome — bug reports, fixes, features, and docs. To get started:
- Read CONTRIBUTING.md for the full setup, signing, and build/test walkthrough.
- Match the surrounding code style (there's no linter — read the neighbors).
- Keep non-UI work off the main actor (the project defaults types to
@MainActor). - Open an issue to discuss anything larger than a small fix before sending a big PR.
- Keep PRs focused, and make sure the project builds and tests pass before requesting review.
Note on updates: publishing Sparkle updates requires the maintainer's private EdDSA signing key and is maintainer-only. The public key in
Info.plistis intentionally public and safe to ship.
NotchLand is released under the Apache License 2.0 — see LICENSE and NOTICE for the full text and third-party attributions. By contributing, you agree your contributions are licensed under the same terms.
It bundles:
- Sparkle and Lottie for the open-source foundations this app builds on.
- Everyone who files an issue, opens a PR, or just gives the notch a try. 🙌
Designed, built, and maintained by Rudra Shah.
If NotchLand is useful to you, a ⭐ on the repo means a lot.

