How to configure calendar sync on Linux (tested on Ubuntu 20.04) for Fastmail using vdirsync and todoman.
This lets me use the same todo list between my linux desktop, and iOS mobile devices (using the built in stock reminders app)
I am using vdirsyncer to connect to Fastmail’s servers and before the synchronisation.
status_path = "~/.vdirsyncer/status/" [pair fastmail] a = "local" b = "cal" collections = ["from a", "from b"] [storage cal] type = "caldav" url = "https://caldav.messagingengine.com/" username = "email@example.com" password = "fastmail-app-specific-password" [storage local] type = "filesystem" path = "~/.vdirsyncer/fastmail" fileext = ".ics"
Todoman is a terminal reminder/todo app that can work with vdirsyncer.
Here is my configuration for todoman that points it at the folders created by vdirsyncer.
# A glob expression which matches all directories relevant path = ~/.vdirsyncer/fastmail/path-for-reminders-cal date_format = %Y-%m-%d time_format = %H:%M default_list = reminders-cal-id (same as the folder, see below...) default_due = 48 humanize = true
To figure out which calendar is the ical reminders feed you can take a look in ~/.vdirsyncer/fastmail. There should be a folder for each of your Fastmail calenders.
Look through the ICS files that you find and you’ll find something similar to the this example. You want to use the directory name of the folder that contains your VTODO’s - use the directory name for the default_list above as well.
CALSCALE:GREGORIAN PRODID:-//Apple Inc.//iOS 13.6.1//EN VERSION:2.0 BEGIN:VTODO CLASS:PUBLIC COMPLETED:20200825T165931Z CREATED:20200825T165843Z DTSTAMP:20200825T165931Z LAST-MODIFIED:20200825T165931Z PERCENT-COMPLETE:100 STATUS:COMPLETED SUMMARY:Test from ios UID:d3cc53dabe0fb4280617dd7c349f2705ea72e59f END:VTODO END:VCALENDAR
It is possible to using a terminal calendar tool like Calcurse or Khal but I have not set these up yet.
Automating with Cron
To automate synchronisation, I used cron. Add the following via
crontab -e to run the sync every 15 minutes.
*/15 * * * * /home/james/.local/bin/vdirsyncer sync > /dev/null