diff --git a/kcmkwin/kwindesktop/CMakeLists.txt b/kcmkwin/kwindesktop/CMakeLists.txt
index 06ebd993b1..77572bee73 100644
--- a/kcmkwin/kwindesktop/CMakeLists.txt
+++ b/kcmkwin/kwindesktop/CMakeLists.txt
@@ -18,6 +18,7 @@ target_link_libraries(kcm_kwindesktop
KF5::Completion
KF5::GlobalAccel
KF5::I18n
+ KF5::Package
KF5::WindowSystem
KF5::XmlGui
${X11_LIBRARIES}
diff --git a/kcmkwin/kwindesktop/main.cpp b/kcmkwin/kwindesktop/main.cpp
index 1b90300e7c..31b8e2edf0 100644
--- a/kcmkwin/kwindesktop/main.cpp
+++ b/kcmkwin/kwindesktop/main.cpp
@@ -33,6 +33,8 @@ along with this program. If not, see .
#include
#include
#include
+#include
+#include
#include
#include
#include
@@ -570,12 +572,17 @@ void KWinDesktopConfig::slotAboutEffectClicked()
delete aboutPlugin;
};
if (fromKService) {
- KServiceTypeTrader* trader = KServiceTypeTrader::self();
- KService::List services;
- services = trader->query("KWin/Effect", "[X-KDE-PluginInfo-Name] == 'kwin4_effect_" + effect + '\'');
- if (services.isEmpty())
+ const QString pluginId = QStringLiteral("kwin4_effect_%1").arg(effect);
+ const auto effectsMetaData = KPackage::PackageLoader::self()->findPackages(
+ QStringLiteral("KWin/Effect"),
+ QStringLiteral("kwin/effects/"),
+ [&pluginId](const KPluginMetaData &meta) {
+ return meta.pluginId() == pluginId;
+ });
+ if (effectsMetaData.isEmpty()) {
return;
- KPluginInfo pluginInfo(services.first());
+ }
+ KPluginInfo pluginInfo(effectsMetaData.first());
const QString name = pluginInfo.name();
const QString comment = pluginInfo.comment();