Skip to content

feat(calendar): support per-event colors from RFC 7986 and vendor extensions - #4033

Open
xela-zone wants to merge 1 commit into
noctalia-dev:mainfrom
xela-zone:feature/ical-per-event-color
Open

feat(calendar): support per-event colors from RFC 7986 and vendor extensions#4033
xela-zone wants to merge 1 commit into
noctalia-dev:mainfrom
xela-zone:feature/ical-per-event-color

Conversation

@xela-zone

@xela-zone xela-zone commented Aug 20, 2026

Copy link
Copy Markdown

Summary

  • Parse RFC 7986 'COLOR' property and CSS color specifications in ICalParser
  • Parse 'X-APPLE-CALENDAR-COLOR', 'X-COLOR', and 'X-OUTLOOK-COLOR' properties
  • Map Google Calendar per-event 'colorId' palette in GoogleClient
  • Use account/collection color as fallback only when event.colorHex is empty
  • Add unit tests for RFC COLOR, CSS named color, and vendor color parsing

Motivation

events could only previously have a single color - that of it's parent calendar account. this change allows that event to have a override color, by event.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Build / packaging

Testing

using caldav + fastmail, and pr #4034

Manual Coverage

  • Tested on Niri
  • Tested on Hyprland
  • Tested on Sway
  • Tested on another compositor:
  • Tested with different bar positions and density settings
  • Tested at different interface scaling values
  • Tested with multiple monitors

Screenshots / Videos

image

Checklist

  • This PR is ready for review, or it is marked as Draft.
  • I read and followed the relevant guidance in CONTRIBUTING.md.
  • I ran just format with clang-format v22+ installed, or this PR has no code changes.
  • I ran the relevant build or test commands, or explained why they were not run.
  • I self-reviewed the changes.
  • I checked for new warnings or errors.
  • I will update end-user documentation after merge, or this PR does not change user-facing configuration or behavior.
  • I added or updated assets/translations/en.json, or this PR adds no new user-facing strings.
  • I did not edit non-English translation files unless this PR is explicitly for translation tooling, an import/export sync, or a maintainer-requested locale change.
  • I used the existing canonical names for config keys, IPC names, paths, and identifiers.

Additional Notes

generated using antigravity/gemini, tested and lead by a human

…ensions

- Parse RFC 7986 'COLOR' property and CSS color specifications in ICalParser
- Parse 'X-APPLE-CALENDAR-COLOR', 'X-COLOR', and 'X-OUTLOOK-COLOR' properties
- Map Google Calendar per-event 'colorId' palette in GoogleClient
- Use account/collection color as fallback only when event.colorHex is empty
- Add unit tests for RFC COLOR, CSS named color, and vendor color parsing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant