1/*
2 This file is part of the KDE libraries
3 SPDX-FileCopyrightText: 2021 Aleix Pol <aleixpol@kde.org>
4 SPDX-FileCopyrightText: 2023 Nicolas Fella <nicolas.fella@gmx.de>
5
6 SPDX-License-Identifier: LGPL-2.1-or-later
7*/
8
9#ifndef KWAYLANDEXTRAS_H
10#define KWAYLANDEXTRAS_H
11
12#include <QObject>
13#include <QWindow>
14
15#include <kwindowsystem_export.h>
16
17/*!
18 * \class KWaylandExtras
19 * \inmodule KWindowSystem
20 * \brief A collection of functions to do Wayland things.
21 * \since 6.0
22 */
23class KWINDOWSYSTEM_EXPORT KWaylandExtras : public QObject
24{
25 Q_OBJECT
26
27public:
28 /*!
29 *
30 */
31 static KWaylandExtras *self();
32
33 /*!
34 * Requests an xdg_activation_v1 token for a specific window \a win with the given \a app_id.
35 *
36 * \a serial Serial of the event that triggered the request.
37 *
38 * \sa lastInputSerial
39 */
40 Q_INVOKABLE static void requestXdgActivationToken(QWindow *win, uint32_t serial, const QString &app_id);
41
42 /*!
43 * Offers the seat's current serial for the given \a window.
44 */
45 Q_INVOKABLE static quint32 lastInputSerial(QWindow *window);
46
47 /*!
48 * Requests to export the given \a window using xdg_foreign_v2.
49 *
50 * \sa windowExported
51 * \since 6.0
52 */
53 Q_INVOKABLE static void exportWindow(QWindow *window);
54
55 /*!
56 * Unexports the \a window previously exported using xdg_foreign_v2.
57 *
58 * Asks the compositor to revoke the handle.
59 *
60 * \since 6.0
61 */
62 Q_INVOKABLE static void unexportWindow(QWindow *window);
63
64Q_SIGNALS:
65 /*!
66 * Activation \a token to pass to the client.
67 *
68 * \a serial Serial of the event that triggered the request
69 *
70 * \sa requestXdgActivationToken
71 */
72 void xdgActivationTokenArrived(int serial, const QString &token);
73
74 /*!
75 * The \a handle of the given \a window to pass to the client.
76 * \sa exportWindow
77 * \since 6.0
78 */
79 void windowExported(QWindow *window, const QString &handle);
80
81private:
82 KWaylandExtras();
83 ~KWaylandExtras();
84
85 void *d;
86};
87
88#endif
89

source code of kwindowsystem/src/kwaylandextras.h