Skip to content

bevanmw/day-bar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DayBar

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.

screenshot

Features

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

Requirements

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

Running

  1. Open DayBar.xcodeproj in Xcode.
  2. Select the DayBar scheme.
  3. Build and run.
  4. 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.

Project Structure

  • 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: Custom NSPanel configuration.
  • 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.

Timeline Configuration

The workday range is currently defined in CalendarDayModel.swift:

var WORK_DAY_START_HOURS = 7
var WORK_DAY_END_HOURS = 18

These values determine the visible time range and how event and reminder positions are calculated.

Notes

  • 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_DAYS in CalendarDayModel.swift.
  • The overlay currently sits at the bottom of the main screen.

Roadmap

  • 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

About

Persistent calendar and reminder view for MacOS

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages