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:
The user configures an online account through Lomiri Online Accounts.
Buteo creates the corresponding synchronization profile and stores it in ~/.local/share/system/privileged/msyncd/sync
Buteo loads the appropriate synchronization plugin (CalDAV or Social).
The plugin communicates with the remote calendar provider.
Changes are synchronized with the local mkcal database. ~/.local/share/system/privileged/Calendar/mkcal
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)