diff --git a/backends/x11/x11windowed_backend.cpp b/backends/x11/x11windowed_backend.cpp
index 03db04b84f..9f88b83757 100644
--- a/backends/x11/x11windowed_backend.cpp
+++ b/backends/x11/x11windowed_backend.cpp
@@ -25,11 +25,14 @@ along with this program. If not, see .
#include "xcbutils.h"
#include "eglonxbackend.h"
#include
+// KDE
+#include
#include
#include
#include
// kwayland
#include
+#include
#include
#include
// system
@@ -115,6 +118,26 @@ void X11WindowedBackend::createWindow()
xcb_create_window(m_connection, XCB_COPY_FROM_PARENT, m_window, m_screen->root,
0, 0, m_size.width(), m_size.height(),
0, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCB_COPY_FROM_PARENT, mask, values);
+
+ m_winInfo = new NETWinInfo(m_connection, m_window, m_screen->root, NET::WMWindowType, NET::Properties2());
+ m_winInfo->setWindowType(NET::Normal);
+ m_winInfo->setName(i18n("KDE Wayland Compositor (%1)", waylandServer()->display()->socketName()).toUtf8().constData());
+ m_winInfo->setPid(QCoreApplication::applicationPid());
+ QIcon windowIcon = QIcon::fromTheme(QStringLiteral("kwin"));
+ auto addIcon = [this, &windowIcon] (const QSize &size) {
+ if (windowIcon.actualSize(size) != size) {
+ return;
+ }
+ NETIcon icon;
+ icon.data = windowIcon.pixmap(size).toImage().bits();
+ icon.size.width = size.width();
+ icon.size.height = size.height();
+ m_winInfo->setIcon(icon, false);
+ };
+ addIcon(QSize(16, 16));
+ addIcon(QSize(32, 32));
+ addIcon(QSize(48, 48));
+
xcb_map_window(m_connection, m_window);
m_protocols = protocolsAtom;
diff --git a/backends/x11/x11windowed_backend.h b/backends/x11/x11windowed_backend.h
index e8c3a01b19..c2ac8634aa 100644
--- a/backends/x11/x11windowed_backend.h
+++ b/backends/x11/x11windowed_backend.h
@@ -30,6 +30,7 @@ along with this program. If not, see .
struct _XDisplay;
typedef struct _XDisplay Display;
+class NETWinInfo;
namespace KWin
{
@@ -93,6 +94,7 @@ private:
xcb_atom_t m_deleteWindowProtocol = XCB_ATOM_NONE;
xcb_cursor_t m_cursor = XCB_CURSOR_NONE;
Display *m_display = nullptr;
+ NETWinInfo *m_winInfo = nullptr;
};
}