Write Exec line for KCMs with appropriate executable

Merged Alexander Lohnau requested to merge work/kcm_systemsettings_no_exec into master

In the newer versions of plasma we want to launch KCMs in systemsettings instead of kcmshell. For this there was a hack in the services runner implemented: https://invent.kde.org/plasma/plasma-workspace/-/blob/master/runners/services/servicerunner.cpp#L456

So we basically do a little bit of checking, replace the exec line with systemsettings/kinfocenter+basename and proceed to launch the service. But the problem is when pinning the entry we still use out Exec line from the services file and not out services runner hack. This leads to the mentioned bug.

When discussing this with Harald we came to the idea that we could use the fallback logic from our services runner inside of KService if no Exec line is given. Then we would internally use kcmshell5/systemsettings5/kinfocenter + basename and create our exec line this way. And as seen in the services runner this works pretty well. But because one user might have a ancient version of plasma and an up to date frameworks version we should not use this as default, but rather as a fallback if no exec line is given. This way we also avoid issues like https://bugs.kde.org/show_bug.cgi?id=426737.

And considering that the Exec line is always program+basename it is redundant to store the information in the Exec line anyways and we can save ourselves some trouble.

Phabricator Task: https://phabricator.kde.org/T13729

Edited by Alexander Lohnau

Merge request reports