Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

MacNotch 🏔️✨

Turn your MacBook notch into a living, glanceable productivity island.

macOS 14.0+ Swift 6.0 Self-test 161 passed 15 modules MIT License

Download · What it does · Build from source · Docs


MacNotch turns the dead space around your MacBook notch — or a virtual notch on an external display — into an expandable HUD. Hover to check playback, meetings, or timers. Drag files toward the camera to stash or AirDrop them.

When idle it fades pixel-for-pixel into the hardware bezel: no chrome, ~0% CPU, invisible until you summon it.

Warning

Pre-1.0. Alpha builds are unsigned. There is no notarized release yet, and a crash under sustained media use (rapid track changes across Spotify and Music at once) is fixed in code but not yet verified against the original reproduction. Expect rough edges and read the Road to Launch for what stands between here and 1.0.


📦 Download

Alpha DMGs live on the Releases page.

They are not signed or notarized, so macOS refuses to open them until you clear the quarantine flag yourself:

# after dragging MacNotch.app to Applications
xattr -dr com.apple.quarantine /Applications/MacNotch.app

That command is the price of an unsigned alpha, not a sign the download is broken. Prefer not to run it? Build from source — same app, no quarantine flag involved.

On first launch, MacNotch asks only for what the modules you enable actually need: Calendar for meeting countdowns, Automation for media control, Bluetooth for device battery. Decline any of them and that module goes quiet; the rest keep working. Nothing leaves your Mac either way.


✨ What it does

15 modules, each independently enabled or disabled. A disabled module runs zero timers, observers, or listeners — it costs nothing.

🎵 Media & Live Activities

  • Glanceable audio HUD — album art, title marquee on hover, scrubbing, output device switcher (AirPlay/headphones).
  • Flank live activities — meeting countdowns, Pomodoro timers, and audio visualizers in the narrow strips beside the camera housing.

📁 Shelf & Drop Actions

  • Drag-and-drop stash — drop files into the notch to hold them, drag them back out into Finder, Slack, Mail, or Xcode later.
  • Instant drop actions — AirDrop, copy path, open with the default app, or save to a custom destination, all without a click.

📅 Daily Drivers

  • Calendar & meetings — next-meeting countdown with a one-click join for Zoom, Google Meet, Teams, and Webex.
  • Pomodoro — work/break timers with inline duration tweaks in the notch.
  • Notes & todos — debounced capture that flushes safely; todos sync with Reminders if you connect a list.
  • Screen time & day progress — how much of the day is gone, and where it went.

📊 Dashboard & System Monitor

  • Modular tile grid — CPU, memory, disk, and network stats arranged how you like.
  • Quick toggles — Night Shift, Keep Awake, Low Power Mode, mute.
  • Profiles — dashboard layouts that switch on macOS Focus Mode or time of day.

🌐 System Tools

  • Translation HUD — inline translation via the native macOS APIs.
  • Bluetooth manager — device battery and connect/disconnect from the notch.

Full per-module specs live in docs/03-modules/.


🛠️ How it's built

  1. Invisible until needed — pixel-matched to hardware black (#000000), no background chrome.
  2. Instant — hover expansion under 16 ms, ~0% idle CPU.
  3. Local-first — no analytics, no telemetry, no account. The only network calls any module can make are weather and album artwork.
  4. Modular — disabled means disabled: zero background work, enforced by a debug assertion that trips if a deactivated module leaves a timer or service subscription alive.
  5. Native Swift — Swift 6, SwiftUI, and AppKit, with exactly one third-party dependency (KeyboardShortcuts, for global hotkey recording).

🚀 Build from source

Requirements: macOS 14.0 (Sonoma) or newer, Swift 6.0 toolchain (Xcode 15+).

git clone https://github.com/iprashantraj/DynamicNotch.git
cd DynamicNotch
swift build # build
.build/debug/MacNotch --self-test # 161 assertions, should print 0 failed
./scripts/bundle-app.sh # package MacNotch.app with its Info.plist
open dist/MacNotch.app # launch

Important

Launch the bundle (dist/MacNotch.app), not .build/debug/MacNotch directly. Bluetooth, camera, and Accessibility permissions are keyed to the bundle's Info.plist — a bare binary gets denied and crashes on the TCC prompt.

./scripts/bundle-app.sh --dmg also produces a distributable DMG. Version and build number come from the nearest git tag and the commit count.


🧪 Self-test harness

MacNotch ships as a standalone AppKit bundle without XCTest, so the test suite runs inside the binary:

.build/debug/MacNotch --self-test

161 assertions across state-machine transitions, persistence quarantine, window geometry, profile rules, and storage debouncers. CI runs this on every push; the release workflow refuses to build a DMG if it fails.


📚 Documentation

Architecture specs and developer docs live in docs/:


🤝 Contributing

Bug fixes, new modules, animation polish — all welcome. See CONTRIBUTING.md for setup, the code conventions, the module checklist, and what a good PR description contains.

The short version: swift build && .build/debug/MacNotch --self-test must be green, geometry and timing come from the design tokens rather than magic numbers, and if your change touches visible behavior, run it on a real Mac and say so in the PR.


📄 License

MIT.

About

Turn your MacBook notch into a glanceable productivity island — 16 native modules, ~0% idle CPU

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /