Using iCloud calendars on GNU/Linux
iCloud isn’t just for your Apple toys.
Since iCloud uses an open standard called CalDAV, you can synchronise your calendars to your other devices on other operating systems like GNU/Linux.1
To use your iCloud calendars under GNU/Linux2:
A. Install the required software.
Install the following apps if you don’t already have them:
-
Install Evolution:
sudo apt install evolution
-
Install Gnome Calendar:
sudo apt install gnome-contacts
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.
B. Set up an app-specific password on iCloud.
-
Sign into your Apple account at https://appleid.apple.com/
-
Scroll down to the App-Specific Passwords area in the Security section and select the Generate Password… link.
-
In the resulting pop-over, enter a descriptive name for this password.
-
Copy the password onto the clipboard.
C. Set up your calendar(s) in Evolution.
-
Select the Calendar section in the main navigation.
-
Open the drop-down menu next to the New button and select Calendar3.
-
In the resulting New Calendar window, select CalDAV from the Type drop-down.
-
In the URL field, enter https://caldav.icloud.com
-
In the User field, enter your Apple ID
-
Press the Find Calendars button.
-
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.”
References
-
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. ↩︎
-
Because iCloud reportedly supports scheduling as described in RFC 6638. ↩︎
-
I have mine set to every ten minutes at the moment but I might tweak that as – no pun intended – time goes by. ↩︎
-
I opened an issue for this on the Gnome Calendar source code repository: Add support for iCloud CalDAV. ↩︎