Turn the MacBook notch into a living native surface.
DynamicNotch is a native macOS app for notched MacBooks that turns the notch into a live system surface for media, downloads, AirDrop, timers, screen recording, connectivity events, lock-screen transitions, and custom hardware HUDs.
DynamicNotch treats the MacBook notch like a compact native surface instead of a static cutout. It stays close to the hardware shape until something important happens, then expands with queue-driven presentation, gesture support, and system-aware feature routing.
The app is built with SwiftUI and AppKit, so the notch window, settings UI, and event handling feel like part of macOS rather than a web-style overlay.
The difference between this project and others is that it is built on its own engine, and not taken from other ready-made repositories. It completely copies the logic, animations, and behavior of a real Dynamic Island on an iPhone, unlike other projects.
The main goal is to make the project as native as possible, both in terms of design and interaction.
- π΅ Live Activities: Now Playing (media control, album artwork, audio visualizer), Downloads progress, AirDrop, Timer, Screen Recording indicator, Focus mode, Personal Hotspot, and Lock Screen media/live activity surfaces.
- ποΈ Dynamic Island (Floating Capsule): Automatic support for devices without a physical hardware notch (e.g. non-notched MacBooks, iMac, Mac mini, or external monitors). Transitions to a floating capsule shape (
DynamicIslandShape) whentopInset == 0, utilizing dynamic, smooth corner radius transitions. - β‘ Temporary Alerts: Interactive HUD status for battery charging, low/full battery, Bluetooth connections, Wi-Fi, VPN, Focus-off toggling, and notch size modification settings feedback.
- ποΈ Native HUD Replacements: Beautiful, hardware-inspired HUD overlays for System Volume, Screen Brightness, and Keyboard Backlight.
- π Chained Lyrics Provider: A dual-provider API engine (
CompositeLyricsProvider) combining synchronized LRCLIB karaoke lyrics and static Lyrics.ovh database query fallback. - π±οΈ Gestures & Swipe Controls: Native interactive gestures including mouse drag, trackpad swipes, vertical swipe-to-dismiss/restore, and horizontal trackpad/mouse scroll-to-dismiss.
- π¨ Deep Customization: Personalization options for base notch width/height, stroke options, background styling, animation presets, custom screen/display selection, and fullscreen spaces handling.
- βοΈ Refined Animations: Multi-preset transitions system with separate, dedicated transition tuning parameter
closeLiveActivityCompactContentTransitionto control the exact speed of content insertion when returning to compact mode.
LightBackgroundDemo.mp4 |
DarkBackgroundDemo.mp4 |
The demos show how the notch behaves on light and dark backgrounds. The outline can be disabled in Settings.
- Download the latest DMG from the Releases page.
- Drag
DynamicNotchintoApplications. - Launch the app.
- Grant the permissions needed for the features you want to use.
- If macOS blocks the first launch, allow it from
System Settings > Privacy & Security.
- macOS 14.6 or later
- Works on both notched MacBooks and non-notched displays (automatically rendering as a floating Dynamic Island capsule)
- Feature-specific permissions as needed:
- Accessibility for custom HUD interception and some system-level interactions
- Bluetooth access for accessory status updates
- Screen Recording access for audio-reactive Now Playing visualization where macOS requires it
- Media/Now Playing access where macOS requires it
git clone https://github.com/jackson-storm/DynamicNotch.git
cd DynamicNotch
open DynamicNotch.xcodeprojThen run the DynamicNotch scheme from Xcode. Swift Package Manager dependencies are resolved by the project.
DynamicNotch/
βββ Application/ # App entry point, app delegate, window setup, and settings shell
βββ Core/ # Shared models, protocols, services, and infrastructure
βββ Features/
β βββ Battery/
β βββ Bluetooth/
β βββ Download/
β βββ DragAndDrop/
β βββ Focus/
β βββ HUD/
β βββ LockScreen/
β βββ Network/
β βββ Notch/
β βββ NowPlaying/
β βββ Onboarding/
β βββ ScreenRecording/
β βββ Settings/
β βββ Timer/
βββ Resources/ # Assets, localization, bundled media
βββ Shared/ # Shared UI, helpers, and extensions
DynamicNotchTests/
βββ Features/
βββ Shared/
βββ TestSupport/
DynamicNotchUITest/
βββ DynamicNotchUITest.swift
AppContainercomposes services, monitors, feature view models, coordinators, and window managers.AppDelegatemanages app lifecycle, floating overlay window setup, workspace observers, and lock-screen handoff.NotchEngineowns the queue-driven notch presentation state machine for live activities, temporary alerts, transitions, and restore flows.NotchViewModelis the SwiftUI-facing layer for geometry, gestures, interactive resize, and engine-backed presentation state.NotchEventCoordinatorroutes system events while feature-specific handlers translate them into notch content.SettingsViewModelacts as a facade over dedicated settings stores for application, media/files, connectivity, battery, HUD, and lock-screen behavior.- Feature view models provide domain state for battery, Bluetooth, downloads, network, now playing, screen recording, timer, AirDrop, and lock screen.
- Fullscreen hiding keeps the overlay window alive and hides notch activities until the user leaves fullscreen, so active features can restore cleanly.
- SwiftUI for notch content and settings UI
- AppKit for windows, input handling, and macOS integration
- Combine for feature and settings streams
- Lottie for animation assets
The project currently includes localized app content for:
- System language fallback
- English
- Russian
- Spanish
- Simplified Chinese
DynamicNotch is released under the GNU General Public License v3.0. See LICENSE for details.
