Calendar subsystem

Since 26.04

Architecture

The Calendar feature is provided by several components:

  • The Calendar App, providing the user interface.

  • mkcal, the backend where calendar collections and events are stored.

  • QtPIM, the Organizer API to manage collections and events

  • QtPIM mkcal, the QtPIM API to mkcal bridge

  • Buteo Sync Framework, the service responsible for managing synchronization with remote calendars.

  • Buteo Sync Plugin CalDAV, the plugin responsible for synchronizing with remote WebDAV/CalDAV calendars.

  • Buteo Sync Plugin Social, the plugin responsible for synchronizing with Google calendars.

  • Lomiri Online Accounts (Online Accounts subsystem), providing account management and authentication for online services.

Note

Migration from Evolution Data Server (Calendar subsystem (Legacy)) to mkcal:

Migration has been performed by a single shot service lomiri-eds2mkcal-service, the migration marker is stored in: /home/phablet/.config/lomiri/mkcal_migration_has_run. A per-calendar marker is also created, e.g: /home/phablet/.local/share/evolution/calendar/system/migrated_to_mkcal

Synchronization workflow

The general synchronization workflow is:

  1. The user configures an online account through Lomiri Online Accounts.

  2. Buteo creates the corresponding synchronization profile and stores it in ~/.local/share/system/privileged/msyncd/sync

  3. Buteo loads the appropriate synchronization plugin (CalDAV or Social).

  4. The plugin communicates with the remote calendar provider.

  5. Changes are synchronized with the local mkcal database. ~/.local/share/system/privileged/Calendar/mkcal

  6. The Calendar App reads the updated data through QtPIM/QtOrganizer.

Debugging

For mkcal issues:

systemctl --user set-environment QT_LOGGING_RULES="org.kde.pim.mkcal.*=true"

For synchronisation issues:

systemctl --user set-environment QT_LOGGING_RULES="buteo.*.debug=true"
systemctl --user restart msyncd.service

For Online Accounts issues:

see Lomiri Online Accounts (Online Accounts subsystem)