Starter¶
A notch app: a black panel over the MacBook's camera housing that grows down out of it when the pointer or a
dragged file comes near. LSUIElement, no Dock icon, a small menu bar menu that people can hide. Made with Summon
from its notch template. The starter's job is a shelf: drop files into the notch to keep them close, drag them
out again later. Replace it with your own glanceable thing and keep the panel.
Built to the SummonOS surface rules for system extensions (docs/ux-surfaces/07-system-extensions.md in the
SummonOS workspace). Apple has no notch API: this is an ordinary borderless window above the menu bar, placed
from NSScreen.auxiliaryTopLeftArea and auxiliaryTopRightArea, with a fallback for screens without a housing.
Behavior¶
| What | How |
|---|---|
| Where | The screen whose auxiliaryTopLeftArea/RightArea exist; the housing is the gap between them (NotchGeometry) |
| No notch | An external display or older Mac: a small pill under the menu bar of the main screen, or nothing (Settings) |
| Closed | A true-black shape exactly the housing's size, so it disappears into it |
| Opens | When the pointer enters (an .activeAlways tracking area, so it works while another app is active) or a file is dragged over it |
| Closes | 0.3 s after the pointer and the drag have left |
| Motion | Grows out of the housing with a slight overshoot; Reduce Motion: no animation |
| Shelf | Newest first, no duplicates, at most 24; holds locations only (never copies); missing files drop off at launch |
| Files | Drag out to use (it stays on the shelf), click to open, right-click: Open, Show in Finder, Remove from Shelf |
| Focus | Never key, never activates the app; on every Space; out of Mission Control and ⌘` |
| Settings | Open at Login, Show in menu bar, Show on displays without a notch |
| Reopen | Opening the app again from the Finder shows Settings: the way back when the menu bar item is hidden |
Layout¶
| Path | What it is |
|---|---|
Sources/Starter/ |
@main only: the invisible opener window and the Settings scene |
Sources/StarterUI/NotchPanel.swift |
NotchPanel (NSPanel allowed into the menu bar), the hover-tracking host, NotchController |
Sources/StarterUI/NotchView.swift |
The black shape, the shelf, file tiles |
Sources/StarterUI/StarterModel.swift |
The shelf (saved in UserDefaults), open state with the close grace period |
Sources/StarterUI/AppDelegate.swift |
Creates the panel and the menu bar menu, applies Settings |
Sources/StarterUI/StatusMenu.swift |
ActionMenu (an NSMenu built from closures) and the menu bar item |
Sources/StarterUI/SettingsOpener.swift |
Opens the Settings window from AppKit code |
Sources/StarterUI/SummonTheme.swift, Glass.swift |
.themed() (the Summon theme's accent) and .glassControl() |
Sources/StarterUI/CloseOnlyWindow.swift |
.closeOnlyWindow() on Settings: minimize and zoom dimmed, no full screen |
Sources/StarterUI/Screenshots.swift |
--screenshot <folder>: the open panel and Settings to PNGs, for summon project shots |
Sources/StarterCore/ |
NotchGeometry, Shelf, SummonThemeFile; Foundation only, tested |
Resources/ |
Info.plist (bundle id local.summon.notch-starter, LSUIElement), AppIcon.icns |
Tests/StarterCoreTests/ |
swift-testing |
scripts/check.sh |
The gate: build, tests (scripts/test.sh, works without Xcode), plist, bundle |
Check on a Mac with a notch and on one without: the housing's numbers come from the system, but nobody has measured this panel against a real cutout yet.
Build and run¶
Requires macOS 15+ and Swift 6. No third-party dependencies.