sketchybar: meetingbar
If there are multiple upcoming meetings at the same time, show the
shorter one.
diff --git a/.config/sketchybar/meetingbar.swift b/.config/sketchybar/meetingbar.swift
index 717c184a..880c9822 100755
--- a/.config/sketchybar/meetingbar.swift
+++ b/.config/sketchybar/meetingbar.swift
@@ -96,7 +96,20 @@ class MeetingBar {
let events = eventStore.events(matching: predicate).filter { !$0.isAllDay }
let currentMeeting = events.first(where: { currentDate >= $0.startDate && currentDate <= $0.endDate })
- let nextMeeting = events.first(where: { $0.startDate > currentDate })
+
+ // Find all events starting after current time
+ let upcomingEvents = events.filter { $0.startDate > currentDate }
+ // If multiple events start at the same time, pick the shortest one
+ let nextMeeting = upcomingEvents.min { first, second in
+ if first.startDate == second.startDate {
+ // Same start time, compare durations
+ let firstDuration = first.endDate.timeIntervalSince(first.startDate)
+ let secondDuration = second.endDate.timeIntervalSince(second.startDate)
+ return firstDuration < secondDuration
+ }
+ // Different start times, pick the earlier one
+ return first.startDate < second.startDate
+ }
// No current meeting, show next meeting if available
guard let current = currentMeeting else {
diff --git a/.config/sketchybar/sketchybarrc b/.config/sketchybar/sketchybarrc
index 5f95922b..3e532874 100755
--- a/.config/sketchybar/sketchybarrc
+++ b/.config/sketchybar/sketchybarrc
@@ -114,7 +114,6 @@ sketchybar --add item datetime right \
# --set meetingbar \
# icon= \
# icon.padding_right=8 \
- # label.y_offset=2 \
# update_freq=120 \
# script="$PLUGIN_DIR/meetingbar.sh"