A command center in the MacBook notch, with Android Quick Share that needs no app.
Turned the MacBook notch into a native Swift command center: Now Playing, Calendar, clipboard history, a Stash shelf, dev tools and Port Sniper behind one hover, plus file transfer to iPhone over AirDrop and to Android over Quick Share with no app.
- Role
- Sole engineer — design to release
- Timeline
- October 2026 – November 2026
- Stack
- SwiftUI + AppKit Notch Shell, Quick Share Engine (NearDrop), mediaremote-adapter + EventKit, libproc + Docker Engine API, SQLite Local Storage, GitHub Actions DMG Pipeline
- Deliverables
- macOS notch app (Swift), universal DMG via GitHub Actions, distributed-notification automation API
- Live
- Visit the project ↗
- Code
- View on GitHub ↗
- 0 appsneeded on the Android phone; Quick Share works out of the box
- 8dev text tools that read your latest copy and pick the right one
- 100% localclipboard, stash and transfers never touch a cloud or an account
The problem
The MacBook notch is dead screen space, while the things you reach for all day are scattered: what's playing sits in one app, the next meeting link in another, something you copied ten minutes ago is gone, and the dev server holding port 3000 needs a trip to Terminal.
Moving files between a Mac and an Android phone is worse. AirDrop only talks to Apple devices, and the usual workarounds mean installing a companion app on the phone, signing into a cloud drive, or emailing files to yourself. Google's Quick Share has no macOS client, and macOS doesn't let apps send the Bluetooth advertisement Android uses to discover nearby devices.
Approach
I built NotChi as a native Swift app (SwiftUI on AppKit, macOS 14+) that opens from the notch on hover or ⌥⌘N. Every feature is a module behind one NotchModule protocol, so the shell only decides where and when each one appears:
- Notch shell and wings: A borderless AppKit panel hosts a SwiftUI NotchShape that grows out of the notch, or out of a small pill on Macs without one. While collapsed, wings beside the notch show the current track, a meeting countdown or CPU, memory and network stats, and an Accessibility-based menu-bar probe keeps them from covering app menus.
- Clipboard history and Stash: Text, rich text, code, links, images and files go into a local SQLite history with search and type filters; clicking an item pastes it into the frontmost app. Copies that password managers mark as concealed or transient are skipped. The Stash is a drag-in, drag-out shelf with pinning.
- Android Quick Share with no app: Adapted from NearDrop, NotChi advertises itself over Bonjour and speaks Google's Nearby Connections protocol directly: protobuf frames, a UKEY2 key exchange on P-256 in CryptoKit, and AES-256-CBC + HMAC-SHA256 secure messages. Incoming transfers show the sender and a PIN in the notch, and nothing is saved until you accept. For Mac to Android, a QR code in the notch stands in for the Bluetooth advertisement macOS won't let apps send.
- AirDrop for iPhone: Files dropped on the iPhone target open the system AirDrop picker, and AirDrops arriving in Downloads appear in the notch and land in the Stash.
- Now Playing and Calendar: Since macOS 15.4 apps can't read MediaRemote directly, so NotChi bundles mediaremote-adapter, which runs under the system Perl and streams track changes as JSON lines. EventKit drives the agenda, today's reminders, a Join button for Zoom, Google Meet, Teams and Webex links, and a countdown beside the notch five minutes before each event.
- Dev tools and Port Sniper: Eight text tools (JSON, JWT, Base64, URL, Time, Hash, UUID, Color) load the latest copy and pick the matching tool. Port Sniper reads listening sockets through libproc and the Docker engine socket (Docker Desktop, OrbStack, Colima), with live health checks, latency and one-click kill.
Architecture
Outcome
NotChi ships as a free, source-available universal DMG that GitHub Actions builds and attaches to every tagged release: four releases, v0.1.0 to v0.3.1, in its first two weeks. It idles around 0.3% CPU while collapsed because it prefers observers to polling and runs collapsed animations on Core Animation, and only the transfer services for the phone you choose ever listen on the network.
Android users get Mac file sharing through the Quick Share already on their phone, everything else stays in ~/Library/Application Support/NotChi, and scripts, Raycast or Shortcuts can drive the notch through distributed notifications.