A native macOS menu bar app that gives you instant focus mode. Press a global hotkey and everything disappears behind a full-screen overlay — except your active window, which glides to the center of the screen with a smooth animation. Press again (or click the overlay, or switch apps) and everything returns to normal.
No Dock icon. No main window. Just a menu bar icon and a keyboard shortcut.
- Press Cmd+Shift+L to activate focus mode
- A dark overlay covers your entire screen
- Your active window smoothly animates to the center
- Type, click, scroll — the window stays fully interactive
- Deactivate by pressing the hotkey again, clicking the overlay, or switching apps
- Your window glides back to its original position
- Global hotkey (Cmd+Shift+L) — activate and deactivate from anywhere
- Full-screen overlay — opaque dark background hides all distractions
- Smooth animations — 60fps window centering and overlay fade powered by CVDisplayLink
- Multiple exit paths — hotkey, overlay click, or Cmd+Tab to another app
- Position restore — windows return to their exact original position
- Menu bar controls — toggle focus mode, launch at login, quit
- Accessibility onboarding — clear step-by-step permission guidance on first launch
- macOS 14.0 (Sonoma) or later
- Accessibility permission (the app will guide you through granting it)
Limelight builds with Swift Package Manager. No Xcode IDE required.
# Build
swift build
# Set up the app bundle (first time only)
mkdir -p .build/Limelight.app/Contents/MacOS
cp Limelight/App/Info.plist .build/Limelight.app/Contents/Info.plist
# Copy the binary into the bundle
cp .build/arm64-apple-macosx/debug/Limelight .build/Limelight.app/Contents/MacOS/Limelight
# Run (must use open — direct binary lacks Accessibility entitlements)
open .build/Limelight.appTo generate an Xcode project (requires XcodeGen):
xcodegen generate
open Limelight.xcodeprojLimelight/
├── App/ # Entry point, AppDelegate, Info.plist
├── Permissions/ # AccessibilityManager, onboarding UI
├── WindowManagement/ # WindowManager, WindowAnimator, WindowPosition
├── Overlay/ # OverlayWindow (NSPanel), OverlayController
├── FocusMode/ # FocusSessionController (state machine), HotkeyManager
├── MenuBar/ # StatusItemController
├── Utilities/ # ScreenUtilities
└── Resources/ # Asset catalog
The app uses a 4-state machine (idle → activating → active → deactivating → idle) to coordinate overlay animations, window movement, and deactivation triggers. All services are eagerly constructed with dependency injection in LimelightApp.init().
- KeyboardShortcuts — global hotkey registration
- LaunchAtLogin-Modern — launch at login toggle
| App | Difference |
|---|---|
| HazeOver | HazeOver dims background windows but doesn't center or isolate. Limelight gives full-screen opaque overlay + window centering for complete focus isolation. |
| Stage Manager | Stage Manager's sidebar is additional visual clutter. Limelight eliminates everything. |
| Hocus Focus | Hocus Focus hides inactive windows entirely. Limelight masks them behind an overlay — reversible with one keypress. |
| Cmd+Opt+H | Hides other apps but no overlay, no centering, no smooth transition. |
MIT