When you're heads-down, FocusNotch shows the time left on the left of your notch and your session progress on the right. Glance up — that's it. Move your cursor to the notch and it expands into a full control panel: a big countdown, a progress bar, your session tracker, transport controls, and a one-tap Do Not Disturb toggle. No window. No Dock icon. Just your notch, finally doing something.
- 🎯 Notch-native — a panel pinned over the physical notch, floating above every Space and over fullscreen apps. Click-through when collapsed, so your menu bar keeps working.
- 👀 Glanceable — remaining time on the left, session dots on the right. Idle? It stays a clean, invisible notch.
- 🖱️ Hover to expand — a smooth, BoringNotch-style drop-down with the camera notch flowing into the panel (concave "ears", rounded corners, pure
#000black). - 🍅 A real Pomodoro engine — configurable focus / short break / long break, cycles before a long break, optional auto-start. The countdown is anchored to an absolute end time, so it stays accurate across sleep and app nap.
- 🌙 Do Not Disturb — toggle macOS Focus from the notch, or have it follow your work sessions automatically.
- 🔔 Notifications & sounds on every phase change.
- 📊 Menu bar timer mirroring the countdown, with the same controls — handy on external displays.
- 🚀 Launch at login and a friendly first-run onboarding.
- 🖥️ No notch? No problem — optionally shows a centered "island" on any Mac.
Download — grab the latest FocusNotch.dmg from the
Releases page, open it, and drag FocusNotch to Applications.
Until the app is notarized, macOS may warn on first open — right-click the app → Open, then confirm. (Notarization is on the roadmap.)
Or build from source:
brew install xcodegen # one-time
git clone https://github.com/23aneessss/FocusNotch && cd FocusNotch
xcodegen generate
open FocusNotch.xcodeproj # ⌘R to runFocusNotch is an agent app (no Dock icon) — after launch, look for the timer in your menu bar and the panel over your notch.
Apple provides no public API for Focus, so FocusNotch runs a Shortcut that
accepts on/off. It defaults to the free
macos-focus-mode shortcut:
npx macos-focus-mode installThen the moon button toggles Do Not Disturb — no Accessibility or other permissions needed. Prefer your own shortcut? Point FocusNotch at it in Settings → Focus.
A borderless, non-activating NSPanel is pinned over the notch at the .statusBar
window level and joins every Space. NotchController tracks the cursor with paired
global + local NSEvent monitors (needed because the panel toggles
ignoresMouseEvents between states) and flips an observable isOpen flag, which
NotchRootView animates. The collapsed gap is kept perfectly centered on the
physical notch by using equal side widths, and expanded content sits below the
notch strip so the camera never hides it.
Sources/
├── App/ Lifecycle, shared environment
├── Pomodoro/ PomodoroEngine (state machine), settings, phases
├── Focus/ FocusController (Do Not Disturb via Shortcuts)
├── System/ Notifications, sounds, launch-at-login, screen + time helpers
├── Notch/ NSPanel, hover controller, geometry, status bar, settings & onboarding windows
└── Views/ SwiftUI: notch shape, collapsed/expanded views, components, onboarding, settings
The whole pipeline — build → sign → DMG → notarize → staple — is one command:
FN_SIGN_ID="Developer ID Application: Your Name (TEAMID)" \
FN_NOTARY_PROFILE="FocusNotchNotary" \
./scripts/release.sh
# → dist/FocusNotch-<version>.dmgOmit FN_NOTARY_PROFILE for a signed-but-un-notarized build for local testing.
Notarization requires a paid Apple Developer membership, a Developer ID
Application certificate, and a notarytool keychain profile — see the header of
scripts/release.sh for the one-time setup.
- Notarized DMG release
- Focus stats & streaks
- Global hotkey (start / pause / skip)
- Session presets (25/5, 50/10, deep work)
- Theming & accent color
- Localization (FR included)
Issues and PRs welcome. The project is generated with XcodeGen — edit project.yml
and run xcodegen generate after adding or removing files. The app icon and the
banner above are generated from code in Tools/.
MIT — free to use, fork, and build on. If you plan to sell a closed-source build, swap in your own commercial / EULA terms first.
Built with SwiftUI · Make your notch useful.
