Skip to content

marad/limelight

Repository files navigation

Limelight

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.

How it works

  1. Press Cmd+Shift+L to activate focus mode
  2. A dark overlay covers your entire screen
  3. Your active window smoothly animates to the center
  4. Type, click, scroll — the window stays fully interactive
  5. Deactivate by pressing the hotkey again, clicking the overlay, or switching apps
  6. Your window glides back to its original position

Features

  • 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

Requirements

  • macOS 14.0 (Sonoma) or later
  • Accessibility permission (the app will guide you through granting it)

Building

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.app

To generate an Xcode project (requires XcodeGen):

xcodegen generate
open Limelight.xcodeproj

Architecture

Limelight/
├── 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().

Dependencies

How is this different from...

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.

License

MIT

About

Native macOS menu bar focus mode app — one hotkey eliminates visual clutter

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages