diff --git a/runners/services/servicerunner.cpp b/runners/services/servicerunner.cpp --- a/runners/services/servicerunner.cpp +++ b/runners/services/servicerunner.cpp @@ -458,6 +458,17 @@ const QString actionName = QUrlQuery(dataUrl).queryItemValue(QStringLiteral("action")); if (actionName.isEmpty()) { + // We want to load kcms directly with systemsettings, + // but we can't completely replace kcmshell with systemsettings + // as we need to be able to load kcms without plasma and we can't + // implement all kcmshell features into systemsettings + if (service->serviceTypes().contains(QLatin1String("KCModule"))) { + if (service->parentApp() == QStringLiteral("kinfocenter")) { + service->setExec(QStringLiteral("kinfocenter ") + service->desktopEntryName()); + } else { + service->setExec(QStringLiteral("systemsettings5 ") + service->desktopEntryName()); + } + } job = new KIO::ApplicationLauncherJob(service); } else { const auto actions = service->actions();