desktop
Contents
About
I personally enjoy using KDE Plasma.
However there are some problems with this desktop environment, too. :-D
Kmail
Kmail relies on the akonadi backend.
Akonadi Console
Akonadi-Console may help you to get some insight, using the debuggin or logging.
Be careful.
User denied access to password
System-Preferences > KDE-Wallet
Tab "Access Control"
Check Ask, when Application request access to passwort-manager.
Sorry for the bad translation, but the hint should be useful, anyway.
Could not create collection
Crashes with message
1 Could not create collection trash, resourceId 3
There is a hint in
~/.local/share/akonadi/akonadiserver.error
1 DATABASE ERROR:
2 Error code: "1062"
3 DB error: "Duplicate entry '83-INBOX' for key 'CollectionTable_parentAndNameIndex'"
4 Error text: "Duplicate entry '83-INBOX' for key 'CollectionTable_parentAndNameIndex' QMYSQL3: Der Befehl konnte nicht ausgeführt werden"
5 Query: "INSERT INTO CollectionTable (remoteId, remoteRevision, name, parentId, resourceId, enabled, syncPref, displayPref, indexPref, cachePolicyInherit, cachePolicyCheckInterval, cachePolicyCacheTimeout, cachePolicySyncOnDemand, cachePolicyLocalParts, isVirtual) VALUES (:0, :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14)"
6 Error during insertion into table "CollectionTable" "Duplicate entry '83-INBOX' for key 'CollectionTable_parentAndNameIndex' QMYSQL3: Der Befehl konnte nicht ausgeführt werden"
Let's get rid of this collision.
1 # mysql --socket=/run/user/1000/akonadi/mysql.socket
2 MariaDB [(none)]> use akonadi
3 Reading table information for completion of table and column names
4 You can turn off this feature to get a quicker startup with -A
5
6 Database changed
7 MariaDB [akonadi]> delete from collectiontable where name = "trash" and resourceId = 3;
8 Query OK, 1 row affected (0.003 sec)
Kmail starts again.
Could not start database server
Check akonadi server status
1 akonadictl status
2 Akonadi Control: stopped
3 Akonadi Server: stopped
4 Akonadi Server Search Support: available (Remote Search)
5 Available Agent Types: akonadi_akonotes_resource, akonadi_archivemail_agent, akonadi_birthdays_resource, akonadi_contacts_resource, akonadi_davgroupware_resource, akonadi_ews_resource, akonadi_ewsmta_resource, akonadi_followupreminder_agent, akonadi_google_resource, akonadi_ical_resource, akonadi_icaldir_resource, akonadi_imap_resource, akonadi_indexing_agent, akonadi_kolab_resource, akonadi_maildir_resource, akonadi_maildispatcher_agent, akonadi_mailfilter_agent, akonadi_mailmerge_agent, akonadi_mbox_resource, akonadi_migration_agent, akonadi_mixedmaildir_resource, akonadi_newmailnotifier_agent, akonadi_notes_agent, akonadi_notes_resource, akonadi_openxchange_resource, akonadi_pop3_resource, akonadi_sendlater_agent, akonadi_tomboynotes_resource, akonadi_unifiedmailbox_agent, akonadi_vcard_resource, akonadi_vcarddir_resource
Crashes with message
1 akonadictl start
2 org.kde.pim.akonadictl: Starting Akonadi Server...
3 org.kde.pim.akonadictl: done.
4 Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
5 tobias@libertas ~ % org.kde.pim.akonadiserver: Starting up the Akonadi Server...
6 (QFileInfo(/usr/lib/postgresql/15))
7 org.kde.pim.akonadiserver: Could not start database server!
8 org.kde.pim.akonadiserver: executable: "/usr/lib/postgresql/14/bin/pg_ctl"
9 org.kde.pim.akonadiserver: arguments: ("start", "-w", "--timeout=10", "--pgdata=/home/tobias/.local/share/akonadi/db_data", "-o \"-k/run/user/1000/akonadi\" -h ''")
10 org.kde.pim.akonadiserver: process error: "execvp: No such file or directory"
11 org.kde.pim.akonadiserver: Shutting down AkonadiServer...
12 org.kde.pim.akonadicontrol: Application '/usr/bin/akonadiserver' exited normally...
The PostgreSQL server binary is not available anymore, because of a system-wide database upgrade.
Please see:
KDE UserBase Wiki - Akonadi/Postgres update
Create a backup and Move the old postgresql 14 db_data to the side.
Identify the latest postgres version and initialize a new database (without changing the locale).
The old postgres binaries are needed to upgrade the database. If you are missing the binaries in the correct version please checkout
PostgreSQL#Installation
Check if upgrade is safe
1 LANG=C "$PG_LIB/$PG_VERSION_LATEST/bin/pg_upgrade" \
2 -b "$PG_LIB/$PG_VERSION_OLD/bin" \
3 -B "$PG_LIB/$PG_VERSION_LATEST/bin" \
4 -d "$HOME_AKONADI/db_data_old" \
5 -D "$HOME_AKONADI/db_data" \
6 --check
7 Performing Consistency Checks
8 -----------------------------
9 Checking cluster versions ok
10 Checking database user is the install user ok
11 Checking database connection settings ok
12 Checking for prepared transactions ok
13 Checking for system-defined composite types in user tables ok
14 Checking for reg* data types in user tables ok
15 Checking for contrib/isn with bigint-passing mismatch ok
16 Checking for presence of required libraries ok
17 Checking database user is the install user ok
18 Checking for prepared transactions ok
19 Checking for new cluster tablespace directories ok
20
21 *Clusters are compatible*
Upgrade the database
1 LANG=C "$PG_LIB/$PG_VERSION_LATEST/bin/pg_upgrade" \
2 -b "$PG_LIB/$PG_VERSION_OLD/bin" \
3 -B "$PG_LIB/$PG_VERSION_LATEST/bin" \
4 -d "$HOME_AKONADI/db_data_old" \
5 -D "$HOME_AKONADI/db_data"
6 Performing Consistency Checks
7 -----------------------------
8 Checking cluster versions ok
9 Checking database user is the install user ok
10 Checking database connection settings ok
11 Checking for prepared transactions ok
12 Checking for system-defined composite types in user tables ok
13 Checking for reg* data types in user tables ok
14 Checking for contrib/isn with bigint-passing mismatch ok
15 Creating dump of global objects ok
16 Creating dump of database schemas
17 ok
18 Checking for presence of required libraries ok
19 Checking database user is the install user ok
20 Checking for prepared transactions ok
21 Checking for new cluster tablespace directories ok
22
23 If pg_upgrade fails after this point, you must re-initdb the
24 new cluster before continuing.
25
26 Performing Upgrade
27 ------------------
28 Analyzing all rows in the new cluster ok
29 Freezing all rows in the new cluster ok
30 Deleting files from new pg_xact ok
31 Copying old pg_xact to new server ok
32 Setting oldest XID for new cluster ok
33 Setting next transaction ID and epoch for new cluster ok
34 Deleting files from new pg_multixact/offsets ok
35 Copying old pg_multixact/offsets to new server ok
36 Deleting files from new pg_multixact/members ok
37 Copying old pg_multixact/members to new server ok
38 Setting next multixact ID and offset for new cluster ok
39 Resetting WAL archives ok
40 Setting frozenxid and minmxid counters in new cluster ok
41 Restoring global objects in the new cluster ok
42 Restoring database schemas in the new cluster
43 ok
44 Copying user relation files
45 ok
46 Setting next OID for new cluster ok
47 Sync data directory to disk ok
48 Creating script to delete old cluster ok
49 Checking for extension updates ok
50
51 Upgrade Complete
52 ----------------
53 Optimizer statistics are not transferred by pg_upgrade.
54 Once you start the new server, consider running:
55 /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages
56
57 Running this script will delete the old cluster's data files:
58 ./delete_old_cluster.sh
Check the akonadi config for the correct paths
~/.config/akonadi/akonadiserverrc
1 [Debug]
2 Tracer=null
3
4 [%General]
5 %23Driver=QMYSQL
6 Driver=QPSQL
7
8 [QMYSQL]
9 Host=
10 Name=akonadi
11 Options="UNIX_SOCKET=/run/user/1000/akonadi/mysql.socket"
12 ServerPath=/usr/sbin/mysqld
13 StartServer=true
14
15 [QPSQL]
16 Host=/run/user/1000/akonadi
17 InitDbPath=/usr/lib/postgresql/15/bin/initdb
18 Name=akonadi
19 Options=
20 ServerPath=/usr/lib/postgresql/15/bin/pg_ctl
21 StartServer=true
Start akonadi-server akonadictl start
1 org.kde.pim.akonadictl: Starting Akonadi Server...
2 org.kde.pim.akonadictl: done.
3 Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
4 org.kde.pim.akonadiserver: Starting up the Akonadi Server...
5 (QFileInfo(/usr/lib/postgresql/14), QFileInfo(/usr/lib/postgresql/15))
6 org.kde.pim.akonadiserver: Running DB initializer
7 org.kde.pim.akonadiserver: DB initializer done
8 Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
9 org.kde.pim.akonadicontrol: Akonadi server is now operational.
10 …
Check status
akonadictl status
1 Akonadi Control: running
2 Akonadi Server: running
3 Akonadi Server Search Support: available (Remote Search)
4 Available Agent Types: akonadi_akonotes_resource, akonadi_archivemail_agent, akonadi_birthdays_resource, akonadi_contacts_resource, akonadi_davgroupware_resource, akonadi_ews_resource, akonadi_ewsmta_resource, akonadi_followupreminder_agent, akonadi_google_resource, akonadi_ical_resource, akonadi_icaldir_resource, akonadi_imap_resource, akonadi_indexing_agent, akonadi_kolab_resource, akonadi_maildir_resource, akonadi_maildispatcher_agent, akonadi_mailfilter_agent, akonadi_mailmerge_agent, akonadi_mbox_resource, akonadi_migration_agent, akonadi_mixedmaildir_resource, akonadi_newmailnotifier_agent, akonadi_notes_agent, akonadi_notes_resource, akonadi_openxchange_resource, akonadi_pop3_resource, akonadi_sendlater_agent, akonadi_tomboynotes_resource, akonadi_unifiedmailbox_agent, akonadi_vcard_resource, akonadi_vcarddir_resource
Check if everything works!
Cleanup
1 ./delete_old_cluster.sh
Vacuum the database
1 /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages --host=/run/user/1000/akonadi
2 vacuumdb: bearbeite Datenbank »akonadi«: Erzeuge minimale Optimierer-Statistiken (1 Ziel)
3 vacuumdb: bearbeite Datenbank »postgres«: Erzeuge minimale Optimierer-Statistiken (1 Ziel)
4 vacuumdb: bearbeite Datenbank »template1«: Erzeuge minimale Optimierer-Statistiken (1 Ziel)
5 vacuumdb: bearbeite Datenbank »akonadi«: Erzeuge mittlere Optimierer-Statistiken (10 Ziele)
6 vacuumdb: bearbeite Datenbank »postgres«: Erzeuge mittlere Optimierer-Statistiken (10 Ziele)
7 vacuumdb: bearbeite Datenbank »template1«: Erzeuge mittlere Optimierer-Statistiken (10 Ziele)
8 vacuumdb: bearbeite Datenbank »akonadi«: Erzeuge volle Optimierer-Statistiken
9 vacuumdb: bearbeite Datenbank »postgres«: Erzeuge volle Optimierer-Statistiken
10 vacuumdb: bearbeite Datenbank »template1«: Erzeuge volle Optimierer-Statistiken
Running again. Mehhh …
Environment variables
Can be defined in
~/.config/plasma-workspace/envCreate a shell script that redefines the variable PATH
~/.config/plasma-workspace/env/path.sh
1 export PATH="$HOME/.local/bin:$PATH"Note: ~/.local/bin is an important directory to be added, because user installed executables are located (stored or linked) there. Examples: pipx, stack, …
Desktop files
Should be located in
~/.local/share/applicationsShould not be executable
find ~/.local/share/applications -type f -exec chmod a-x {} \;
Trouble shooting
KDE Plasma can be a nightmare.
Disable plasmashell plugins
Create a backup of file
~/.config/plasma-org.kde.plasma.desktop-appletsrc
Search and eliminate the conflicting plugins. I my case I had to remove the following statements from enabledCalendarPlugins
/usr/lib/x86_64-linux-gnu/qt5/plugins/plasmacalendarplugins/alternatecalendar.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/plasmacalendarplugins/astronomicalevents.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/plasmacalendarplugins/holidaysevents.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/plasmacalendarplugins/pimevents.so
alternatecalendar,astronomicalevents,holidaysevents,pimevents
plasmashell configuration
Create a backup of file
~/.config/plasmashellrc
There was also a segmentation fault in pimevents, where I had to remove from
~/.config/plasmashellrc