Supported Software — vdirsyncer 0.15.0 documentation

# Supported Software

## Client applications

The following software has been reported to work well with vdirsyncer, however, none of it is regularly tested.

### Calendars

- khal, a CLI calendar application supporting vdir. You can use `filesystem` with it.
- Many graphical calendar apps such as dayplanner, Orage or rainlendar save a calendar in a single `.ics` file. You can use `singlefile` with those.

### Task/Todo managers

The iCalendar format also supports saving tasks in form of `VTODO`-entries, with the same file extension as normal events: `.ics`. All CalDAV servers support synchronizing tasks, vdirsyncer does too.

- todoman, a CLI task manager supporting vdir. You can use `filesystem` with it.

  Its interface is similar to the ones of Taskwarrior or the todo.txt CLI app and should be intuitively usable.

### Contacts

- khard, a commandline addressbook supporting vdir. You can use `filesystem` with it.
- contactquery.c, a small program explicitly written for querying vdirs from mutt.
- mates, a commandline addressbook supporting vdir.
- vdirel, access vdir contacts from Emacs.

## Supported servers

CalDAV and CardDAV servers not listed here may work anyway.

### Radicale

Radicale is a very lightweight server, however, it intentionally doesn’t implement the CalDAV and CardDAV standards completely, which might lead to issues even with very well-written clients. Apart from its non-conformity with standards, there are multiple other problems with its code quality and the way it is maintained.

That said, vdirsyncer is continuously tested against the git version and the latest PyPI release of Radicale.

- Vdirsyncer can’t create collections on Radicale.

- Radicale doesn’t support time ranges in the calendar-query of CalDAV, so setting `start_date` and `end_date` for `caldav` will have no or unpredicted consequences.

- Versions of Radicale older than 0.9b1 choke on RFC-conform queries for all items of a collection.

  You have to set `item_types = ["VTODO", "VEVENT"]` in `caldav` for vdirsyncer to work with those versions.

### ownCloud

Vdirsyncer is continuously tested against the latest version of ownCloud:

    [storage cal]
    type = "caldav"
    url = "https://example.com/remote.php/dav/"
    username = ...
    password = ...

    [storage card]
    type = "carddav"
    url = "https://example.com/remote.php/dav/"
    username = ...
    password = ...

- Versions older than 7.0.0: ownCloud uses SabreDAV, which had problems detecting collisions and race-conditions. The problems were reported and are fixed in SabreDAV’s repo, and the corresponding fix is also in ownCloud since 7.0.0. See issue #16 for more information.

### nextCloud

Vdirsyncer is continuously tested against the latest version of nextCloud:

    [storage cal]
    type = "caldav"
    url = "https://nextcloud.example.com/"
    username = ...
    password = ...

    [storage card]
    type = "carddav"
    url = "https://nextcloud.example.com/"

- WebCAL-subscriptions can’t be discovered by vdirsyncer. See this relevant issue.

### FastMail

Vdirsyncer is irregularly tested against FastMail. There are no known issues with it. FastMail’s support pages provide the settings to use:

    [storage cal]
    type = "caldav"
    url = "https://caldav.messagingengine.com/"
    username = ...
    password = ...

    [storage card]
    type = "carddav"
    url = "https://carddav.messagingengine.com/"
    username = ...
    password = ...

### iCloud

Vdirsyncer is regularly tested against iCloud.

    [storage cal]
    type = "caldav"
    url = "https://caldav.icloud.com/"
    username = ...
    password = ...

    [storage card]
    type = "carddav"
    url = "https://contacts.icloud.com/"
    username = ...
    password = ...

Problems:

- Vdirsyncer can’t do two-factor auth with iCloud (there doesn’t seem to be a way to do two-factor auth over the DAV APIs) You’ll need to use app-specific passwords instead.
- iCloud has a few special requirements when creating collections. In principle vdirsyncer can do it, but it is recommended to create them from an Apple client (or the iCloud web interface).
  - iCloud requires a minimum length of collection names.
  - Calendars created by vdirsyncer cannot be used as tasklists.

### DavMail (Exchange, Outlook)

DavMail is a proxy program that allows you to use Card- and CalDAV clients with Outlook. That allows you to use vdirsyncer with Outlook.

In practice your success with DavMail may wildly vary. Depending on your Exchange server you might get confronted with weird errors of all sorts (including data-loss).

Make absolutely sure you use the latest DavMail:

    [storage outlook]
    type = "caldav"
    url = "http://localhost:1080/users/user@example.com/calendar/"
    username = "user@example.com"
    password = ...

- Older versions of DavMail handle URLs case-insensitively. See issue #144.

- DavMail is handling malformed data on the Exchange server very poorly. In such cases the Calendar Checking Tool for Outlook might help.

- In some cases, you may see errors about duplicate events. It may look something like this:

      error: my_calendar/calendar: Storage "my_calendar_remote/calendar" contains multiple items with the same UID or even content. Vdirsyncer will now abort the synchronization of this collection, because the fix for this is not clear; It could be the result of a badly behaving server. You can try running:
      error:
      error:     vdirsyncer repair my_calendar_remote/calendar
      error:
      error: But make sure to have a backup of your data in some form. The offending hrefs are:
      [...]

  In order to fix this, you can try the Remove-DuplicateAppointments.ps1 PowerShell script that Microsoft has come up with in order to remove duplicates.

### Baikal

Vdirsyncer is continuously tested against the latest version of Baikal.

- Baikal up to `0.2.7` also uses an old version of SabreDAV, with the same issue as ownCloud, see issue #160. This issue is fixed in later versions.

### Google

Using vdirsyncer with Google Calendar is possible as of 0.10, but it is not tested frequently. You can use `google_contacts` and `google_calendar`.

For more information see issue #202 and issue #8.