Turn your MacBook's dead notch area into a live camera — Dynamic Island style.
A lightweight, native macOS menu bar app that transforms the notch into a quick-access camera panel. Click the camera icon, and a sleek panel deploys from the notch with a smooth animation, showing your live camera feed. Snap a photo instantly.
- Dynamic Island UI — Panel emerges from the notch with concave curves, matching Apple's design language
- Animated Deploy — Smooth reveal animation from the notch downward
- Live Camera Preview — Real-time feed from your Mac's built-in camera
- One-Click Capture — Take photos with a single click, flash feedback included
- Frosted Glass Backdrop — Optional full-screen blur effect when the camera is open
- Customizable Save Location — Choose where your photos are saved (defaults to Desktop)
- Menu Bar Only — No dock icon, no clutter. Lives quietly in your menu bar
- ESC to Close — Quick dismiss with keyboard or click outside
- Native Swift — No Electron, no web views. Pure AppKit + SwiftUI + AVFoundation
- Lightweight — Under 1MB, zero dependencies, instant launch
One-line install (requires Xcode Command Line Tools):
curl -fsSL https://raw.githubusercontent.com/badursun/MacCam-NotchIsland/main/install.sh | bashThis will clone, build, code-sign, copy to /Applications, and launch MacCam.
git clone https://github.com/badursun/MacCam-NotchIsland.git
cd MacCam-NotchIsland
chmod +x build.sh
./build.sh
open build/MacCam.appcurl -fsSL https://raw.githubusercontent.com/badursun/MacCam-NotchIsland/main/uninstall.sh | bashOr manually: delete /Applications/MacCam.app.
| Action | How |
|---|---|
| Open camera | Click the camera icon in the menu bar |
| Take photo | Click the white shutter button |
| Open settings | Click the gear icon |
| Close panel | Click X, press ESC, or click outside |
| Quit app | Right-click the menu bar icon → "MacCam'i Kapat" |
- Save Directory — Pick any folder for your photos (default: Desktop)
- Backdrop Blur — Toggle the frosted glass overlay on/off in real-time
- macOS 13 (Ventura) or later
- MacBook with notch (MacBook Pro 14"/16" 2021+, MacBook Air 2022+)
- Works on non-notch Macs too — panel appears at the top center of the screen
- Xcode Command Line Tools (for building from source)
Sources/MacCam/
├── main.swift # App entry point
├── AppDelegate.swift # NSApp lifecycle, accessory mode
├── StatusBarController.swift # Menu bar icon, window management, animations
├── NotchWindow.swift # Borderless NSPanel for the camera UI
├── ContentView.swift # SwiftUI UI + DynamicIslandShape
├── CameraManager.swift # AVFoundation session & capture
├── PhotoCaptureDelegate.swift # Photo save handler
├── SettingsManager.swift # UserDefaults-backed preferences
└── CameraPreviewView.swift # NSViewRepresentable camera preview
No Xcode project required. Built entirely with Swift Package Manager.
- NSStatusItem places a camera icon in the menu bar
- On click, a borderless NSPanel is created at the top of the screen
- The panel uses a custom DynamicIslandShape — wide at the top (flush with the screen edge), concave curves narrowing to the content body, rounded bottom corners
- AVCaptureSession provides the live camera feed via AVCaptureVideoPreviewLayer
- The panel animates open using SwiftUI's
animatableDataon the shape'srevealProgress - Optional NSVisualEffectView backdrop provides a frosted glass overlay
- Photos are captured via AVCapturePhotoOutput and saved as JPEG
| Component | Technology |
|---|---|
| UI Framework | SwiftUI + AppKit (hybrid) |
| Camera | AVFoundation |
| Window Management | NSPanel (borderless, non-activating) |
| Shape Rendering | Custom SwiftUI Shape with animatable paths |
| Backdrop | NSVisualEffectView (.hudWindow material) |
| Build System | Swift Package Manager |
| Preferences | UserDefaults |
| Key | Action |
|---|---|
ESC |
Close camera panel |
| Right-click menu bar icon | Quit app |
- MacCam requires Camera permission on first launch
- Photos are saved locally only — no cloud, no network, no telemetry
- No data leaves your Mac. Ever.
Pull requests are welcome. For major changes, please open an issue first.
Built with Swift and obsessive attention to the notch.
