
Lucid.mp4
A macOS menu bar application with custom-designed UI components to help reduce eye strain, maintain good posture, and encourage healthy work habits through customizable reminders and overlays.
- π Eye Strain Reminders - Full-screen overlays following the 20-20-20 rule
- β¨ Mini Overlay Reminders - Non-intrusive animated wellness reminders
- π Bedtime Reminders - Custom-designed UI with system actions and color customization
- π₯ Presentation Mode - Auto-pause during screen sharing
- π Sound Effects - Customizable audio notifications
- π¨ Custom UI Components - Handcrafted interface elements throughout the app
Periodic full-screen overlay reminders to give your eyes a rest using the 20-20-20 rule (look at something 20 feet away for 20 seconds every 20 minutes).
-
Customizable intervals: Set reminder frequency in minutes
-
Personalized messaging: Customize title and message text
-
Auto-dismiss: Configurable auto-dismiss timer
-
Skip functionality: Randomly positioned skip button to prevent muscle memory
-
Keyboard shortcuts: Dismiss overlays with a customizable hotkey
-
Enable toggle: Turn eye strain reminders on/off
-
Preview button: Test reminders with current settings

Brief, non-intrusive animated reminders that appear at the bottom of your screen for quick wellness checks.
- Animated pill design: Smooth morphing animation from dot to pill and back
- Customizable messages: Set your own reminder text
- SF Symbol icons: Choose from a variety of wellness-themed icons
- Adjustable timing: Control both animation and display duration
- Multi-screen support: Appears on all connected displays simultaneously
- Custom colors: Choose background and foreground colors
- Vertical offset: Adjust distance from bottom of screen
- Enable toggle: Turn mini overlays on/off
- Preset suggestions: Quick access to common wellness reminders:
- Posture check
- Stay hydrated
- Blink more
- Stretch time
- Deep breath
- Look away
Screen.Recording.2025-10-01.at.21.13.25.mov
Intelligent bedtime notifications with a fully custom-designed UI to help maintain healthy sleep schedules.
- Visual timeline editor: Custom-built interactive time range selector with drag handles
- Customizable colors: Choose custom background and foreground colors for bedtime overlays (NEW)
- System action buttons: Quick access to Log Out, Sleep, and Shut Down directly from the bedtime overlay (NEW)
- Custom UI components: Handcrafted buttons and interface elements designed specifically for nighttime use
- Repeating reminders: Optional periodic reminders throughout bedtime hours
- Configurable intervals: Control how often reminders repeat
- Auto-dismiss option: Choose whether overlays auto-dismiss or require manual action
- Custom messaging: Personalize title and message for bedtime notifications
- Persistent mode: Continuously check and show overlay if past bedtime

- Launch at login: Automatically start the app when you log in
- Overlay opacity: Choose from multiple material thickness options:
- Ultra Thin
- Thin
- Medium
- Thick
- Ultra Thick
- Click to dismiss: Optional click-to-dismiss functionality for overlays
- Keyboard shortcuts: Customizable hotkey to dismiss any active overlay
- Preview functionality: Test overlays with current settings before committing
- Global alerts toggle: Master switch to enable/disable all reminders

Automatically pauses all reminders when you're presenting or screen sharing to avoid embarrassing interruptions.
- Auto-detection: Monitors for active screen sharing and presentation apps
- Supported apps: Zoom, Teams, Meet, Webex, Discord, Skype, and more
- Presentation software: Keynote, PowerPoint, Google Slides, Prezi
- Fullscreen detection: Recognizes when apps are in presentation mode
- Zero configuration: Works automatically in the background
- Toggleable: Can be disabled in General settings if needed
Supported Applications:
- Video conferencing: Zoom, Microsoft Teams, Google Meet, Webex, Skype, Discord, RingCentral, GoToMeeting, BlueJeans
- Presentation: Keynote, PowerPoint, Google Slides, Prezi, PDF Expert, Preview
Add audio feedback to your reminders for better awareness.
- 10 system sounds: Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink, or None
- Volume control: Adjustable from 0% to 100%
- Test button: Preview sounds before selecting
- Smart playback: Only plays for scheduled reminders (not preview buttons)
- Respects presentation mode: No sounds during presentations or when settings are open
- Live countdown: Menu bar icon displays time until next reminder
- Quick access: Single click to open settings
- Always available: Discrete presence in your menu bar

- macOS 14.6 or later
- Xcode 15.0+ (for building from source)
- Download the latest release from the releases page
- Move
Lucid.app
to your Applications folder - Launch the app
- Grant necessary permissions when prompted
# Clone the repository
git clone https://github.com/yourusername/swift-macos-template.git
cd swift-macos-template
# Open in Xcode
open Lucid.xcodeproj
# Build and run (βR)
- First Launch: Grant permission for the app to display notifications and overlays
- Configure Settings: Click the menu bar icon to access settings
- Customize Reminders: Set up eye strain, mini overlay, and bedtime reminders to your preference
- Enable Launch at Login: For consistent wellness reminders throughout your workday
- Dismiss Overlay: Customizable (default: none) - Set in General settings
- SwiftUI: Modern declarative UI framework with custom-built components
- AppKit: Native macOS window and menu bar integration
- Combine: Reactive state management
- UserDefaults: Persistent settings storage
- Custom UI Design: Handcrafted buttons, overlays, and interactive elements
- SettingsAccess (v2.1.0+) - Settings window utilities
- KeyboardShortcuts (v2.4.0+) - Keyboard shortcut management
Lucid/
βββ Lucid.swift # App entry point
βββ MainScene.swift # Main scene configuration
βββ Models/
β βββ AppState.swift # Application state management
βββ Settings/
β βββ SettingsWindow.swift # Settings window container
β βββ GeneralSettingsTab.swift
β βββ EyeStrainSettingsTab.swift
β βββ MiniOverlaySettingsTab.swift
β βββ BedtimeSettingsTab.swift
βββ Menu Bar/
β βββ MenuBarModel.swift # Menu bar state management
β βββ MenuBarView.swift # Menu bar UI
βββ Components/
β βββ Overlay.swift # Full-screen overlay component
β βββ MiniOverlay.swift # Mini animated overlay
β βββ TimelineEditor.swift # Visual time range editor
β βββ Buttons.swift # Reusable button components
β βββ TextFields.swift # Custom text field components
β βββ UIDropdown.swift # Dropdown component
β βββ SettingItems.swift # Settings UI components
β βββ InfoBox.swift # Info box component
βββ Services/
β βββ Notifier.swift # Notification scheduling service
β βββ PresentationModeDetector.swift # Screen sharing detection (NEW)
β βββ SoundManager.swift # Sound effect management (NEW)
βββ Utilities/
βββ Styles.swift # Shared styling constants
All settings are stored in UserDefaults
with the following keys:
launchAtLogin
: BooleanoverlayMaterial
: String (material type)eyeStrainClickToDismiss
: Boolean
eyeStrainEnabled
: BooleaneyeStrainInterval
: Integer (minutes)eyeStrainTitle
: StringeyeStrainMessage
: StringeyeStrainDismissAfter
: Integer (seconds)
miniOverlayEnabled
: BooleanminiOverlayText
: StringminiOverlayIcon
: String (SF Symbol name)miniOverlayDuration
: Double (seconds)miniOverlayHoldDuration
: Double (seconds)miniOverlayInterval
: Integer (minutes)miniOverlayBackgroundColor
: Data (NSColor archived)miniOverlayForegroundColor
: Data (NSColor archived)miniOverlayUseCustomColors
: BooleanminiOverlayVerticalOffset
: Integer (pixels)
bedtimeEnabled
: BooleanbedtimeStartTime
: DatebedtimeEndTime
: DatebedtimeTitle
: StringbedtimeMessage
: StringbedtimeDismissAfter
: Integer (seconds)bedtimeRepeatReminders
: BooleanbedtimeRepeatInterval
: Integer (minutes)bedtimeAutoDismiss
: BooleanbedtimePersistent
: BooleanbedtimeBackgroundColor
: Data (NSColor archived)bedtimeForegroundColor
: Data (NSColor archived)bedtimeUseCustomColors
: Boolean
soundEffectsEnabled
: BooleanreminderSoundEffect
: String (sound name)soundEffectsVolume
: Double (0.0-1.0)disableDuringPresentation
: Boolean


Contributions are welcome! Please feel free to submit a Pull Request.
- β Custom Bedtime UI - Fully redesigned bedtime overlay with custom colors
- β System Action Buttons - Log out, sleep, and shut down from bedtime overlay
- β Presentation Mode Detection - Auto-pause during screen sharing
- β Sound Effects - 10 customizable notification sounds
- β Enhanced Mini Overlays - Custom colors and vertical offset
- β Eye Strain Toggle - Enable/disable eye strain reminders
- β Persistent Bedtime Mode - Continuous bedtime monitoring
- β Improved Animation - Smoother mini overlay transitions
- β Smart Behavior - Respects settings window and presentation state
- Skip button position randomization is intentional to prevent muscle memory development
- Presentation detection requires apps to be active/frontmost
- Some web-based conferencing (in browsers) may not be detected
- Statistics tracking for reminder engagement
- Multiple reminder profiles (work, home, weekend)
- Pomodoro timer integration
- Stretch routine reminders with guided exercises
- Calendar integration for smart scheduling
- Export/import settings
- Custom sound upload
- Activity detection improvements
For questions, issues, or feedback:
- Open an issue.
- Email: enochlauenoch@gmail.com
- Built with SwiftUI
- Icons from SF Symbols
- Dependencies: SettingsAccess, KeyboardShortcuts