We will be using Evolution to set up the iCloud accounts but you will most likely want to use Gnome Calendar as your daily calendar as it offers a minimal, beautiful experience.
In the resulting password entry pop-up, paste the app-specific password you copied onto the clipboard in the last section.
In the resulting Choose a Calendar window, select the calendar you want to set up4.
Back in the New Calendar window, choose a colour to match the one you use on iCloud.
Set your options: I select Copy calendar contents locally for offline operation, as I want to be able to access the calendar even if I don’t have an Internet connection, and Server handles meeting invitations.5
If you want this to be your default calendar, also check Mark as default calendar.
Set the Refresh every setting6 to decide how frequently your calendars should synchronise.
Press the OK button to create the calendar when you’re happy with your choices.
This should be easier…
That’s it! If all goes well, you should see your calendar entries begin to pop up in Evolution. If you want to set up additional calendars, rinse and repeat the instructions in this section.
Once you’ve set up your accounts, fire up Gnome Calendar and enjoy your synchronised calendars in a beautifully minimal interface.
Any entries you make in Gnome Calendar will sync to iCloud and, from there, to all of your Apple toys, and vice-versa.
Ideally, this should be a seamless process that’s built into Gnome Calendar7.
Issues
As I discover issues, I will document them here.
You cannot move an event between calendars
Issue #304: Moving an event from one iCloud CalDAV calendar to another, results in a 403 (Forbidden) error. The exact error is “Failed to put data: HTTP error code 403 (Forbidden): Found component … with same UID in a different collection.”
That said, the process is not well-documented at Apple or elsewhere. There is a clear need for better documentation as well as a seamless process for using CalDAV-based calendars in GNU/Linux. This post aims to contribute to the former. ↩︎
The examples here are tested to work on Pop!_OS 18.04 running Gnome 3.28.2. ↩︎
I would have taken a screenshot of the menu itself but the system-wide screenshot hot-key stops responding in Evolution when any drop-down is open. The same thing happens on the New Calendar window with the Type field. I’ve noticed similar issues in modal states in some other apps also. Not sure if this is a bug with the apps, with Gnome, or even Xorg. ↩︎
You will have to set up your calendars one by one. ↩︎