diff --git a/kcmkwin/kwinrules/main.cpp b/kcmkwin/kwinrules/main.cpp --- a/kcmkwin/kwinrules/main.cpp +++ b/kcmkwin/kwinrules/main.cpp @@ -248,6 +248,7 @@ extern "C" KWIN_EXPORT int kdemain(int argc, char* argv[]) { + qputenv("QT_QPA_PLATFORM", "xcb"); QApplication app(argc, argv); app.setApplicationDisplayName(i18n("KWin")); app.setApplicationName("kwin_rules_dialog"); diff --git a/useractions.h b/useractions.h --- a/useractions.h +++ b/useractions.h @@ -260,6 +260,8 @@ * The Client for which the menu is shown. **/ QWeakPointer m_client; + QAction *m_rulesOperation = nullptr; + QAction *m_applicationRulesOperation = nullptr; }; class ShortcutDialog diff --git a/useractions.cpp b/useractions.cpp --- a/useractions.cpp +++ b/useractions.cpp @@ -40,6 +40,7 @@ #include "effects.h" #include "platform.h" #include "screens.h" +#include "shell_client.h" #include "virtualdesktops.h" #include "scripting/scripting.h" @@ -318,10 +319,12 @@ QAction *action = advancedMenu->addAction(i18n("Special &Window Settings...")); action->setIcon(QIcon::fromTheme(QStringLiteral("preferences-system-windows-actions"))); action->setData(Options::WindowRulesOp); + m_rulesOperation = action; action = advancedMenu->addAction(i18n("S&pecial Application Settings...")); action->setIcon(QIcon::fromTheme(QStringLiteral("preferences-system-windows-actions"))); action->setData(Options::ApplicationRulesOp); + m_applicationRulesOperation = action; if (!kwinApp()->config()->isImmutable() && !KAuthorized::authorizeControlModules(configModules(true)).isEmpty()) { advancedMenu->addSeparator(); @@ -465,6 +468,15 @@ action->setText(i18n("&Extensions")); } + // disable rules for Wayland windows - dialog is X11 only + if (qobject_cast(m_client.data())) { + m_rulesOperation->setEnabled(false); + m_applicationRulesOperation->setEnabled(false); + } else { + m_rulesOperation->setEnabled(true); + m_applicationRulesOperation->setEnabled(true); + } + showHideActivityMenu(); }