Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kwindowsystem for openSUSE:Factory 
checked in at 2022-02-24 18:19:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwindowsystem (Old)
 and      /work/SRC/openSUSE:Factory/.kwindowsystem.new.1958 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwindowsystem"

Thu Feb 24 18:19:57 2022 rev:103 rq:954285 version:5.91.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kwindowsystem/kwindowsystem.changes      
2022-01-11 21:19:43.388977968 +0100
+++ /work/SRC/openSUSE:Factory/.kwindowsystem.new.1958/kwindowsystem.changes    
2022-02-24 18:22:25.938674668 +0100
@@ -1,0 +2,18 @@
+Sun Feb  6 10:17:16 UTC 2022 - Christophe Giboudeaux <christo...@krop.fr>
+
+- Update to 5.91.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/5/5.91.0
+- Changes since 5.90.0:
+  * Check executables exist in PATH before passing them to QProcess
+  * fix typo
+  * install plugins in kf<version>
+  * Fix doxygen docs for requestXdgActivationToken
+  * Add CI qt6 support
+  * Avoid XKeycodeToKeysym in KKeyServer::initializeMods (kde#426684)
+  * Remove placeholder wayland platform plugin
+  * [kwindowinfo] Add support for reading _GTK_APPLICATION_ID
+  * Add KWindowSystem::updateStartupId(QWindow *window)
+
+-------------------------------------------------------------------

Old:
----
  kwindowsystem-5.90.0.tar.xz
  kwindowsystem-5.90.0.tar.xz.sig

New:
----
  kwindowsystem-5.91.0.tar.xz
  kwindowsystem-5.91.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kwindowsystem.spec ++++++
--- /var/tmp/diff_new_pack.YOrwKP/_old  2022-02-24 18:22:26.494674520 +0100
+++ /var/tmp/diff_new_pack.YOrwKP/_new  2022-02-24 18:22:26.498674519 +0100
@@ -17,14 +17,14 @@
 
 
 %define lname   libKF5WindowSystem5
-%define _tar_path 5.90
+%define _tar_path 5.91
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
 %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 %bcond_without released
 Name:           kwindowsystem
-Version:        5.90.0
+Version:        5.91.0
 Release:        0
 Summary:        KDE Access to window manager
 License:        LGPL-2.1-or-later
@@ -120,7 +120,6 @@
 %{_kf5_debugdir}/kwindowsystem.categories
 %{_kf5_debugdir}/*.renamecategories
 %{_kf5_libdir}/libKF5WindowSystem.so.*
-%{_kf5_plugindir}/kf5/kwindowsystem/KF5WindowSystemWaylandPlugin.so
 %{_kf5_plugindir}/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so
 
 %files devel


++++++ kwindowsystem-5.90.0.tar.xz -> kwindowsystem-5.91.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/.gitlab-ci.yml 
new/kwindowsystem-5.91.0/.gitlab-ci.yml
--- old/kwindowsystem-5.90.0/.gitlab-ci.yml     2022-01-01 13:37:48.000000000 
+0100
+++ new/kwindowsystem-5.91.0/.gitlab-ci.yml     2022-02-05 22:30:50.000000000 
+0100
@@ -5,3 +5,4 @@
   - 
https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
   - 
https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/android.yml
   - 
https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml
+  - 
https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-qt6.yml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/CMakeLists.txt 
new/kwindowsystem-5.91.0/CMakeLists.txt
--- old/kwindowsystem-5.90.0/CMakeLists.txt     2022-01-01 13:37:48.000000000 
+0100
+++ new/kwindowsystem-5.91.0/CMakeLists.txt     2022-02-05 22:30:50.000000000 
+0100
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.16)
 
-set(KF_VERSION "5.90.0") # handled by release scripts
+set(KF_VERSION "5.91.0") # handled by release scripts
 project(KWindowSystem VERSION ${KF_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.90.0  NO_MODULE)
+find_package(ECM 5.91.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL "https://commits.kde.org/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -117,7 +117,7 @@
 
 
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kwindowsystem_version.h
-        DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF} COMPONENT Devel )
+        DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KWindowSystem COMPONENT Devel 
)
 
 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/autotests/kwindowsystem_platform_wayland_test.cpp 
new/kwindowsystem-5.91.0/autotests/kwindowsystem_platform_wayland_test.cpp
--- old/kwindowsystem-5.90.0/autotests/kwindowsystem_platform_wayland_test.cpp  
2022-01-01 13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/autotests/kwindowsystem_platform_wayland_test.cpp  
2022-02-05 22:30:50.000000000 +0100
@@ -7,6 +7,7 @@
 #include <QFileSystemWatcher>
 #include <QProcess>
 #include <QSignalSpy>
+#include <QStandardPaths>
 #include <QTest>
 
 class TestKWindowsystemPlatformWayland : public QObject
@@ -24,9 +25,12 @@
 
 void TestKWindowsystemPlatformWayland::initTestCase()
 {
+    const QString westonExec = 
QStandardPaths::findExecutable(QStringLiteral("weston"));
+    QVERIFY(!westonExec.isEmpty());
+
     // start Weston
     m_westonProcess.reset(new QProcess);
-    m_westonProcess->setProgram(QStringLiteral("weston"));
+    m_westonProcess->setProgram(westonExec);
     
m_westonProcess->setArguments(QStringList({QStringLiteral("--socket=kwindowsystem-platform-wayland-0"),
 QStringLiteral("--backend=headless-backend.so")}));
     m_westonProcess->start();
     if (!m_westonProcess->waitForStarted()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/autotests/netrootinfotestwm.cpp 
new/kwindowsystem-5.91.0/autotests/netrootinfotestwm.cpp
--- old/kwindowsystem-5.90.0/autotests/netrootinfotestwm.cpp    2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/autotests/netrootinfotestwm.cpp    2022-02-05 
22:30:50.000000000 +0100
@@ -5,9 +5,12 @@
 */
 
 #include "nettesthelper.h"
-#include <QProcess>
 #include <netwm.h>
+
+#include <QProcess>
+#include <QStandardPaths>
 #include <qtest_widgets.h>
+
 // system
 #include <unistd.h>
 
@@ -82,11 +85,14 @@
     m_connection = nullptr;
     m_supportWindow = XCB_WINDOW_NONE;
     // start Xvfb
+    const QString xfvbExec = 
QStandardPaths::findExecutable(QStringLiteral("Xvfb"));
+    QVERIFY(!xfvbExec.isEmpty());
+
     m_xvfb.reset(new QProcess);
     // use pipe to pass fd to Xvfb to get back the display id
     int pipeFds[2];
     QVERIFY(pipe(pipeFds) == 0);
-    m_xvfb->start(QStringLiteral("Xvfb"), 
QStringList{QStringLiteral("-displayfd"), QString::number(pipeFds[1])});
+    m_xvfb->start(xfvbExec, QStringList{QStringLiteral("-displayfd"), 
QString::number(pipeFds[1])});
     QVERIFY(m_xvfb->waitForStarted());
     QCOMPARE(m_xvfb->state(), QProcess::Running);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/autotests/netwininfotestclient.cpp 
new/kwindowsystem-5.91.0/autotests/netwininfotestclient.cpp
--- old/kwindowsystem-5.90.0/autotests/netwininfotestclient.cpp 2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/autotests/netwininfotestclient.cpp 2022-02-05 
22:30:50.000000000 +0100
@@ -5,9 +5,12 @@
 */
 
 #include "nettesthelper.h"
-#include <QProcess>
 #include <netwm.h>
+
+#include <QProcess>
+#include <QStandardPaths>
 #include <qtest_widgets.h>
+
 // system
 #include <unistd.h>
 
@@ -123,6 +126,10 @@
     m_connection = nullptr;
     m_rootWindow = XCB_WINDOW_NONE;
     m_testWindow = XCB_WINDOW_NONE;
+
+    const QString xfvbExec = 
QStandardPaths::findExecutable(QStringLiteral("Xvfb"));
+    QVERIFY(!xfvbExec.isEmpty());
+
     // start Xvfb
     m_xvfb.reset(new QProcess);
     // use pipe to pass fd to Xvfb to get back the display id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/autotests/netwininfotestwm.cpp 
new/kwindowsystem-5.91.0/autotests/netwininfotestwm.cpp
--- old/kwindowsystem-5.90.0/autotests/netwininfotestwm.cpp     2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/autotests/netwininfotestwm.cpp     2022-02-05 
22:30:50.000000000 +0100
@@ -5,9 +5,12 @@
 */
 
 #include "nettesthelper.h"
-#include <QProcess>
 #include <netwm.h>
+
+#include <QProcess>
+#include <QStandardPaths>
 #include <qtest_widgets.h>
+
 // system
 #include <unistd.h>
 
@@ -105,6 +108,10 @@
     m_connection = nullptr;
     m_rootWindow = XCB_WINDOW_NONE;
     m_testWindow = XCB_WINDOW_NONE;
+
+    const QString xfvbExec = 
QStandardPaths::findExecutable(QStringLiteral("Xvfb"));
+    QVERIFY(!xfvbExec.isEmpty());
+
     // start Xvfb
     m_xvfb.reset(new QProcess);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/po/nb/kwindowsystem5_qt.po 
new/kwindowsystem-5.91.0/po/nb/kwindowsystem5_qt.po
--- old/kwindowsystem-5.90.0/po/nb/kwindowsystem5_qt.po 2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/po/nb/kwindowsystem5_qt.po 2022-02-05 
22:30:50.000000000 +0100
@@ -27,7 +27,7 @@
 "X-Qt-Contexts: true\n"
 
 #: platforms/osx/kwindowsystem.cpp:571 platforms/windows/kwindowsystem.cpp:626
-#: platforms/xcb/kwindowsystem.cpp:995
+#: platforms/xcb/kwindowsystem.cpp:1002
 #, qt-format
 msgctxt "KWindowSystem|"
 msgid "Desktop %1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/po/nn/kwindowsystem5_qt.po 
new/kwindowsystem-5.91.0/po/nn/kwindowsystem5_qt.po
--- old/kwindowsystem-5.90.0/po/nn/kwindowsystem5_qt.po 2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/po/nn/kwindowsystem5_qt.po 2022-02-05 
22:30:50.000000000 +0100
@@ -24,7 +24,7 @@
 "X-Qt-Contexts: true\n"
 
 #: platforms/osx/kwindowsystem.cpp:571 platforms/windows/kwindowsystem.cpp:626
-#: platforms/xcb/kwindowsystem.cpp:995
+#: platforms/xcb/kwindowsystem.cpp:1002
 #, qt-format
 msgctxt "KWindowSystem|"
 msgid "Desktop %1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/po/se/kwindowsystem5_qt.po 
new/kwindowsystem-5.91.0/po/se/kwindowsystem5_qt.po
--- old/kwindowsystem-5.90.0/po/se/kwindowsystem5_qt.po 2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/po/se/kwindowsystem5_qt.po 2022-02-05 
22:30:50.000000000 +0100
@@ -21,7 +21,7 @@
 "X-Qt-Contexts: true\n"
 
 #: platforms/osx/kwindowsystem.cpp:571 platforms/windows/kwindowsystem.cpp:626
-#: platforms/xcb/kwindowsystem.cpp:995
+#: platforms/xcb/kwindowsystem.cpp:1002
 #, fuzzy, qt-format
 msgctxt "KWindowSystem|"
 msgid "Desktop %1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/po/zh_CN/kwindowsystem5_qt.po 
new/kwindowsystem-5.91.0/po/zh_CN/kwindowsystem5_qt.po
--- old/kwindowsystem-5.90.0/po/zh_CN/kwindowsystem5_qt.po      2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/po/zh_CN/kwindowsystem5_qt.po      2022-02-05 
22:30:50.000000000 +0100
@@ -13,7 +13,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: kdeorg\n"
-"PO-Revision-Date: 2021-12-22 14:06\n"
+"PO-Revision-Date: 2022-01-08 15:23\n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/CMakeLists.txt 
new/kwindowsystem-5.91.0/src/CMakeLists.txt
--- old/kwindowsystem-5.90.0/src/CMakeLists.txt 2022-01-01 13:37:48.000000000 
+0100
+++ new/kwindowsystem-5.91.0/src/CMakeLists.txt 2022-02-05 22:30:50.000000000 
+0100
@@ -14,7 +14,6 @@
     kwindowinfo.cpp
     kwindowshadow.cpp
     kwindowsystem.cpp
-    platforms/wayland/kwindowsystem.cpp
     pluginwrapper.cpp
     kwindowsystemplugininterface.cpp
     )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/config-kwindowsystem.h.cmake 
new/kwindowsystem-5.91.0/src/config-kwindowsystem.h.cmake
--- old/kwindowsystem-5.90.0/src/config-kwindowsystem.h.cmake   2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/config-kwindowsystem.h.cmake   2022-02-05 
22:30:50.000000000 +0100
@@ -7,4 +7,4 @@
 #cmakedefine01 KWINDOWSYSTEM_HAVE_XFIXES
 
 /* Path to xcb plugin */
-#define XCB_PLUGIN_PATH 
"${KDE_INSTALL_FULL_PLUGINDIR}/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so"
+#define XCB_PLUGIN_PATH 
"${KDE_INSTALL_FULL_PLUGINDIR}/kf${QT_MAJOR_VERSION}/kwindowsystem/KF5WindowSystemX11Plugin.so"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/kstartupinfo.cpp 
new/kwindowsystem-5.91.0/src/kstartupinfo.cpp
--- old/kwindowsystem-5.90.0/src/kstartupinfo.cpp       2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/kstartupinfo.cpp       2022-02-05 
22:30:50.000000000 +0100
@@ -62,8 +62,9 @@
 #include <kxmessages.h>
 #endif
 
+#if KWINDOWSYSTEM_HAVE_X11
 static const char NET_STARTUP_MSG[] = "_NET_STARTUP_INFO";
-static const char NET_STARTUP_WINDOW[] = "_NET_STARTUP_ID";
+#endif
 // DESKTOP_STARTUP_ID is used also in kinit/wrapper.c ,
 // kdesu in both kdelibs and kdebase and who knows where else
 static const char NET_STARTUP_ENV[] = "DESKTOP_STARTUP_ID";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/kwindowinfo.cpp 
new/kwindowsystem-5.91.0/src/kwindowinfo.cpp
--- old/kwindowsystem-5.90.0/src/kwindowinfo.cpp        2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/kwindowinfo.cpp        2022-02-05 
22:30:50.000000000 +0100
@@ -24,6 +24,9 @@
 
KWindowInfoPrivateDesktopFileNameExtension::KWindowInfoPrivateDesktopFileNameExtension()
 = default;
 
KWindowInfoPrivateDesktopFileNameExtension::~KWindowInfoPrivateDesktopFileNameExtension()
 = default;
 
+KWindowInfoPrivateGtkApplicationIdExtension::KWindowInfoPrivateGtkApplicationIdExtension()
 = default;
+KWindowInfoPrivateGtkApplicationIdExtension::~KWindowInfoPrivateGtkApplicationIdExtension()
 = default;
+
 KWindowInfoPrivatePidExtension::KWindowInfoPrivatePidExtension() = default;
 KWindowInfoPrivatePidExtension::~KWindowInfoPrivatePidExtension() = default;
 
@@ -38,6 +41,7 @@
     NET::Properties properties;
     NET::Properties2 properties2;
     KWindowInfoPrivateDesktopFileNameExtension *desktopFileNameExtension;
+    KWindowInfoPrivateGtkApplicationIdExtension *gtkApplicationIdExtension;
     KWindowInfoPrivatePidExtension *pidExtension;
     KWindowInfoPrivateAppMenuExtension *appMenuExtension;
 };
@@ -47,6 +51,7 @@
     , properties(properties)
     , properties2(properties2)
     , desktopFileNameExtension(nullptr)
+    , gtkApplicationIdExtension(nullptr)
     , pidExtension(nullptr)
     , appMenuExtension(nullptr)
 {
@@ -76,6 +81,16 @@
     d->desktopFileNameExtension = extension;
 }
 
+KWindowInfoPrivateGtkApplicationIdExtension 
*KWindowInfoPrivate::gtkApplicationIdExtension() const
+{
+    return d->gtkApplicationIdExtension;
+}
+
+void 
KWindowInfoPrivate::installGtkApplicationIdExtension(KWindowInfoPrivateGtkApplicationIdExtension
 *extension)
+{
+    d->gtkApplicationIdExtension = extension;
+}
+
 KWindowInfoPrivatePidExtension *KWindowInfoPrivate::pidExtension() const
 {
     return d->pidExtension;
@@ -409,6 +424,14 @@
     }
     return QByteArray();
 }
+
+QByteArray KWindowInfo::gtkApplicationId() const
+{
+    if (auto extension = d->gtkApplicationIdExtension()) {
+        return extension->gtkApplicationId();
+    }
+    return QByteArray();
+}
 
 QByteArray KWindowInfo::applicationMenuServiceName() const
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/kwindowinfo.h 
new/kwindowsystem-5.91.0/src/kwindowinfo.h
--- old/kwindowsystem-5.90.0/src/kwindowinfo.h  2022-01-01 13:37:48.000000000 
+0100
+++ new/kwindowsystem-5.91.0/src/kwindowinfo.h  2022-02-05 22:30:50.000000000 
+0100
@@ -557,6 +557,25 @@
     QByteArray desktopFileName() const;
 
     /**
+     * Returns the GTK application id of the window if present.
+     *
+     * This is comparable to desktopFileName.
+     *
+     * Requires NET::WM2GTKApplicationId passed as properties2 parameter to 
the constructor.
+     *
+     * @code
+     * QWidget *window = new QWidget(nullptr);
+     * window->show();
+     * KWindowInfo info(window->winId(), 0, NET::WM2GTKApplicationId);
+     * if (info.valid())
+     *     info.gtkApplicationId();
+     * @endcode
+     *
+     * @since 5.91
+     **/
+    QByteArray gtkApplicationId() const;
+
+    /**
      * Returns the process ID of the window's application if present.
      *
      * Requires NET::WMPid passed as properties parameter to the constructor.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/kwindowinfo_p.h 
new/kwindowsystem-5.91.0/src/kwindowinfo_p.h
--- old/kwindowsystem-5.90.0/src/kwindowinfo_p.h        2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/kwindowinfo_p.h        2022-02-05 
22:30:50.000000000 +0100
@@ -18,6 +18,7 @@
 #include <QWidgetList> //For WId
 
 class KWindowInfoPrivateDesktopFileNameExtension;
+class KWindowInfoPrivateGtkApplicationIdExtension;
 class KWindowInfoPrivatePidExtension;
 class KWindowInfoPrivateAppMenuExtension;
 
@@ -55,6 +56,7 @@
     virtual bool actionSupported(NET::Action action) const = 0;
 
     KWindowInfoPrivateDesktopFileNameExtension *desktopFileNameExtension() 
const;
+    KWindowInfoPrivateGtkApplicationIdExtension *gtkApplicationIdExtension() 
const;
     KWindowInfoPrivatePidExtension *pidExtension() const;
     KWindowInfoPrivateAppMenuExtension *appMenuExtension() const;
 
@@ -64,6 +66,7 @@
     KWindowInfoPrivate(WId window, NET::Properties properties, 
NET::Properties2 properties2);
 
     void 
installDesktopFileNameExtension(KWindowInfoPrivateDesktopFileNameExtension 
*extension);
+    void 
installGtkApplicationIdExtension(KWindowInfoPrivateGtkApplicationIdExtension 
*extension);
     void installPidExtension(KWindowInfoPrivatePidExtension *extension);
     void installAppMenuExtension(KWindowInfoPrivateAppMenuExtension 
*extension);
 
@@ -83,6 +86,17 @@
     explicit KWindowInfoPrivateDesktopFileNameExtension();
 };
 
+class KWINDOWSYSTEM_EXPORT KWindowInfoPrivateGtkApplicationIdExtension
+{
+public:
+    virtual ~KWindowInfoPrivateGtkApplicationIdExtension();
+
+    virtual QByteArray gtkApplicationId() const = 0;
+
+protected:
+    explicit KWindowInfoPrivateGtkApplicationIdExtension();
+};
+
 class KWINDOWSYSTEM_EXPORT KWindowInfoPrivatePidExtension
 {
 public:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/kwindowsystem.cpp 
new/kwindowsystem-5.91.0/src/kwindowsystem.cpp
--- old/kwindowsystem-5.90.0/src/kwindowsystem.cpp      2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/kwindowsystem.cpp      2022-02-05 
22:30:50.000000000 +0100
@@ -4,6 +4,7 @@
     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
 */
 #include "kwindowsystem.h"
+#include "kstartupinfo.h"
 #include "kwindowsystem_dummy_p.h"
 #include "kwindowsystemplugininterface_p.h"
 #include "pluginwrapper_p.h"
@@ -19,6 +20,11 @@
 #endif
 #include <QWindow>
 #if KWINDOWSYSTEM_HAVE_X11
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+#include <private/qtx11extras_p.h>
+#else
+#include <QX11Info>
+#endif
 #endif
 
 // QPoint and QSize all have handy / operators which are useful for scaling, 
positions and sizes for high DPI support
@@ -106,7 +112,7 @@
 
 bool KWindowSystemPrivateDummy::compositingActive()
 {
-    return false;
+    return KWindowSystem::isPlatformWayland();
 }
 
 int KWindowSystemPrivateDummy::currentDesktop()
@@ -781,6 +787,30 @@
     return platform() == Platform::Wayland;
 }
 
+void KWindowSystem::updateStartupId(QWindow *window)
+{
+    // clang-format off
+    // TODO: move to a new KWindowSystemPrivate interface
+#if KWINDOWSYSTEM_HAVE_X11
+    if (isPlatformX11()) {
+        const QByteArray startupId = QX11Info::nextStartupId();
+        if (!startupId.isEmpty()) {
+            KStartupInfo::setNewStartupId(window, startupId);
+        }
+    } else
+#else
+    Q_UNUSED(window);
+#endif
+    if (isPlatformWayland()) {
+        const QString token = qEnvironmentVariable("XDG_ACTIVATION_TOKEN");
+        if (!token.isEmpty()) {
+            setCurrentXdgActivationToken(token);
+            qunsetenv("XDG_ACTIVATION_TOKEN");
+        }
+    }
+    // clang-format on
+}
+
 void KWindowSystem::requestXdgActivationToken(QWindow *win, uint32_t serial, 
const QString &app_id)
 {
     Q_D(KWindowSystem);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/kwindowsystem.h 
new/kwindowsystem-5.91.0/src/kwindowsystem.h
--- old/kwindowsystem-5.90.0/src/kwindowsystem.h        2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/kwindowsystem.h        2022-02-05 
22:30:50.000000000 +0100
@@ -640,6 +640,25 @@
     static QPoint constrainViewportRelativePosition(const QPoint &pos);
 
     /**
+     * Updates the platform-specific startup id, if any.
+     *
+     * This method is to be called when a running application instance
+     * is reused for handling the request to start this application.
+     * A typical use would be in the handler of the KDBusService activation 
signal.
+     *
+     * For X11, this updates the id for the Startup Notification protocol,
+     * taking the id from QX11Info::nextStartupId(), if not empty.
+     * For Wayland, this updates the token for the XDG Activation protocol,
+     * taking the token from the "XDG_ACTIVATION_TOKEN" environment variable
+     * and then unsetting it, if not empty.
+     *
+     * @param window the main window (needed by X11 platform)
+     *
+     * @since 5.91
+     */
+    static void updateStartupId(QWindow *window);
+
+    /**
      * Enum describing the windowing system platform used by the 
QGuiApplication.
      * @see platform
      * @since 5.25
@@ -687,9 +706,9 @@
     /**
      * Requests an xdg_activation_v1 token for a specific window.
      *
-     * @p win window in behalf this request is made
-     * @p serial of the event that triggered the request
-     * @p app_id identifier of the application that we are launching
+     * @param win window in behalf this request is made
+     * @param serial of the event that triggered the request
+     * @param app_id identifier of the application that we are launching
      *
      * @see currentSerial
      * @since 5.83
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/netwm_def.h 
new/kwindowsystem-5.91.0/src/netwm_def.h
--- old/kwindowsystem-5.90.0/src/netwm_def.h    2022-01-01 13:37:48.000000000 
+0100
+++ new/kwindowsystem-5.91.0/src/netwm_def.h    2022-02-05 22:30:50.000000000 
+0100
@@ -781,6 +781,7 @@
         @li WM2OpaqueRegion
         @li WM2DesktopFileName the base name of the desktop file name or the 
full path to the desktop file
         @li WM2GTKFrameExtents extents of the shadow drawn by the client
+        @li WM2GTKApplicationId _GTK_APPLICATION_ID
 
         @see Properties2
     **/
@@ -816,6 +817,7 @@
         WM2GTKFrameExtents = 1u << 27, // NOT STANDARD @since 5.65
         WM2AppMenuServiceName = 1u << 28, // NOT STANDARD @since 5.69
         WM2AppMenuObjectPath = 1u << 29, // NOT STANDARD @since 5.69
+        WM2GTKApplicationId = 1u << 30, // NOT STANDARD @since 5.91
         WM2AllProperties = ~0u,
     };
     /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/platforms/CMakeLists.txt 
new/kwindowsystem-5.91.0/src/platforms/CMakeLists.txt
--- old/kwindowsystem-5.90.0/src/platforms/CMakeLists.txt       2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/CMakeLists.txt       2022-02-05 
22:30:50.000000000 +0100
@@ -1,7 +1,6 @@
 if(APPLE)
     add_subdirectory(osx)
 endif()
-add_subdirectory(wayland)
 if(WIN32)
     add_subdirectory(windows)
 endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/wayland/CMakeLists.txt 
new/kwindowsystem-5.91.0/src/platforms/wayland/CMakeLists.txt
--- old/kwindowsystem-5.90.0/src/platforms/wayland/CMakeLists.txt       
2022-01-01 13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/wayland/CMakeLists.txt       
1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-add_library(KF5WindowSystemWaylandPlugin MODULE)
-
-target_sources(KF5WindowSystemWaylandPlugin PRIVATE
-    kwindowsystem.cpp
-    plugin.cpp
-)
-
-target_link_libraries(KF5WindowSystemWaylandPlugin
-    KF5WindowSystem
-)
-
-set_target_properties(
-    KF5WindowSystemWaylandPlugin
-    PROPERTIES LIBRARY_OUTPUT_DIRECTORY 
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/kf5/kwindowsystem"
-)
-
-install(
-    TARGETS
-        KF5WindowSystemWaylandPlugin
-    DESTINATION
-        ${KDE_INSTALL_PLUGINDIR}/kf5/kwindowsystem/
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/wayland/kwindowsystem.cpp 
new/kwindowsystem-5.91.0/src/platforms/wayland/kwindowsystem.cpp
--- old/kwindowsystem-5.90.0/src/platforms/wayland/kwindowsystem.cpp    
2022-01-01 13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/wayland/kwindowsystem.cpp    
1970-01-01 01:00:00.000000000 +0100
@@ -1,292 +0,0 @@
-/*
-    SPDX-FileCopyrightText: 2015 Martin Gr????lin <mgraess...@kde.org>
-
-    SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
-*/
-
-#include "kwindowsystem_p_wayland.h"
-#include <QList>
-#include <QMetaMethod>
-#include <QPixmap>
-
-QList<WId> KWindowSystemPrivateWayland::windows()
-{
-    return QList<WId>();
-}
-
-QList<WId> KWindowSystemPrivateWayland::stackingOrder()
-{
-    return QList<WId>();
-}
-
-WId KWindowSystemPrivateWayland::activeWindow()
-{
-    return 0;
-}
-
-void KWindowSystemPrivateWayland::activateWindow(WId win, long time)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(time)
-}
-
-void KWindowSystemPrivateWayland::forceActiveWindow(WId win, long time)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(time)
-}
-
-void KWindowSystemPrivateWayland::demandAttention(WId win, bool set)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(set)
-}
-
-bool KWindowSystemPrivateWayland::compositingActive()
-{
-    return true;
-}
-
-int KWindowSystemPrivateWayland::currentDesktop()
-{
-    return 0;
-}
-
-int KWindowSystemPrivateWayland::numberOfDesktops()
-{
-    return 0;
-}
-
-void KWindowSystemPrivateWayland::setCurrentDesktop(int desktop)
-{
-    Q_UNUSED(desktop)
-}
-
-void KWindowSystemPrivateWayland::setOnAllDesktops(WId win, bool b)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(b)
-}
-
-void KWindowSystemPrivateWayland::setOnDesktop(WId win, int desktop)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(desktop)
-}
-
-void KWindowSystemPrivateWayland::setOnActivities(WId win, const QStringList 
&activities)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(activities)
-}
-
-#if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 0)
-WId KWindowSystemPrivateWayland::transientFor(WId window)
-{
-    Q_UNUSED(window)
-    return 0;
-}
-
-WId KWindowSystemPrivateWayland::groupLeader(WId window)
-{
-    Q_UNUSED(window)
-    return 0;
-}
-#endif
-
-QPixmap KWindowSystemPrivateWayland::icon(WId win, int width, int height, bool 
scale, int flags)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(width)
-    Q_UNUSED(height)
-    Q_UNUSED(scale)
-    Q_UNUSED(flags)
-    return QPixmap();
-}
-
-void KWindowSystemPrivateWayland::setIcons(WId win, const QPixmap &icon, const 
QPixmap &miniIcon)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(icon)
-    Q_UNUSED(miniIcon)
-}
-
-void KWindowSystemPrivateWayland::setType(WId win, NET::WindowType windowType)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(windowType)
-}
-
-void KWindowSystemPrivateWayland::setState(WId win, NET::States state)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(state)
-}
-
-void KWindowSystemPrivateWayland::clearState(WId win, NET::States state)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(state)
-}
-
-void KWindowSystemPrivateWayland::minimizeWindow(WId win)
-{
-    Q_UNUSED(win)
-}
-
-void KWindowSystemPrivateWayland::unminimizeWindow(WId win)
-{
-    Q_UNUSED(win)
-}
-
-void KWindowSystemPrivateWayland::raiseWindow(WId win)
-{
-    Q_UNUSED(win)
-}
-
-void KWindowSystemPrivateWayland::lowerWindow(WId win)
-{
-    Q_UNUSED(win)
-}
-
-bool KWindowSystemPrivateWayland::icccmCompliantMappingState()
-{
-    return false;
-}
-
-QRect KWindowSystemPrivateWayland::workArea(int desktop)
-{
-    Q_UNUSED(desktop)
-    return QRect();
-}
-
-QRect KWindowSystemPrivateWayland::workArea(const QList<WId> &excludes, int 
desktop)
-{
-    Q_UNUSED(excludes)
-    Q_UNUSED(desktop)
-    return QRect();
-}
-
-QString KWindowSystemPrivateWayland::desktopName(int desktop)
-{
-    Q_UNUSED(desktop)
-    return QString();
-}
-
-void KWindowSystemPrivateWayland::setDesktopName(int desktop, const QString 
&name)
-{
-    Q_UNUSED(desktop)
-    Q_UNUSED(name)
-}
-
-bool KWindowSystemPrivateWayland::showingDesktop()
-{
-    return false;
-}
-
-void KWindowSystemPrivateWayland::setShowingDesktop(bool showing)
-{
-    Q_UNUSED(showing);
-}
-
-void KWindowSystemPrivateWayland::setUserTime(WId win, long time)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(time)
-}
-
-void KWindowSystemPrivateWayland::setExtendedStrut(WId win,
-                                                   int left_width,
-                                                   int left_start,
-                                                   int left_end,
-                                                   int right_width,
-                                                   int right_start,
-                                                   int right_end,
-                                                   int top_width,
-                                                   int top_start,
-                                                   int top_end,
-                                                   int bottom_width,
-                                                   int bottom_start,
-                                                   int bottom_end)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(left_width)
-    Q_UNUSED(left_start)
-    Q_UNUSED(left_end)
-    Q_UNUSED(right_width)
-    Q_UNUSED(right_start)
-    Q_UNUSED(right_end)
-    Q_UNUSED(top_width)
-    Q_UNUSED(top_start)
-    Q_UNUSED(top_end)
-    Q_UNUSED(bottom_width)
-    Q_UNUSED(bottom_start)
-    Q_UNUSED(bottom_end)
-}
-
-void KWindowSystemPrivateWayland::setStrut(WId win, int left, int right, int 
top, int bottom)
-{
-    Q_UNUSED(win)
-    Q_UNUSED(left)
-    Q_UNUSED(right)
-    Q_UNUSED(top)
-    Q_UNUSED(bottom)
-}
-
-bool KWindowSystemPrivateWayland::allowedActionsSupported()
-{
-    return false;
-}
-
-QString KWindowSystemPrivateWayland::readNameProperty(WId window, unsigned 
long atom)
-{
-    Q_UNUSED(window)
-    Q_UNUSED(atom)
-    return QString();
-}
-
-void KWindowSystemPrivateWayland::allowExternalProcessWindowActivation(int pid)
-{
-    Q_UNUSED(pid)
-}
-
-void KWindowSystemPrivateWayland::setBlockingCompositing(WId window, bool 
active)
-{
-    Q_UNUSED(window)
-    Q_UNUSED(active)
-}
-
-bool KWindowSystemPrivateWayland::mapViewport()
-{
-    return false;
-}
-
-int KWindowSystemPrivateWayland::viewportToDesktop(const QPoint &pos)
-{
-    Q_UNUSED(pos)
-    return 0;
-}
-
-int KWindowSystemPrivateWayland::viewportWindowToDesktop(const QRect &r)
-{
-    Q_UNUSED(r)
-    return 0;
-}
-
-QPoint KWindowSystemPrivateWayland::desktopToViewport(int desktop, bool 
absolute)
-{
-    Q_UNUSED(desktop)
-    Q_UNUSED(absolute)
-    return QPoint();
-}
-
-QPoint KWindowSystemPrivateWayland::constrainViewportRelativePosition(const 
QPoint &pos)
-{
-    Q_UNUSED(pos)
-    return QPoint();
-}
-
-void KWindowSystemPrivateWayland::connectNotify(const QMetaMethod &signal)
-{
-    Q_UNUSED(signal)
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/wayland/kwindowsystem_p_wayland.h 
new/kwindowsystem-5.91.0/src/platforms/wayland/kwindowsystem_p_wayland.h
--- old/kwindowsystem-5.90.0/src/platforms/wayland/kwindowsystem_p_wayland.h    
2022-01-01 13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/wayland/kwindowsystem_p_wayland.h    
1970-01-01 01:00:00.000000000 +0100
@@ -1,75 +0,0 @@
-/*
-    SPDX-FileCopyrightText: 2015 Martin Gr????lin <mgraess...@kde.org>
-
-    SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
-*/
-#ifndef KWINDOWSYSTEM_P_WAYLAND_H
-#define KWINDOWSYSTEM_P_WAYLAND_H
-
-#include "kwindowsystem_p.h"
-
-class KWindowSystemPrivateWayland : public KWindowSystemPrivate
-{
-public:
-    QList<WId> windows() override;
-    QList<WId> stackingOrder() override;
-    WId activeWindow() override;
-    void activateWindow(WId win, long time) override;
-    void forceActiveWindow(WId win, long time) override;
-    void demandAttention(WId win, bool set) override;
-    bool compositingActive() override;
-    int currentDesktop() override;
-    int numberOfDesktops() override;
-    void setCurrentDesktop(int desktop) override;
-    void setOnAllDesktops(WId win, bool b) override;
-    void setOnDesktop(WId win, int desktop) override;
-    void setOnActivities(WId win, const QStringList &activities) override;
-#if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 0)
-    WId transientFor(WId window) override;
-    WId groupLeader(WId window) override;
-#endif
-    QPixmap icon(WId win, int width, int height, bool scale, int flags) 
override;
-    void setIcons(WId win, const QPixmap &icon, const QPixmap &miniIcon) 
override;
-    void setType(WId win, NET::WindowType windowType) override;
-    void setState(WId win, NET::States state) override;
-    void clearState(WId win, NET::States state) override;
-    void minimizeWindow(WId win) override;
-    void unminimizeWindow(WId win) override;
-    void raiseWindow(WId win) override;
-    void lowerWindow(WId win) override;
-    bool icccmCompliantMappingState() override;
-    QRect workArea(int desktop) override;
-    QRect workArea(const QList<WId> &excludes, int desktop) override;
-    QString desktopName(int desktop) override;
-    void setDesktopName(int desktop, const QString &name) override;
-    bool showingDesktop() override;
-    void setShowingDesktop(bool showing) override;
-    void setUserTime(WId win, long time) override;
-    void setExtendedStrut(WId win,
-                          int left_width,
-                          int left_start,
-                          int left_end,
-                          int right_width,
-                          int right_start,
-                          int right_end,
-                          int top_width,
-                          int top_start,
-                          int top_end,
-                          int bottom_width,
-                          int bottom_start,
-                          int bottom_end) override;
-    void setStrut(WId win, int left, int right, int top, int bottom) override;
-    bool allowedActionsSupported() override;
-    QString readNameProperty(WId window, unsigned long atom) override;
-    void allowExternalProcessWindowActivation(int pid) override;
-    void setBlockingCompositing(WId window, bool active) override;
-    bool mapViewport() override;
-    int viewportToDesktop(const QPoint &pos) override;
-    int viewportWindowToDesktop(const QRect &r) override;
-    QPoint desktopToViewport(int desktop, bool absolute) override;
-    QPoint constrainViewportRelativePosition(const QPoint &pos) override;
-
-    void connectNotify(const QMetaMethod &signal) override;
-};
-
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/wayland/plugin.cpp 
new/kwindowsystem-5.91.0/src/platforms/wayland/plugin.cpp
--- old/kwindowsystem-5.90.0/src/platforms/wayland/plugin.cpp   2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/wayland/plugin.cpp   1970-01-01 
01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-/*
-    SPDX-FileCopyrightText: 2015 Martin Gr????lin <mgraess...@kde.org>
-
-    SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
-*/
-
-#include "plugin.h"
-#include "kwindowsystem_p_wayland.h"
-
-WaylandPlugin::WaylandPlugin(QObject *parent)
-    : KWindowSystemPluginInterface(parent)
-{
-}
-
-WaylandPlugin::~WaylandPlugin()
-{
-}
-
-KWindowSystemPrivate *WaylandPlugin::createWindowSystem()
-{
-    return new KWindowSystemPrivateWayland();
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/platforms/wayland/plugin.h 
new/kwindowsystem-5.91.0/src/platforms/wayland/plugin.h
--- old/kwindowsystem-5.90.0/src/platforms/wayland/plugin.h     2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/wayland/plugin.h     1970-01-01 
01:00:00.000000000 +0100
@@ -1,25 +0,0 @@
-/*
-    SPDX-FileCopyrightText: 2015 Martin Gr????lin <mgraess...@kde.org>
-
-    SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
-*/
-
-#ifndef KWINDOWSYSTEM_WAYLAND_PLUGIN_H
-#define KWINDOWSYSTEM_WAYLAND_PLUGIN_H
-
-#include "kwindowsystemplugininterface_p.h"
-
-class WaylandPlugin : public KWindowSystemPluginInterface
-{
-    Q_OBJECT
-    Q_PLUGIN_METADATA(IID "org.kde.kwindowsystem.KWindowSystemPluginInterface" 
FILE "wayland.json")
-    Q_INTERFACES(KWindowSystemPluginInterface)
-
-public:
-    explicit WaylandPlugin(QObject *parent = nullptr);
-    ~WaylandPlugin() override;
-
-    KWindowSystemPrivate *createWindowSystem() override;
-};
-
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/wayland/wayland.json 
new/kwindowsystem-5.91.0/src/platforms/wayland/wayland.json
--- old/kwindowsystem-5.90.0/src/platforms/wayland/wayland.json 2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/wayland/wayland.json 1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-{
-    "platforms": ["wayland", "wayland-egl"]
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/xcb/CMakeLists.txt 
new/kwindowsystem-5.91.0/src/platforms/xcb/CMakeLists.txt
--- old/kwindowsystem-5.90.0/src/platforms/xcb/CMakeLists.txt   2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/CMakeLists.txt   2022-02-05 
22:30:50.000000000 +0100
@@ -57,12 +57,12 @@
 
 set_target_properties(
     KF5WindowSystemX11Plugin
-    PROPERTIES LIBRARY_OUTPUT_DIRECTORY 
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/kf5/kwindowsystem"
+    PROPERTIES LIBRARY_OUTPUT_DIRECTORY 
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/kf${QT_MAJOR_VERSION}/kwindowsystem"
 )
 
 install(
     TARGETS
         KF5WindowSystemX11Plugin
     DESTINATION
-        ${KDE_INSTALL_PLUGINDIR}/kf5/kwindowsystem/
+        ${KDE_INSTALL_PLUGINDIR}/kf${QT_MAJOR_VERSION}/kwindowsystem/
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/platforms/xcb/atoms_p.h 
new/kwindowsystem-5.91.0/src/platforms/xcb/atoms_p.h
--- old/kwindowsystem-5.90.0/src/platforms/xcb/atoms_p.h        2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/atoms_p.h        2022-02-05 
22:30:50.000000000 +0100
@@ -153,6 +153,7 @@
 
     // GTK extensions
     ENUM(_GTK_FRAME_EXTENTS),
+    ENUM(_GTK_APPLICATION_ID),
 
     // application protocols
     ENUM(WM_PROTOCOLS),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/xcb/kkeyserver.cpp 
new/kwindowsystem-5.91.0/src/platforms/xcb/kkeyserver.cpp
--- old/kwindowsystem-5.90.0/src/platforms/xcb/kkeyserver.cpp   2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/kkeyserver.cpp   2022-02-05 
22:30:50.000000000 +0100
@@ -496,6 +496,7 @@
     }
 
     checkDisplay();
+    xcb_key_symbols_t *symbols = xcb_key_symbols_alloc(QX11Info::connection());
     XModifierKeymap *xmk = XGetModifierMapping(QX11Info::display());
 
     int min_keycode;
@@ -515,7 +516,7 @@
         // found fixes the problem.
         for (int j = 0; j < xmk->max_keypermod; ++j) {
             for (int k = 0; k < keysyms_per_keycode; ++k) {
-                keySymX = XKeycodeToKeysym(QX11Info::display(), 
xmk->modifiermap[xmk->max_keypermod * i + j], k);
+                keySymX = xcb_key_symbols_get_keysym(symbols, 
xmk->modifiermap[xmk->max_keypermod * i + j], k);
 
                 switch (keySymX) {
                 case XK_Alt_L:
@@ -628,6 +629,7 @@
     g_rgX11ModInfo[2].modX = g_alt_mask;
     g_rgX11ModInfo[3].modX = g_meta_mask;
 
+    xcb_key_symbols_free(symbols);
     XFreeModifiermap(xmk);
     g_bInitializedMods = true;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/xcb/kwindowinfo.cpp 
new/kwindowsystem-5.91.0/src/platforms/xcb/kwindowinfo.cpp
--- old/kwindowsystem-5.90.0/src/platforms/xcb/kwindowinfo.cpp  2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/kwindowinfo.cpp  2022-02-05 
22:30:50.000000000 +0100
@@ -46,6 +46,7 @@
     installDesktopFileNameExtension(this);
     installPidExtension(this);
     installAppMenuExtension(this);
+    installGtkApplicationIdExtension(this);
 
     KXErrorHandler handler;
     if (properties & NET::WMVisibleIconName) {
@@ -451,6 +452,16 @@
     return QByteArray(m_info->desktopFileName());
 }
 
+QByteArray KWindowInfoPrivateX11::gtkApplicationId() const
+{
+#if !defined(KDE_NO_WARNING_OUTPUT)
+    if (!(m_info->passedProperties2() & NET::WM2DesktopFileName)) {
+        qWarning() << "Pass NET::WM2DesktopFileName to KWindowInfo";
+    }
+#endif
+    return QByteArray(m_info->gtkApplicationId());
+}
+
 QByteArray KWindowInfoPrivateX11::applicationMenuObjectPath() const
 {
 #if !defined(KDE_NO_WARNING_OUTPUT)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.90.0/src/platforms/xcb/kwindowinfo_p_x11.h 
new/kwindowsystem-5.91.0/src/platforms/xcb/kwindowinfo_p_x11.h
--- old/kwindowsystem-5.90.0/src/platforms/xcb/kwindowinfo_p_x11.h      
2022-01-01 13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/kwindowinfo_p_x11.h      
2022-02-05 22:30:50.000000000 +0100
@@ -14,7 +14,8 @@
 class KWindowInfoPrivateX11 : public KWindowInfoPrivate,
                               public 
KWindowInfoPrivateDesktopFileNameExtension,
                               public KWindowInfoPrivatePidExtension,
-                              public KWindowInfoPrivateAppMenuExtension
+                              public KWindowInfoPrivateAppMenuExtension,
+                              public 
KWindowInfoPrivateGtkApplicationIdExtension
 {
 public:
     KWindowInfoPrivateX11(WId window, NET::Properties properties, 
NET::Properties2 properties2);
@@ -49,6 +50,7 @@
     QByteArray desktopFileName() const override;
     QByteArray applicationMenuObjectPath() const override;
     QByteArray applicationMenuServiceName() const override;
+    QByteArray gtkApplicationId() const override;
 
     int pid() const override;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/platforms/xcb/netwm.cpp 
new/kwindowsystem-5.91.0/src/platforms/xcb/netwm.cpp
--- old/kwindowsystem-5.90.0/src/platforms/xcb/netwm.cpp        2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/netwm.cpp        2022-02-05 
22:30:50.000000000 +0100
@@ -156,6 +156,7 @@
         delete[] p->activities;
         delete[] p->client_machine;
         delete[] p->desktop_file;
+        delete[] p->gtk_application_id;
         delete[] p->appmenu_object_path;
         delete[] p->appmenu_service_name;
 
@@ -2521,6 +2522,7 @@
     p->icon_sizes = nullptr;
     p->activities = (char *)nullptr;
     p->desktop_file = nullptr;
+    p->gtk_application_id = nullptr;
     p->appmenu_object_path = nullptr;
     p->appmenu_service_name = nullptr;
     p->blockCompositing = false;
@@ -2583,6 +2585,7 @@
     p->icon_sizes = nullptr;
     p->activities = (char *)nullptr;
     p->desktop_file = nullptr;
+    p->gtk_application_id = nullptr;
     p->appmenu_object_path = nullptr;
     p->appmenu_service_name = nullptr;
     p->blockCompositing = false;
@@ -3792,6 +3795,8 @@
             dirty2 |= WM2OpaqueRegion;
         } else if (pe->atom == p->atom(_KDE_NET_WM_DESKTOP_FILE)) {
             dirty2 = WM2DesktopFileName;
+        } else if (pe->atom == p->atom(_GTK_APPLICATION_ID)) {
+            dirty2 = WM2GTKApplicationId;
         } else if (pe->atom == p->atom(_NET_WM_FULLSCREEN_MONITORS)) {
             dirty2 = WM2FullscreenMonitors;
         } else if (pe->atom == p->atom(_GTK_FRAME_EXTENTS)) {
@@ -3988,6 +3993,10 @@
         cookies[c++] = xcb_get_property(p->conn, false, p->window, 
p->atom(_KDE_NET_WM_DESKTOP_FILE), p->atom(UTF8_STRING), 0, MAX_PROP_SIZE);
     }
 
+    if (dirty2 & WM2GTKApplicationId) {
+        cookies[c++] = xcb_get_property(p->conn, false, p->window, 
p->atom(_GTK_APPLICATION_ID), p->atom(UTF8_STRING), 0, MAX_PROP_SIZE);
+    }
+
     if (dirty2 & WM2GTKFrameExtents) {
         cookies[c++] = xcb_get_property(p->conn, false, p->window, 
p->atom(_GTK_FRAME_EXTENTS), XCB_ATOM_CARDINAL, 0, 4);
     }
@@ -4591,6 +4600,16 @@
         }
     }
 
+    if (dirty2 & WM2GTKApplicationId) {
+        delete[] p->gtk_application_id;
+        p->gtk_application_id = nullptr;
+
+        const QByteArray id = get_string_reply(p->conn, cookies[c++], 
p->atom(UTF8_STRING));
+        if (id.length() > 0) {
+            p->gtk_application_id = nstrndup(id.constData(), id.length());
+        }
+    }
+
     if (dirty2 & WM2GTKFrameExtents) {
         p->gtk_frame_extents = NETStrut();
 
@@ -4930,6 +4949,11 @@
     return p->desktop_file;
 }
 
+const char *NETWinInfo::gtkApplicationId() const
+{
+    return p->gtk_application_id;
+}
+
 void NETRootInfo::virtual_hook(int, void *)
 {
     /*BASE::virtual_hook( id, data );*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/platforms/xcb/netwm.h 
new/kwindowsystem-5.91.0/src/platforms/xcb/netwm.h
--- old/kwindowsystem-5.90.0/src/platforms/xcb/netwm.h  2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/netwm.h  2022-02-05 
22:30:50.000000000 +0100
@@ -1627,6 +1627,12 @@
     const char *desktopFileName() const;
 
     /**
+     * @returns The GTK application id of the window if present.
+     * @since 5.91
+     **/
+    const char *gtkApplicationId() const;
+
+    /**
      * Sets the @p name as the D-BUS service name for the application menu.
      * @since 5.69
      **/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/platforms/xcb/netwm_p.h 
new/kwindowsystem-5.91.0/src/platforms/xcb/netwm_p.h
--- old/kwindowsystem-5.90.0/src/platforms/xcb/netwm_p.h        2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/platforms/xcb/netwm_p.h        2022-02-05 
22:30:50.000000000 +0100
@@ -168,7 +168,7 @@
     xcb_window_t transient_for, window_group;
     xcb_pixmap_t icon_pixmap, icon_mask;
     NET::Actions allowed_actions;
-    char *class_class, *class_name, *window_role, *client_machine, 
*desktop_file, *appmenu_object_path, *appmenu_service_name;
+    char *class_class, *class_name, *window_role, *client_machine, 
*desktop_file, *appmenu_object_path, *appmenu_service_name, *gtk_application_id;
 
     NET::Properties properties;
     NET::Properties2 properties2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.90.0/src/pluginwrapper.cpp 
new/kwindowsystem-5.91.0/src/pluginwrapper.cpp
--- old/kwindowsystem-5.90.0/src/pluginwrapper.cpp      2022-01-01 
13:37:48.000000000 +0100
+++ new/kwindowsystem-5.91.0/src/pluginwrapper.cpp      2022-02-05 
22:30:50.000000000 +0100
@@ -25,8 +25,8 @@
     const auto paths = QCoreApplication::libraryPaths();
     for (const QString &path : paths) {
         static const QStringList searchFolders{
-            QStringLiteral("/kf5/org.kde.kwindowsystem.platforms"),
-            QStringLiteral("/kf5/kwindowsystem"),
+            QStringLiteral("/kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + 
QStringLiteral("/org.kde.kwindowsystem.platforms"),
+            QStringLiteral("/kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + 
QStringLiteral("/kwindowsystem"),
         };
         for (const QString &searchFolder : searchFolders) {
             QDir pluginDir(path + searchFolder);

Reply via email to