A small developer toolbox that lives in your Mac's camera notch. It stays invisible until you need it, then drops a clean panel down from the notch when you hover. Everything runs on your machine.
Built by Binary Semaphore.
Idle. Nothing. The notch looks like a normal notch.
Hover. Move your cursor to the notch and a panel drops down with tabs for Shelf, Clipboard, Format, Tools, and Camera. Move away and it tucks back up. The panel follows your system appearance — light or dark. You can also toggle it with a global hotkey (default ⌥⌘N), set in Settings.
There is no dock icon and no menu bar icon (LSUIElement = true). You open Settings
from the gear in the panel, or by right-clicking it.
A holding spot for files. Drag a file onto the notch to stash it, then drag it back out into any app later (Finder, Mail, Slack, WhatsApp, and so on). The shelf survives restarts. Hover a file to remove it, or clear the whole shelf at once.
Your recent copies, newest first. A search box narrows the list by text, and a filter row lets you jump to just Links, Colors, Code, or Text. Click any item to copy it back to the clipboard. In Settings you can set how many items to keep (50 / 100 / 500 / unlimited) and optionally have the history persist across restarts — that's off by default, stays on your Mac, and can be cleared at any time.
Paste text and transform it in place: pretty-print or minify JSON, Base64 encode/decode, or URL encode/decode. Copy the result back with one click.
Small things you reach for while building:
- Color picker. Sample any pixel on screen and copy the hex.
- Generators. One click to copy a UUID, an ISO 8601 timestamp, a Unix epoch, a random hex string, or a line of lorem ipsum.
- Port peek. Type a port to see what's listening on it, and kill the process if you need the port back.
An optional front-camera mirror for a quick check before a call. Off by default, and it only asks for camera access the first time you open it.
Opened from the gear in the panel footer, a standard macOS window. Toggle each tab on or off, set launch at login, choose the global toggle hotkey, tune the hover behavior (expand on hover, keep pinned, auto-collapse delay), and set clipboard history options.
Everything runs on your machine. The only permission notchify ever requests is the camera, and only when you open the Camera tab. Nothing leaves your Mac.
- macOS 14 (Sonoma) or later
- Xcode 16 or later to build from source
Pre-built apps are published on the Releases
page. Download the .zip, unzip it, and drag notchify.app into /Applications.
Then launch it and hover your notch.
Note: early releases are not yet signed with an Apple Developer ID. On first launch macOS may say the app "cannot be checked for malicious software." Right-click the app and choose Open, then Open again, to run it. Signing + notarization (in CI) and in-app auto-update (via Sparkle) are planned once a Developer ID is in place.
- Open
notchify.xcodeprojin Xcode 16. - Select the
notchifyscheme, target My Mac. - Build and run (
⌘R). The app has no dock icon, so hover your notch to find it. - To quit, right-click the panel and choose Quit notchify.
Or from the command line:
xcodebuild -project notchify.xcodeproj -scheme notchify -destination 'platform=macOS' buildnotchify runs without the App Sandbox, because it shells out to system tools (like
lsof for port peek) and reads the screen for the color picker. That means it is
distributed directly, not through the Mac App Store.
Versioned releases and their changelogs live on the
Releases page, and are summarized
in CHANGELOG.md. Versions follow MAJOR.MINOR.PATCH.
The project uses an Xcode 16 file-system-synchronized group, so every .swift file
under notchify/ is compiled into the target automatically. Source is grouped by role:
notchify/
├── App/ app entry, window manager
├── Views/ overlay panel, tools pane, settings window
├── Services/ camera capture, port peek
├── Monitors/ clipboard history
└── Models/ settings, clipboard type detection, file shelf state
| File | Responsibility |
|---|---|
App/NotchWindowManager.swift |
NSWindow lifecycle, cursor tracking, expand/collapse, panel geometry |
App/HotKeyManager.swift |
Global toggle hotkey via Carbon RegisterEventHotKey (no Accessibility permission) |
App/notchifyApp.swift |
App entry, accessory-app setup, Settings window |
Views/NotchOverlayView.swift |
The panel: tab bar, Shelf, Clipboard (search + filter), file drag-out, footer, theme colors |
Views/FormatPane.swift |
Format pane and pure JSON / Base64 / URL transforms |
Views/DevToolsView.swift |
Tools pane (color picker, generators, port peek) and Camera pane |
Views/HotKeyRecorder.swift |
Carbon ⇄ Cocoa hotkey mapping and the Settings key recorder |
Views/ContentView.swift |
Settings window |
Monitors/ClipboardMonitor.swift |
NSPasteboard polling, de-duplicated history, configurable limit, opt-in persistence |
Models/ClipboardKind.swift |
Classifies a copied string as link / color / code / number / text |
Models/FileShelfStore.swift |
File shelf state, persisted to UserDefaults |
Models/NotchSettings.swift |
UserDefaults-backed ObservableObject singleton |
Services/PortPeekService.swift |
Runs lsof / kill for the port tool |
Services/CameraMirrorService.swift, Widgets/CameraPreviewView.swift |
Optional camera preview |
- File drag-out uses
NSFilePromiseProvider, the AppKit mechanism for dragging a file out of an app. It works with Finder, Mail, and Chromium-based apps (Slack, WhatsApp, VS Code) that reject a plain URL. - Color picker uses the public
NSColorSampler.
MIT. See LICENSE.
Not affiliated with Apple.