fix: Use markdown link format for meetingbar output
Meeting titles containing < characters were truncated by the <||> delimiter parsing logic.
Assisted-by: Claude Haiku 4.5 via Claude Code
diff --git a/.config/sketchybar/meetingbar.swift b/.config/sketchybar/meetingbar.swift
index 99bd0d48..d53058a4 100755
--- a/.config/sketchybar/meetingbar.swift
+++ b/.config/sketchybar/meetingbar.swift
@@ -226,9 +226,9 @@ do {
displayText = "\(event.title ?? "Untitled Event") \(timeStr)"
}
- // Output format: DISPLAY_TEXT<||>ZOOM_URL (or just DISPLAY_TEXT if no Zoom URL)
+ // Output format: markdown link [DISPLAY_TEXT](URL) or just DISPLAY_TEXT if no URL
if let zoomURL = extractZoomURL(from: event) {
- print("\(displayText)<||>\(zoomURL)")
+ print("[\(displayText)](\(zoomURL))")
} else {
print(displayText)
}
diff --git a/.config/sketchybar/plugins/meetingbar.sh b/.config/sketchybar/plugins/meetingbar.sh
index deff3678..8c2bbe5e 100755
--- a/.config/sketchybar/plugins/meetingbar.sh
+++ b/.config/sketchybar/plugins/meetingbar.sh
@@ -3,10 +3,11 @@
CALENDAR=
OUTPUT=$("$CONFIG_DIR/meetingbar.swift" "$CALENDAR")
-# Parse output: format is "DISPLAY_TEXT<||>ZOOM_URL" or just "DISPLAY_TEXT"
-if echo "$OUTPUT" | grep -q "<||>"; then
- MEETING=$(echo "$OUTPUT" | cut -d'<' -f1)
- ZOOM_URL=$(echo "$OUTPUT" | grep -o '<||>.*' | sed 's/<||>//')
+# Parse output: format is markdown link [DISPLAY_TEXT](URL) or just DISPLAY_TEXT
+if echo "$OUTPUT" | grep -q '\[.*\]('; then
+ # Extract display text and URL from markdown link format
+ MEETING=$(echo "$OUTPUT" | sed -E 's/\[(.*)\]\(.*/\1/')
+ ZOOM_URL=$(echo "$OUTPUT" | sed -E 's/.*\((.*)\)/\1/')
# Create a temporary script for clicking
CLICK_SCRIPT="open \"$ZOOM_URL\""
@@ -15,7 +16,7 @@ if echo "$OUTPUT" | grep -q "<||>"; then
label="$MEETING" \
click_script="$CLICK_SCRIPT"
else
- # No Zoom URL, just set the label and clear any click script
+ # No URL, just set the label and clear any click script
sketchybar --set "$NAME" \
label="$OUTPUT" \
click_script=""