DayBar is a macOS SwiftUI app that renders a lightweight day timeline as a transparent overlay. It shows the current workday progress, calendar events, and reminders due today directly on the bar.
- Transparent always-on-top overlay panel.
- Workday progress indicator.
- Calendar events displayed as timeline blocks.
- Reminders displayed as red exclamation markers.
- Hover detail pills for events and reminders.
- Calendar and reminder data refresh every 30 seconds.
- Launch-at-login registration on supported macOS versions.
- macOS with SwiftUI and EventKit support.
- Xcode.
- Calendar and Reminders permissions granted when prompted.
The app uses newer macOS APIs such as requestFullAccessToEvents, requestFullAccessToReminders, and SwiftUI glass effects, so build and deployment targets should remain aligned with the Xcode project settings.
- Open
DayBar.xcodeprojin Xcode. - Select the
DayBarscheme. - Build and run.
- Grant Calendar and Reminders access when macOS prompts.
The app runs as an accessory app, so it does not show a normal Dock icon or main window. It creates a borderless overlay panel instead.
DayBarApp.swift: SwiftUI app entry point.AppDelegate.swift: App lifecycle setup, accessory activation policy, and launch-at-login registration.OverlayWindowController.swift: Creates and manages the transparent overlay panel and mouse passthrough behavior.OverlayPanel.swift: CustomNSPanelconfiguration.ContentView.swift: Main timeline composition and refresh loop.CalendarDayModel.swift: Fetches calendar events and calculates timeline positions.ReminderDayModel.swift: Fetches reminders due today and calculates timeline positions.TimeBlock.swift: Timeline block views for calendar events and reminder markers.EventHoverDetailView.swift: Hover detail UI for calendar events and reminders.
The workday range is currently defined in CalendarDayModel.swift:
var WORK_DAY_START_HOURS = 7
var WORK_DAY_END_HOURS = 18These values determine the visible time range and how event and reminder positions are calculated.
- Calendar events are filtered to exclude all-day events.
- Reminders are filtered to incomplete reminders due today.
- The debug day offset can be changed with
DEBUG_DAY_OFFSET_DAYSinCalendarDayModel.swift. - The overlay currently sits at the bottom of the main screen.
- Drag on bar to add events and log time
- Clockify integration
- Open reminders app from bar
- Detect Google Meet links and launch call from bar
- Detect Teams links and launch call from bar
- Highlight events occurring soon
- Configuration UI
