< KDE PIM(Redirected from KDE PIM/KItinerary)

KDE PIM/KDE Itinerary

KDE Itinerary

What is KDE Itinerary?

KDE Itinerary is a digital travel assistant with a priority on protecting your privacy. It consists of a plug-in for your email client to automatically find booking documents, and a mobile app with your itinerary.

Some feature highlights:

  • Timeline view with automatic trip grouping.
  • Supports ticket management for multi-traveler and multi-ticket bookings.
  • Automatic booking data extraction from various input formats, performed locally on your device.
  • Real-time delay and platform change information for trains.
  • Weather forecast for destination along your trip.
  • Full control over all online access.
  • Selection of alternative train connections on unbound tickets or on missed connections.
  • Local ground transportation navigation between elements of your itinerary.
  • Personal travel statistics to monitor environmental impact.

More information:

Getting KDE Itinerary


Not yet available in F-Droid or Google Play Store unfortunately.

Nightly development builds are available here:

Plasma Mobile, Flatpak

flatpak remote-add --if-not-exists kdeapps --from https://distribute.kde.org/kdeapps.flatpakrepo
flatpak install kdeapps org.kde.itinerary

Browser Integration

See https://blog.broulik.de/2019/11/taking-itinerary-to-the-next-level/



Make sure you have the ZXing-C++ and Poppler dependencies. For Poppler, this needs the private Poppler API, the header files for this are provided through separate packages by several distributions, so make sure to have those installed as well.

Getting data into KDE Itinerary

Direct import

Use Global drawer > Import... in the app to import data from a file directly. Usually works for PDF and PkPass files, full emails are hard to get hold of on mobile usually.

KMail Itinerary plug-in


Interaction with the KMail plug-in is a bit hidden in older versions (19.08 or before), via the small icon in the top right corner (to be fixed).

Via NextCloud/DavDroid: Select "Add To Calendar", and pick a calendar on a NextCloud server. Once synced to an Android phone via DavDroid, select "Check Calendar" in the global drawer of the app. Other CalDav servers might work, other sync apps than DavDroid will likely not work.

Via KDE Connect: Select "Send to <device>".

Getting involved

New to KDE? See also https://community.kde.org/Get_Involved


  • #kontact on IRC/Libera.Chat or Matrix

Source Code & Workboard

See https://phabricator.kde.org/project/manage/280/

Donating Sample Data

Samples can be sent to [email protected] and will not be published.

Anything vaguely looking like flight, train, bus, rental car, hotel, event or restaurant bookings/tickets/confirmations/cancellation/etc is relevant. Such documents are even still relevant when they are seemingly already extracted correctly, in many cases there are non-obvious details we don't cover yet correctly.

Preferably in their original unaltered form, for emails the easiest way is "Forward As Attachment".

Switching KDE Itinerary to Development Mode

A number of development or diagnostic features useful for improving KDE Itinerary are available in "Development Mode". To activate that tap the version number in About > Version seven times (same way as the development mode of Android devices is activated).

In development mode a number of additional actions are visible in the menus, the "Development" page accessible from the global menu allows you to disable this again.

Edit Map Styling

Improving the styling of the indoor station maps can be done by editing MapCSS files defining the visual appearance and content of the map, without the need of recompiling the application. For this place a (modified) copy of any of the built-in styles found [here] in the right location.

  • Linux: Place the files in $PREFIX/share/org.kde.kosmindoormap/assets/css or ~/.local/share/org.kde.kosmindoormap/assets/css. If you have a Git checkout of the KPublicTransport repo you can also symlink its src/map/assets folder to one of those places entirely. To revert your modifiations, simply remove the files from those locations again, the built-in styles will then be used again.
  • Flatpak: Copy your modified MapCSS files to ~/.var/app/org.kde.itinerary/data/org.kde.kosmindoormap/assets/css/, symlinks don't work with Flatpak as its isolation system will prevent access to outside data. For removing your modifications again, simply delete those files again.
  • Android: On Android this is a bit more complicated unfortunately, due to the app isolation mechanisms ther. Here you have to use the "Import MapCSS" action in the Development page from the global menu (see above for switching on "Development Mode"). "Reset MapCSS" in the same place allows you to revert your changes.

When Development Mode is enabled, the map page also offers context actions to try different style variants. Toggling between styles can also be useful to trigger a reload of a style on changes.


KDE Itinerary isn't importing data from a document

  • Check About > Version in the global menu, this shows the supported formats the app was built with. This should look as follows, in particular missing support for PDF or barcode decoding is a problem here.
Engine version      : 5.13.40
HTML support        : libxml2
PDF support         : poppler (0.83.0)
iCal support        : kcal
Barcode decoder     : zxing
Phone number decoder: libphonenumber
RSA support         : openssl
Extractor scripts   : 53

The KMail Itinerary plug-in isn't finding anything

  • Is the itinerary plug-in installed? Check $LIBDIR/plugins/messageviewer/bodypartformatter/messageviewer_bodypartformatter_semantic.so. If you are missing this, it's in the kdepim-addons repository, and can probably found similarly named distro packages.
  • Is KItinerary built with Poppler and ZXing? Check the output of `$LIBDIR/libexec/kf5/kitinerary-extractor --capabilities` (19.04 or newer). This should show something like this:
HTML support        : libxml2
PDF support         : poppler
iCal support        : kcal
Barcode decoder     : zxing
Phone number decoder: libphonenumber

KDE Itinerary isn't importing data from my calendar?

Importing data from the calendar is done via the global menu action "Check Calendar".

  • Do you have a supported setup? That is:
    • The app is running on Android (calendar access on Linux is currently not implemented)
    • The events were added to the calendar using the KMail plug-in, from 19.08 or newer.
    • Calendar syncing is done using DavDroid, using a version from after Feb 2019.
    • The CalDav server you use does retain custom properties on iCal events. Nextcloud is known to work.
  • Are the events you try to import in the future, but not further away than half a year? (that's a performance optimization on the import code, if that is getting into the way of too many people we can adjust this).
  • Check About > Version in the global menu, check if this shows "kcal" under "iCal support".

Technically, the calendar importing is relying on a custom iCal property "X-KDE-KITINERARY-RESERVATION" containing the JSON-LD representation of the booking. Additionally, the app currently assumes the UID prefix "KIT-" for faster searches.

How to report bugs?

Use https://bugs.kde.org, product "KDE Itinerary". If the bug involves sensitive documents that you don't want to publish there, you can send those directly to [email protected]


  • KDE Itinerary: the mobile app for showing your itinerary.
  • KItinerary: the library providing the data extraction engine (yes, sub-optimal naming considering the above).
  • KMail Itinerary Plug-in: plugin for KMail running the data extractor on the email you are currently looking at and showing a blue framed box at the top with what it found
  • KItinerary Workbench: diagnostic and development tool for the data extractors.
  • Poppler: PDF parsing library, needed by KItinerary in order to process PDF files.
  • ZXing-C++: Barcode decoding library, needed by KItinerary to decode any form of barcode.

This page was last edited on 18 June 2021, at 21:16. Content is available under Creative Commons License SA 4.0 unless otherwise noted.