1/*
2 SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
3 SPDX-FileCopyrightText: 2018 David Edmundson <davidedmundson@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
6*/
7#ifndef WAYLAND_REGISTRY_H
8#define WAYLAND_REGISTRY_H
9
10#include <QHash>
11#include <QObject>
12
13#include "KWayland/Client/kwaylandclient_export.h"
14
15struct wl_compositor;
16struct wl_data_device_manager;
17struct wl_display;
18struct wl_output;
19struct wl_registry;
20struct wl_seat;
21struct wl_shell;
22struct wl_shm;
23struct wl_subcompositor;
24struct wl_text_input_manager;
25struct zwp_text_input_manager_v2;
26struct org_kde_kwin_appmenu_manager;
27struct org_kde_kwin_fake_input;
28struct org_kde_kwin_dpms_manager;
29struct org_kde_kwin_shadow_manager;
30struct org_kde_kwin_blur_manager;
31struct org_kde_kwin_contrast_manager;
32struct org_kde_kwin_slide_manager;
33struct org_kde_plasma_activation_feedback;
34struct org_kde_plasma_shell;
35struct org_kde_plasma_virtual_desktop_management;
36struct org_kde_plasma_window_management;
37struct xdg_shell;
38struct zxdg_shell_v6;
39struct xdg_wm_base;
40struct zwp_relative_pointer_manager_v1;
41struct zwp_pointer_gestures_v1;
42struct zwp_pointer_constraints_v1;
43struct zxdg_exporter_v2;
44struct zxdg_importer_v2;
45struct zwp_idle_inhibit_manager_v1;
46struct zxdg_output_manager_v1;
47struct zxdg_decoration_manager_v1;
48
49namespace KWayland
50{
51namespace Client
52{
53class AppMenuManager;
54class Compositor;
55class ConnectionThread;
56class DataDeviceManager;
57class DpmsManager;
58class EventQueue;
59class FakeInput;
60class FullscreenShell;
61class Idle;
62class IdleInhibitManager;
63class Keystate;
64class RemoteAccessManager;
65class Output;
66class PlasmaActivationFeedback;
67class PlasmaShell;
68class PlasmaVirtualDesktopManagement;
69class PlasmaWindowManagement;
70class PointerConstraints;
71class PointerGestures;
72class Seat;
73class ShadowManager;
74class BlurManager;
75class ContrastManager;
76class SlideManager;
77class Shell;
78class ShmPool;
79class ServerSideDecorationManager;
80class ServerSideDecorationPaletteManager;
81class SubCompositor;
82class TextInputManager;
83class TextInputManagerUnstableV0;
84class TextInputManagerUnstableV2;
85class XdgShell;
86class RelativePointerManager;
87class XdgExporterUnstableV2;
88class XdgImporterUnstableV2;
89class XdgExporter;
90class XdgImporter;
91class XdgOutputManager;
92class XdgDecorationManager;
93
94/**
95 * @short Wrapper for the wl_registry interface.
96 *
97 * The purpose of this class is to manage the wl_registry interface.
98 * This class supports some well-known interfaces and can create a
99 * wrapper class for those.
100 *
101 * The main purpose is to emit signals whenever a new interface is
102 * added or an existing interface is removed. For the well known interfaces
103 * dedicated signals are emitted allowing a user to connect directly to the
104 * signal announcing the interface it is interested in.
105 *
106 * To create and setup the Registry one needs to call create with either a
107 * wl_display from an existing Wayland connection or a ConnectionThread instance:
108 *
109 * @code
110 * ConnectionThread *connection; // existing connection
111 * Registry registry;
112 * registry.create(connection);
113 * registry.setup();
114 * @endcode
115 *
116 * The interfaces are announced in an asynchronous way by the Wayland server.
117 * To initiate the announcing of the interfaces one needs to call setup.
118 **/
119class KWAYLANDCLIENT_EXPORT Registry : public QObject
120{
121 Q_OBJECT
122public:
123 /**
124 * The well-known interfaces this Registry supports.
125 * For each of the enum values the Registry is able to create a Wrapper
126 * object.
127 **/
128 enum class Interface {
129 Unknown, ///< Refers to an Unknown interface
130 Compositor, ///< Refers to the wl_compositor interface
131 Shell, ///< Refers to the wl_shell interface
132 Seat, ///< Refers to the wl_seat interface
133 Shm, ///< Refers to the wl_shm interface
134 Output, ///< Refers to the wl_output interface
135 SubCompositor, ///< Refers to the wl_subcompositor interface;
136 DataDeviceManager, ///< Refers to the wl_data_device_manager interface
137 PlasmaShell, ///< Refers to org_kde_plasma_shell interface
138 PlasmaWindowManagement, ///< Refers to org_kde_plasma_window_management interface
139 FakeInput, ///< Refers to org_kde_kwin_fake_input interface
140 Shadow, ///< Refers to org_kde_kwin_shadow_manager interface
141 Blur, ///< refers to org_kde_kwin_blur_manager interface
142 Contrast, ///< refers to org_kde_kwin_contrast_manager interface
143 Slide, ///< refers to org_kde_kwin_slide_manager
144 Dpms, ///< Refers to org_kde_kwin_dpms_manager interface
145 TextInputManagerUnstableV0, ///< Refers to wl_text_input_manager @since 5.23
146 TextInputManagerUnstableV2, ///< Refers to zwp_text_input_manager_v2 @since 5.23
147 XdgShellUnstableV5, ///< Refers to xdg_shell (unstable version 5) @since 5.25
148 RelativePointerManagerUnstableV1, ///< Refers to zwp_relative_pointer_manager_v1 @since 5.28
149 PointerGesturesUnstableV1, ///< Refers to zwp_pointer_gestures_v1 @since 5.29
150 PointerConstraintsUnstableV1, ///< Refers to zwp_pointer_constraints_v1 @since 5.29
151 XdgExporterUnstableV2, ///< refers to zxdg_exporter_v2 @since 5.40
152 XdgImporterUnstableV2, ///< refers to zxdg_importer_v2 @since 5.40
153 XdgShellUnstableV6, ///< Refers to zxdg_shell_v6 (unstable version 6) @since 5.39
154 IdleInhibitManagerUnstableV1, ///< Refers to zwp_idle_inhibit_manager_v1 (unstable version 1) @since 5.41
155 AppMenu, ///< Refers to org_kde_kwin_appmenu @since 5.42
156 PlasmaVirtualDesktopManagement, ///< Refers to org_kde_plasma_virtual_desktop_management interface @since 5.52
157 XdgOutputUnstableV1, ///< refers to zxdg_output_v1 @since 5.47
158 XdgShellStable, ///< refers to xdg_wm_base @since 5.48
159 XdgDecorationUnstableV1, ///< refers to zxdg_decoration_manager_v1 @since 5.54
160 PlasmaActivationFeedback, ///< Refers to org_kde_plasma_activation_feedback interface, @since 5.83
161 };
162 explicit Registry(QObject *parent = nullptr);
163 ~Registry() override;
164
165 /**
166 * Releases the wl_registry interface.
167 * After the interface has been released the Registry instance is no
168 * longer valid and can be setup with another wl_registry interface.
169 **/
170 void release();
171 /**
172 * Destroys the data held by this Registry.
173 * This method is supposed to be used when the connection to the Wayland
174 * server goes away. If the connection is not valid anymore, it's not
175 * possible to call release anymore as that calls into the Wayland
176 * connection and the call would fail. This method cleans up the data, so
177 * that the instance can be deleted or set up to a new wl_registry interface
178 * once there is a new connection available.
179 *
180 * It is suggested to connect this method to ConnectionThread::connectionDied:
181 * @code
182 * connect(connection, &ConnectionThread::connectionDied, registry, &Registry::destroy);
183 * @endcode
184 *
185 * @see release
186 **/
187 void destroy();
188 /**
189 * Gets the registry from the @p display.
190 **/
191 void create(wl_display *display);
192 /**
193 * Gets the registry from the @p connection.
194 **/
195 void create(ConnectionThread *connection);
196 /**
197 * Finalizes the setup of the Registry.
198 * After calling this method the interfaces will be announced in an asynchronous way.
199 * The Registry must have been created when calling this method.
200 * @see create
201 **/
202 void setup();
203
204 /**
205 * Sets the @p queue to use for this Registry.
206 *
207 * The EventQueue should be set before the Registry gets setup.
208 * The EventQueue gets automatically added to all interfaces created by
209 * this Registry. So that all objects are in the same EventQueue.
210 *
211 * @param queue The event queue to use for this Registry.
212 **/
213 void setEventQueue(EventQueue *queue);
214 /**
215 * @returns The EventQueue used by this Registry
216 **/
217 EventQueue *eventQueue();
218
219 /**
220 * @returns @c true if managing a wl_registry.
221 **/
222 bool isValid() const;
223 /**
224 * @returns @c true if the Registry has an @p interface.
225 **/
226 bool hasInterface(Interface interface) const;
227
228 /**
229 * Representation of one announced interface.
230 **/
231 struct AnnouncedInterface {
232 /**
233 * The name of the announced interface.
234 **/
235 quint32 name;
236 /**
237 * The maximum supported version of the announced interface.
238 **/
239 quint32 version;
240 };
241 /**
242 * Provides name and version for the @p interface.
243 *
244 * The first value of the returned pair is the "name", the second value is the "version".
245 * If the @p interface has not been announced, both values are set to 0.
246 * If there @p interface has been announced multiple times, the last announced is returned.
247 * In case one is interested in all announced interfaces, one should prefer @link interfaces(Interface) @endlink.
248 *
249 * The returned information can be passed into the bind or create methods.
250 *
251 * @param interface The well-known interface for which the name and version should be retrieved
252 * @returns name and version of the given interface
253 * @since 5.5
254 **/
255 AnnouncedInterface interface(Interface interface) const;
256 /**
257 * Provides all pairs of name and version for the well-known @p interface.
258 *
259 * If the @p interface has not been announced, an empty vector is returned.
260 *
261 * The returned information can be passed into the bind or create methods.
262 *
263 * @param interface The well-known interface for which the name and version should be retrieved
264 * @returns All pairs of name and version of the given interface
265 * @since 5.5
266 **/
267 QList<AnnouncedInterface> interfaces(Interface interface) const;
268
269 /**
270 * @name Low-level bind methods for global interfaces.
271 **/
272 ///@{
273 /**
274 * Binds the wl_compositor with @p name and @p version.
275 * If the @p name does not exist or is not for the compositor interface,
276 * @c null will be returned.
277 *
278 * Prefer using createCompositor instead.
279 * @see createCompositor
280 **/
281 wl_compositor *bindCompositor(uint32_t name, uint32_t version) const;
282 /**
283 * Binds the wl_shell with @p name and @p version.
284 * If the @p name does not exist or is not for the shell interface,
285 * @c null will be returned.
286 *
287 * Prefer using createShell instead.
288 * @see createShell
289 **/
290 wl_shell *bindShell(uint32_t name, uint32_t version) const;
291 /**
292 * Binds the wl_seat with @p name and @p version.
293 * If the @p name does not exist or is not for the seat interface,
294 * @c null will be returned.
295 *
296 * Prefer using createSeat instead.
297 * @see createSeat
298 **/
299 wl_seat *bindSeat(uint32_t name, uint32_t version) const;
300 /**
301 * Binds the wl_shm with @p name and @p version.
302 * If the @p name does not exist or is not for the shm interface,
303 * @c null will be returned.
304 *
305 * Prefer using createShmPool instead.
306 * @see createShmPool
307 **/
308 wl_shm *bindShm(uint32_t name, uint32_t version) const;
309 /**
310 * Binds the org_kde_kwin_outputdevice with @p name and @p version.
311 * If the @p name does not exist or is not for the outputdevice interface,
312 * @c null will be returned.
313 **/
314 wl_output *bindOutput(uint32_t name, uint32_t version) const;
315 /**
316 * Binds the wl_subcompositor with @p name and @p version.
317 * If the @p name does not exist or is not for the subcompositor interface,
318 * @c null will be returned.
319 *
320 * Prefer using createSubCompositor instead.
321 * @see createSubCompositor
322 **/
323 wl_subcompositor *bindSubCompositor(uint32_t name, uint32_t version) const;
324
325 /**
326 * Binds the wl_data_device_manager with @p name and @p version.
327 * If the @p name does not exist or is not for the data device manager interface,
328 * @c null will be returned.
329 *
330 * Prefer using createDataDeviceManager instead.
331 * @see createDataDeviceManager
332 **/
333 wl_data_device_manager *bindDataDeviceManager(uint32_t name, uint32_t version) const;
334 /**
335 * Binds the org_kde_plasma_shell with @p name and @p version.
336 * If the @p name does not exist or is not for the Plasma shell interface,
337 * @c null will be returned.
338 *
339 * Prefer using createPlasmaShell instead.
340 * @see createPlasmaShell
341 * @since 5.4
342 **/
343 org_kde_plasma_shell *bindPlasmaShell(uint32_t name, uint32_t version) const;
344 /**
345 * Binds the org_kde_plasma_activation_feedback with @p name and @p version.
346 * If the @p name does not exist or is not for the Plasma activation manager interface,
347 * @c null will be returned.
348 *
349 * Prefer using createPlasmaActivationFeedback instead.
350 * @see createPlasmaActivationFeedback
351 * @since 5.83
352 **/
353 org_kde_plasma_activation_feedback *bindPlasmaActivationFeedback(uint32_t name, uint32_t version) const;
354 /**
355 * Binds the org_kde_plasma_virtual_desktop_management with @p name and @p version.
356 * If the @p name does not exist or is not for the Plasma Virtual desktop interface,
357 * @c null will be returned.
358 *
359 * Prefer using createPlasmaShell instead.
360 * @see createPlasmaShell
361 * @since 5.52
362 **/
363 org_kde_plasma_virtual_desktop_management *bindPlasmaVirtualDesktopManagement(uint32_t name, uint32_t version) const;
364 /**
365 * Binds the org_kde_plasma_window_management with @p name and @p version.
366 * If the @p name does not exist or is not for the Plasma window management interface,
367 * @c null will be returned.
368 *
369 * Prefer using createPlasmaWindowManagement instead.
370 * @see createPlasmaWindowManagement
371 * @since 5.46
372 **/
373 org_kde_plasma_window_management *bindPlasmaWindowManagement(uint32_t name, uint32_t version) const;
374 /**
375 * Binds the org_kde_kwin_fake_input with @p name and @p version.
376 * If the @p name does not exist or is not for the fake input interface,
377 * @c null will be returned.
378 *
379 * Prefer using createFakeInput instead.
380 * @see createFakeInput
381 * @since 5.4
382 **/
383 org_kde_kwin_fake_input *bindFakeInput(uint32_t name, uint32_t version) const;
384 /**
385 * Binds the org_kde_kwin_shadow_manager with @p name and @p version.
386 * If the @p name does not exist or is not for the shadow manager interface,
387 * @c null will be returned.
388 *
389 * Prefer using createShadowManager instead.
390 * @see createShadowManager
391 * @since 5.4
392 **/
393 org_kde_kwin_shadow_manager *bindShadowManager(uint32_t name, uint32_t version) const;
394 /**
395 * Binds the org_kde_kwin_blur_manager with @p name and @p version.
396 * If the @p name does not exist or is not for the blur manager interface,
397 * @c null will be returned.
398 *
399 * Prefer using createBlurManager instead.
400 * @see createBlurManager
401 * @since 5.5
402 **/
403 org_kde_kwin_blur_manager *bindBlurManager(uint32_t name, uint32_t version) const;
404 /**
405 * Binds the org_kde_kwin_contrast_manager with @p name and @p version.
406 * If the @p name does not exist or is not for the contrast manager interface,
407 * @c null will be returned.
408 *
409 * Prefer using createContrastManager instead.
410 * @see createContrastManager
411 * @since 5.5
412 **/
413 org_kde_kwin_contrast_manager *bindContrastManager(uint32_t name, uint32_t version) const;
414 /**
415 * Binds the org_kde_kwin_slide_manager with @p name and @p version.
416 * If the @p name does not exist or is not for the slide manager interface,
417 * @c null will be returned.
418 *
419 * Prefer using createSlideManager instead.
420 * @see createSlideManager
421 * @since 5.5
422 **/
423 org_kde_kwin_slide_manager *bindSlideManager(uint32_t name, uint32_t version) const;
424 /**
425 * Binds the org_kde_kwin_dpms_manager with @p name and @p version.
426 * If the @p name does not exist or is not for the dpms manager interface,
427 * @c null will be returned.
428 *
429 * Prefer using createDpmsManager instead.
430 * @see createDpmsManager
431 * @since 5.5
432 **/
433 org_kde_kwin_dpms_manager *bindDpmsManager(uint32_t name, uint32_t version) const;
434 /**
435 * Binds the wl_text_input_manager with @p name and @p version.
436 * If the @p name does not exist or is not for the text input interface in unstable version 0,
437 * @c null will be returned.
438 *
439 * Prefer using createTextInputManager instead.
440 * @see createTextInputManager
441 * @since 5.23
442 **/
443 wl_text_input_manager *bindTextInputManagerUnstableV0(uint32_t name, uint32_t version) const;
444 /**
445 * Binds the zwp_text_input_manager_v2 with @p name and @p version.
446 * If the @p name does not exist or is not for the text input interface in unstable version 2,
447 * @c null will be returned.
448 *
449 * Prefer using createTextInputManager instead.
450 * @see createTextInputManager
451 * @since 5.23
452 **/
453 zwp_text_input_manager_v2 *bindTextInputManagerUnstableV2(uint32_t name, uint32_t version) const;
454 /**
455 * Binds the xdg_shell (unstable version 5) with @p name and @p version.
456 * If the @p name does not exist or is not for the xdg shell interface in unstable version 5,
457 * @c null will be returned.
458 *
459 * Prefer using createXdgShell instead.
460 * @see createXdgShell
461 * @since 5.25
462 **/
463 xdg_shell *bindXdgShellUnstableV5(uint32_t name, uint32_t version) const;
464 /**
465 * Binds the zxdg_shell_v6 (unstable version 6) with @p name and @p version.
466 * If the @p name does not exist or is not for the xdg shell interface in unstable version 5,
467 * @c null will be returned.
468 *
469 * Prefer using createXdgShell instead.
470 * @see createXdgShell
471 * @since 5.39
472 **/
473 zxdg_shell_v6 *bindXdgShellUnstableV6(uint32_t name, uint32_t version) const;
474 /**
475 * Binds the zxdg_shell_v6 (unstable version 6) with @p name and @p version.
476 * If the @p name does not exist or is not for the xdg shell interface in unstable version 5,
477 * @c null will be returned.
478 *
479 * Prefer using createXdgShell instead.
480 * @see createXdgShell
481 * @since 5.39
482 **/
483 xdg_wm_base *bindXdgShellStable(uint32_t name, uint32_t version) const;
484 /**
485 * Binds the zwp_relative_pointer_manager_v1 with @p name and @p version.
486 * If the @p name does not exist or is not for the relative pointer interface in unstable version 1,
487 * @c null will be returned.
488 *
489 * Prefer using createRelativePointerManager instead.
490 * @see createRelativePointerManager
491 * @since 5.28
492 **/
493 zwp_relative_pointer_manager_v1 *bindRelativePointerManagerUnstableV1(uint32_t name, uint32_t version) const;
494 /**
495 * Binds the zwp_pointer_gestures_v1 with @p name and @p version.
496 * If the @p name does not exist or is not for the pointer gestures interface in unstable version 1,
497 * @c null will be returned.
498 *
499 * Prefer using createPointerGestures instead.
500 * @see createPointerGestures
501 * @since 5.29
502 **/
503 zwp_pointer_gestures_v1 *bindPointerGesturesUnstableV1(uint32_t name, uint32_t version) const;
504 /**
505 * Binds the zwp_pointer_constraints_v1 with @p name and @p version.
506 * If the @p name does not exist or is not for the pointer constraints interface in unstable version 1,
507 * @c null will be returned.
508 *
509 * Prefer using createPointerConstraints instead.
510 * @see createPointerConstraints
511 * @since 5.29
512 **/
513 zwp_pointer_constraints_v1 *bindPointerConstraintsUnstableV1(uint32_t name, uint32_t version) const;
514
515 /**
516 * Binds the zxdg_exporter_v2 with @p name and @p version.
517 * If the @p name does not exists or isnot for the exporter
518 * extension in unstable version 1,
519 * @c null will be returned.
520 *
521 * Prefer using createXdgExporter
522 * @since 5.40
523 */
524 zxdg_exporter_v2 *bindXdgExporterUnstableV2(uint32_t name, uint32_t version) const;
525
526 /**
527 * Binds the zxdg_importer_v2 with @p name and @p version.
528 * If the @p name does not exists or isnot for the importer
529 * extension in unstable version 1,
530 * @c null will be returned.
531 *
532 * Prefer using createXdgImporter
533 * @since 5.40
534 */
535 zxdg_importer_v2 *bindXdgImporterUnstableV2(uint32_t name, uint32_t version) const;
536
537 /**
538 * Binds the zwp_idle_inhibit_manager_v1 with @p name and @p version.
539 * If the @p name does not exists or is not for the idle inhibit manager in unstable version 1,
540 * @c null will be returned.
541 *
542 * Prefer using createIdleInhibitManager
543 * @since 5.41
544 */
545 zwp_idle_inhibit_manager_v1 *bindIdleInhibitManagerUnstableV1(uint32_t name, uint32_t version) const;
546
547 /**
548 * Binds the org_kde_kwin_appmenu_manager with @p name and @p version.
549 * If the @p name does not exist or is not for the appmenu manager interface,
550 * @c null will be returned.
551 *
552 * Prefer using createAppMenuManager instead.
553 * @see createAppMenuManager
554 * @since 5.42
555 **/
556 org_kde_kwin_appmenu_manager *bindAppMenuManager(uint32_t name, uint32_t version) const;
557
558 /**
559 * Binds the zxdg_output_v1 with @p name and @p version.
560 * If the @p name does not exist,
561 * @c null will be returned.
562 *
563 * Prefer using createXdgOutputManager instead.
564 * @see createXdgOutputManager
565 * @since 5.47
566 **/
567 zxdg_output_manager_v1 *bindXdgOutputUnstableV1(uint32_t name, uint32_t version) const;
568
569 /**
570 * Binds the zxdg_decoration_manager_v1 with @p name and @p version.
571 * If the @p name does not exist,
572 * @c null will be returned.
573 *
574 * Prefer using createXdgDecorationManager instead.
575 * @see createXdgDecorationManager
576 * @since 5.54
577 **/
578 zxdg_decoration_manager_v1 *bindXdgDecorationUnstableV1(uint32_t name, uint32_t version) const;
579
580 ///@}
581
582 /**
583 * @name Convenient factory methods for global objects.
584 **/
585 ///@{
586 /**
587 * Creates a Compositor and sets it up to manage the interface identified by
588 * @p name and @p version.
589 *
590 * Note: in case @p name is invalid or isn't for the wl_compositor interface,
591 * the returned Compositor will not be valid. Therefore it's recommended to call
592 * isValid on the created instance.
593 *
594 * @param name The name of the wl_compositor interface to bind
595 * @param version The version or the wl_compositor interface to use
596 * @param parent The parent for Compositor
597 *
598 * @returns The created Compositor.
599 **/
600 Compositor *createCompositor(quint32 name, quint32 version, QObject *parent = nullptr);
601 /**
602 * Creates a Seat and sets it up to manage the interface identified by
603 * @p name and @p version.
604 *
605 * Note: in case @p name is invalid or isn't for the wl_seat interface,
606 * the returned Seat will not be valid. Therefore it's recommended to call
607 * isValid on the created instance.
608 *
609 * @param name The name of the wl_seat interface to bind
610 * @param version The version or the wl_seat interface to use
611 * @param parent The parent for Seat
612 *
613 * @returns The created Seat.
614 **/
615 Shell *createShell(quint32 name, quint32 version, QObject *parent = nullptr);
616 /**
617 * Creates a Compositor and sets it up to manage the interface identified by
618 * @p name and @p version.
619 *
620 * Note: in case @p name is invalid or isn't for the wl_compositor interface,
621 * the returned Compositor will not be valid. Therefore it's recommended to call
622 * isValid on the created instance.
623 *
624 * @param name The name of the wl_compositor interface to bind
625 * @param version The version or the wl_compositor interface to use
626 * @param parent The parent for Compositor
627 *
628 * @returns The created Compositor.
629 **/
630 Seat *createSeat(quint32 name, quint32 version, QObject *parent = nullptr);
631 /**
632 * Creates a ShmPool and sets it up to manage the interface identified by
633 * @p name and @p version.
634 *
635 * Note: in case @p name is invalid or isn't for the wl_shm interface,
636 * the returned ShmPool will not be valid. Therefore it's recommended to call
637 * isValid on the created instance.
638 *
639 * @param name The name of the wl_shm interface to bind
640 * @param version The version or the wl_shm interface to use
641 * @param parent The parent for ShmPool
642 *
643 * @returns The created ShmPool.
644 **/
645 ShmPool *createShmPool(quint32 name, quint32 version, QObject *parent = nullptr);
646 /**
647 * Creates a SubCompositor and sets it up to manage the interface identified by
648 * @p name and @p version.
649 *
650 * Note: in case @p name is invalid or isn't for the wl_subcompositor interface,
651 * the returned SubCompositor will not be valid. Therefore it's recommended to call
652 * isValid on the created instance.
653 *
654 * @param name The name of the wl_subcompositor interface to bind
655 * @param version The version or the wl_subcompositor interface to use
656 * @param parent The parent for SubCompositor
657 *
658 * @returns The created SubCompositor.
659 **/
660 SubCompositor *createSubCompositor(quint32 name, quint32 version, QObject *parent = nullptr);
661 /**
662 * Creates an Output and sets it up to manage the interface identified by
663 * @p name and @p version.
664 *
665 * Note: in case @p name is invalid or isn't for the wl_output interface,
666 * the returned Output will not be valid. Therefore it's recommended to call
667 * isValid on the created instance.
668 *
669 * @param name The name of the wl_output interface to bind
670 * @param version The version or the wl_output interface to use
671 * @param parent The parent for Output
672 *
673 * @returns The created Output.
674 **/
675 Output *createOutput(quint32 name, quint32 version, QObject *parent = nullptr);
676 /**
677 * Creates a DataDeviceManager and sets it up to manage the interface identified by
678 * @p name and @p version.
679 *
680 * Note: in case @p name is invalid or isn't for the wl_data_device_manager interface,
681 * the returned DataDeviceManager will not be valid. Therefore it's recommended to call
682 * isValid on the created instance.
683 *
684 * @param name The name of the wl_data_device_manager interface to bind
685 * @param version The version or the wl_data_device_manager interface to use
686 * @param parent The parent for DataDeviceManager
687 *
688 * @returns The created DataDeviceManager.
689 **/
690 DataDeviceManager *createDataDeviceManager(quint32 name, quint32 version, QObject *parent = nullptr);
691 /**
692 * Creates a PlasmaShell and sets it up to manage the interface identified by
693 * @p name and @p version.
694 *
695 * Note: in case @p name is invalid or isn't for the org_kde_plasma_shell interface,
696 * the returned PlasmaShell will not be valid. Therefore it's recommended to call
697 * isValid on the created instance.
698 *
699 * @param name The name of the org_kde_plasma_shell interface to bind
700 * @param version The version or the org_kde_plasma_shell interface to use
701 * @param parent The parent for PlasmaShell
702 *
703 * @returns The created PlasmaShell.
704 * @since 5.4
705 **/
706 PlasmaShell *createPlasmaShell(quint32 name, quint32 version, QObject *parent = nullptr);
707 /**
708 * Creates a PlasmaActivationFeedback and sets it up to manage the interface identified by
709 * @p name and @p version.
710 *
711 * Note: in case @p name is invalid or isn't for the org_kde_plasma_activation_feedback interface,
712 * the returned PlasmaActivationFeedback will not be valid. Therefore it's recommended to call
713 * isValid on the created instance.
714 *
715 * @param name The name of the org_kde_plasma_activation_feedback interface to bind
716 * @param version The version or the org_kde_plasma_activation_feedback interface to use
717 * @param parent The parent for PlasmaActivationFeedback
718 *
719 * @returns The created PlasmaActivationFeedback.
720 * @since 5.83
721 **/
722 PlasmaActivationFeedback *createPlasmaActivationFeedback(quint32 name, quint32 version, QObject *parent = nullptr);
723 /**
724 * Creates a PlasmaVirtualDesktopManagement and sets it up to manage the interface identified by
725 * @p name and @p version.
726 *
727 * Note: in case @p name is invalid or isn't for the org_kde_plasma_virtual_desktop_management interface,
728 * the returned VirtualDesktop will not be valid. Therefore it's recommended to call
729 * isValid on the created instance.
730 *
731 * @param name The name of the org_kde_plasma_virtual_desktop_management interface to bind
732 * @param version The version or the org_kde_plasma_virtual_desktop_management interface to use
733 * @param parent The parent for PlasmaShell
734 *
735 * @returns The created PlasmaShell.
736 * @since 5.52
737 **/
738 PlasmaVirtualDesktopManagement *createPlasmaVirtualDesktopManagement(quint32 name, quint32 version, QObject *parent = nullptr);
739 /**
740 * Creates a PlasmaWindowManagement and sets it up to manage the interface identified by
741 * @p name and @p version.
742 *
743 * Note: in case @p name is invalid or isn't for the org_kde_plasma_window_management interface,
744 * the returned PlasmaWindowManagement will not be valid. Therefore it's recommended to call
745 * isValid on the created instance.
746 *
747 * @param name The name of the org_kde_plasma_window_management interface to bind
748 * @param version The version or the org_kde_plasma_window_management interface to use
749 * @param parent The parent for PlasmaWindowManagement
750 *
751 * @returns The created PlasmaWindowManagement.
752 * @since 5.4
753 **/
754 PlasmaWindowManagement *createPlasmaWindowManagement(quint32 name, quint32 version, QObject *parent = nullptr);
755 /**
756 * Creates a FakeInput and sets it up to manage the interface identified by
757 * @p name and @p version.
758 *
759 * Note: in case @p name is invalid or isn't for the org_kde_kwin_fake_input interface,
760 * the returned FakeInput will not be valid. Therefore it's recommended to call
761 * isValid on the created instance.
762 *
763 * @param name The name of the org_kde_kwin_fake_input interface to bind
764 * @param version The version or the org_kde_kwin_fake_input interface to use
765 * @param parent The parent for FakeInput
766 *
767 * @returns The created FakeInput.
768 * @since 5.4
769 **/
770 FakeInput *createFakeInput(quint32 name, quint32 version, QObject *parent = nullptr);
771 /**
772 * Creates a ShadowManager and sets it up to manage the interface identified by
773 * @p name and @p version.
774 *
775 * Note: in case @p name is invalid or isn't for the org_kde_kwin_shadow_manager interface,
776 * the returned ShadowManager will not be valid. Therefore it's recommended to call
777 * isValid on the created instance.
778 *
779 * @param name The name of the org_kde_kwin_shadow_manager interface to bind
780 * @param version The version or the org_kde_kwin_shadow_manager interface to use
781 * @param parent The parent for ShadowManager
782 *
783 * @returns The created ShadowManager.
784 * @since 5.4
785 **/
786 ShadowManager *createShadowManager(quint32 name, quint32 version, QObject *parent = nullptr);
787 /**
788 * Creates a BlurManager and sets it up to manage the interface identified by
789 * @p name and @p version.
790 *
791 * Note: in case @p name is invalid or isn't for the org_kde_kwin_blur_manager interface,
792 * the returned BlurManager will not be valid. Therefore it's recommended to call
793 * isValid on the created instance.
794 *
795 * @param name The name of the org_kde_kwin_blur_manager interface to bind
796 * @param version The version or the org_kde_kwin_blur_manager interface to use
797 * @param parent The parent for BlurManager
798 *
799 * @returns The created BlurManager.
800 * @since 5.5
801 **/
802 BlurManager *createBlurManager(quint32 name, quint32 version, QObject *parent = nullptr);
803 /**
804 * Creates a ContrastManager and sets it up to manage the interface identified by
805 * @p name and @p version.
806 *
807 * Note: in case @p name is invalid or isn't for the org_kde_kwin_contrast_manager interface,
808 * the returned ContrastManager will not be valid. Therefore it's recommended to call
809 * isValid on the created instance.
810 *
811 * @param name The name of the org_kde_kwin_contrast_manager interface to bind
812 * @param version The version or the org_kde_kwin_contrast_manager interface to use
813 * @param parent The parent for ContrastManager
814 *
815 * @returns The created ContrastManager.
816 * @since 5.5
817 **/
818 ContrastManager *createContrastManager(quint32 name, quint32 version, QObject *parent = nullptr);
819 /**
820 * Creates a SlideManager and sets it up to manage the interface identified by
821 * @p name and @p version.
822 *
823 * Note: in case @p name is invalid or isn't for the org_kde_kwin_slide_manager interface,
824 * the returned SlideManager will not be valid. Therefore it's recommended to call
825 * isValid on the created instance.
826 *
827 * @param name The name of the org_kde_kwin_slide_manager interface to bind
828 * @param version The version or the org_kde_kwin_slide_manager interface to use
829 * @param parent The parent for SlideManager
830 *
831 * @returns The created SlideManager.
832 * @since 5.5
833 **/
834 SlideManager *createSlideManager(quint32 name, quint32 version, QObject *parent = nullptr);
835 /**
836 * Creates a DpmsManager and sets it up to manage the interface identified by
837 * @p name and @p version.
838 *
839 * Note: in case @p name is invalid or isn't for the org_kde_kwin_dpms_manager interface,
840 * the returned DpmsManager will not be valid. Therefore it's recommended to call
841 * isValid on the created instance.
842 *
843 * @param name The name of the org_kde_kwin_dpms_manager interface to bind
844 * @param version The version or the org_kde_kwin_dpms_manager interface to use
845 * @param parent The parent for DpmsManager
846 *
847 * @returns The created DpmsManager.
848 * @since 5.5
849 **/
850 DpmsManager *createDpmsManager(quint32 name, quint32 version, QObject *parent = nullptr);
851 /**
852 * Creates a TextInputManager and sets it up to manage the interface identified by
853 * @p name and @p version.
854 *
855 * This factory method supports the following interfaces:
856 * @li wl_text_input_manager
857 * @li zwp_text_input_manager_v2
858 *
859 * If @p name is for one of the supported interfaces the corresponding manager will be created,
860 * otherwise @c null will be returned.
861 *
862 * @param name The name of the interface to bind
863 * @param version The version of the interface to use
864 * @param parent The parent for the TextInputManager
865 *
866 * @returns The created TextInputManager
867 * @since 5.23
868 **/
869 TextInputManager *createTextInputManager(quint32 name, quint32 version, QObject *parent = nullptr);
870 /**
871 * Creates an XdgShell and sets it up to manage the interface identified by
872 * @p name and @p version.
873 *
874 * This factory method supports the following interfaces:
875 * @li xdg_shell (Unstable version 5)
876 *
877 * If @p name is for one of the supported interfaces the corresponding shell will be created,
878 * otherwise @c null will be returned.
879 *
880 * @param name The name of the interface to bind
881 * @param version The version of the interface to use
882 * @param parent The parent for the XdgShell
883 *
884 * @returns The created XdgShell
885 * @since 5.25
886 **/
887 XdgShell *createXdgShell(quint32 name, quint32 version, QObject *parent = nullptr);
888 /**
889 * Creates a RelativePointerManager and sets it up to manage the interface identified by
890 * @p name and @p version.
891 *
892 * This factory method supports the following interfaces:
893 * @li zwp_relative_pointer_manager_v1
894 *
895 * If @p name is for one of the supported interfaces the corresponding manager will be created,
896 * otherwise @c null will be returned.
897 *
898 * @param name The name of the interface to bind
899 * @param version The version of the interface to use
900 * @param parent The parent for the RelativePointerManager
901 *
902 * @returns The created RelativePointerManager
903 * @since 5.28
904 **/
905 RelativePointerManager *createRelativePointerManager(quint32 name, quint32 version, QObject *parent = nullptr);
906 /**
907 * Creates a PointerGestures and sets it up to manage the interface identified by
908 * @p name and @p version.
909 *
910 * This factory method supports the following interfaces:
911 * @li zwp_pointer_gestures_v1
912 *
913 * If @p name is for one of the supported interfaces the corresponding manager will be created,
914 * otherwise @c null will be returned.
915 *
916 * @param name The name of the interface to bind
917 * @param version The version of the interface to use
918 * @param parent The parent for the PointerGestures
919 *
920 * @returns The created PointerGestures
921 * @since 5.29
922 **/
923 PointerGestures *createPointerGestures(quint32 name, quint32 version, QObject *parent = nullptr);
924 /**
925 * Creates a PointerConstraints and sets it up to manage the interface identified by
926 * @p name and @p version.
927 *
928 * This factory method supports the following interfaces:
929 * @li zwp_pointer_constraints_v1
930 *
931 * If @p name is for one of the supported interfaces the corresponding manager will be created,
932 * otherwise @c null will be returned.
933 *
934 * @param name The name of the interface to bind
935 * @param version The version of the interface to use
936 * @param parent The parent for the PointerConstraints
937 *
938 * @returns The created PointerConstraints
939 * @since 5.29
940 **/
941 PointerConstraints *createPointerConstraints(quint32 name, quint32 version, QObject *parent = nullptr);
942
943 /**
944 * Creates an XdgExporter and sets it up to manage the interface identified by
945 * @p name and @p version.
946 *
947 * This factory method supports the following interfaces:
948 * @li zxdg_exporter_v2
949 *
950 * If @p name is for one of the supported interfaces the corresponding manager will be created,
951 * otherwise @c null will be returned.
952 *
953 * @returns The created XdgExporter
954 * @since 5.40
955 */
956 XdgExporter *createXdgExporter(quint32 name, quint32 version, QObject *parent = nullptr);
957
958 /**
959 * Creates an XdgImporter and sets it up to manage the interface identified by
960 * @p name and @p version.
961 *
962 * This factory method supports the following interfaces:
963 * @li zxdg_importer_v2
964 *
965 * If @p name is for one of the supported interfaces the corresponding manager will be created,
966 * otherwise @c null will be returned.
967 *
968 * @returns The created XdgImporter
969 * @since 5.40
970 */
971 XdgImporter *createXdgImporter(quint32 name, quint32 version, QObject *parent = nullptr);
972
973 /**
974 * Creates an IdleInhibitManager and sets it up to manage the interface identified by
975 * @p name and @p version.
976 *
977 * This factory method supports the following interfaces:
978 * @li zwp_idle_inhibit_manager_v1
979 *
980 * If @p name is for one of the supported interfaces the corresponding manager will be created,
981 * otherwise @c null will be returned.
982 *
983 * @returns The created IdleInhibitManager
984 * @since 5.41
985 */
986 IdleInhibitManager *createIdleInhibitManager(quint32 name, quint32 version, QObject *parent = nullptr);
987
988 /**
989 * Creates a AppMenuManager and sets it up to manage the interface identified by
990 * @p name and @p version.
991 *
992 * Note: in case @p name is invalid or isn't for the org_kde_kwin_appmenu_manager interface,
993 * the returned AppMenuManager will not be valid. Therefore it's recommended to call
994 * isValid on the created instance.
995 *
996 * @param name The name of the org_kde_kwin_appmenu_manager interface to bind
997 * @param version The version or the org_kde_kwin_appmenu_manager interface to use
998 * @param parent The parent for AppMenuManager
999 *
1000 * @returns The created AppMenuManager.
1001 * @since 5.42
1002 **/
1003 AppMenuManager *createAppMenuManager(quint32 name, quint32 version, QObject *parent = nullptr);
1004
1005 /**
1006 * Creates an XdgOutputManager and sets it up to manage the interface identified by
1007 * @p name and @p version.
1008 *
1009 * Note: in case @p name is invalid or isn't for the zxdg_output_manager_v1 interface,
1010 * the returned XdgOutputManager will not be valid. Therefore it's recommended to call
1011 * isValid on the created instance.
1012 *
1013 * @param name The name of the zxdg_output_manager_v1 interface to bind
1014 * @param version The version or the zxdg_output_manager_v1 interface to use
1015 * @param parent The parent for XdgOuptutManager
1016 *
1017 * @returns The created XdgOuptutManager.
1018 * @since 5.47
1019 **/
1020 XdgOutputManager *createXdgOutputManager(quint32 name, quint32 version, QObject *parent = nullptr);
1021
1022 /**
1023 * Creates an XdgDecorationManager and sets it up to manage the interface identified by
1024 * @p name and @p version.
1025 *
1026 * Note: in case @p name is invalid or isn't for the zxdg_decoration_manager_v1 interface,
1027 * the returned XdgDecorationManager will not be valid. Therefore it's recommended to call
1028 * isValid on the created instance.
1029 *
1030 * @param name The name of the zxdg_decoration_manager_v1 interface to bind
1031 * @param version The version or the zxdg_decoration_manager_v1 interface to use
1032 * @param parent The parent for XdgDecorationManager
1033 *
1034 * @returns The created XdgDecorationManager.
1035 * @since 5.54
1036 **/
1037 XdgDecorationManager *createXdgDecorationManager(quint32 name, quint32 version, QObject *parent = nullptr);
1038
1039 ///@}
1040
1041 /**
1042 * cast operator to the low-level Wayland @c wl_registry
1043 **/
1044 operator wl_registry *();
1045 /**
1046 * cast operator to the low-level Wayland @c wl_registry
1047 **/
1048 operator wl_registry *() const;
1049 /**
1050 * @returns access to the low-level Wayland @c wl_registry
1051 **/
1052 wl_registry *registry();
1053
1054Q_SIGNALS:
1055 /**
1056 * @name Interface announced signals.
1057 **/
1058 ///@{
1059 /**
1060 * Emitted whenever a wl_compositor interface gets announced.
1061 * @param name The name for the announced interface
1062 * @param version The maximum supported version of the announced interface
1063 **/
1064 void compositorAnnounced(quint32 name, quint32 version);
1065 /**
1066 * Emitted whenever a wl_shell interface gets announced.
1067 * @param name The name for the announced interface
1068 * @param version The maximum supported version of the announced interface
1069 **/
1070 void shellAnnounced(quint32 name, quint32 version);
1071 /**
1072 * Emitted whenever a wl_seat interface gets announced.
1073 * @param name The name for the announced interface
1074 * @param version The maximum supported version of the announced interface
1075 **/
1076 void seatAnnounced(quint32 name, quint32 version);
1077 /**
1078 * Emitted whenever a wl_shm interface gets announced.
1079 * @param name The name for the announced interface
1080 * @param version The maximum supported version of the announced interface
1081 **/
1082 void shmAnnounced(quint32 name, quint32 version);
1083 /**
1084 * Emitted whenever a wl_subcompositor interface gets announced.
1085 * @param name The name for the announced interface
1086 * @param version The maximum supported version of the announced interface
1087 **/
1088 void subCompositorAnnounced(quint32 name, quint32 version);
1089 /**
1090 * Emitted whenever a wl_output interface gets announced.
1091 * @param name The name for the announced interface
1092 * @param version The maximum supported version of the announced interface
1093 **/
1094 void outputAnnounced(quint32 name, quint32 version);
1095 /**
1096 * Emitted whenever a wl_data_device_manager interface gets announced.
1097 * @param name The name for the announced interface
1098 * @param version The maximum supported version of the announced interface
1099 **/
1100 void dataDeviceManagerAnnounced(quint32 name, quint32 version);
1101
1102 /**
1103 * Emitted whenever a org_kde_plasma_shell interface gets announced.
1104 * @param name The name for the announced interface
1105 * @param version The maximum supported version of the announced interface
1106 * @since 5.4
1107 **/
1108 void plasmaShellAnnounced(quint32 name, quint32 version);
1109 /**
1110 * Emitted whenever a org_kde_plasma_activation_feedback interface gets announced.
1111 * @param name The name for the announced interface
1112 * @param version The maximum supported version of the announced interface
1113 * @since 5.83
1114 **/
1115 void plasmaActivationFeedbackAnnounced(quint32 name, quint32 version);
1116 /**
1117 * Emitted whenever a org_kde_plasma_virtual_desktop_management interface gets announced.
1118 * @param name The name for the announced interface
1119 * @param version The maximum supported version of the announced interface
1120 * @since 5.52
1121 **/
1122 void plasmaVirtualDesktopManagementAnnounced(quint32 name, quint32 version);
1123 /**
1124 * Emitted whenever a org_kde_plasma_window_management interface gets announced.
1125 * @param name The name for the announced interface
1126 * @param version The maximum supported version of the announced interface
1127 * @since 5.4
1128 **/
1129 void plasmaWindowManagementAnnounced(quint32 name, quint32 version);
1130 /**
1131 * Emitted whenever a org_kde_kwin_fake_input interface gets announced.
1132 * @param name The name for the announced interface
1133 * @param version The maximum supported version of the announced interface
1134 * @since 5.4
1135 **/
1136 void fakeInputAnnounced(quint32 name, quint32 version);
1137 /**
1138 * Emitted whenever a org_kde_kwin_shadow_manager interface gets announced.
1139 * @param name The name for the announced interface
1140 * @param version The maximum supported version of the announced interface
1141 * @since 5.4
1142 **/
1143 void shadowAnnounced(quint32 name, quint32 version);
1144 /**
1145 * Emitted whenever a org_kde_kwin_blur_manager interface gets announced.
1146 * @param name The name for the announced interface
1147 * @param version The maximum supported version of the announced interface
1148 * @since 5.5
1149 **/
1150 void blurAnnounced(quint32 name, quint32 version);
1151 /**
1152 * Emitted whenever a org_kde_kwin_contrast_manager interface gets announced.
1153 * @param name The name for the announced interface
1154 * @param version The maximum supported version of the announced interface
1155 * @since 5.5
1156 **/
1157 void contrastAnnounced(quint32 name, quint32 version);
1158 /**
1159 * Emitted whenever a org_kde_kwin_slide_manager interface gets announced.
1160 * @param name The name for the announced interface
1161 * @param version The maximum supported version of the announced interface
1162 * @since 5.5
1163 **/
1164 void slideAnnounced(quint32 name, quint32 version);
1165 /**
1166 * Emitted whenever a org_kde_kwin_dpms_manager interface gets announced.
1167 * @param name The name for the announced interface
1168 * @param version The maximum supported version of the announced interface
1169 * @since 5.5
1170 **/
1171 void dpmsAnnounced(quint32 name, quint32 version);
1172 /**
1173 * Emitted whenever a wl_text_input_manager interface gets announced.
1174 * @param name The name for the announced interface
1175 * @param version The maximum supported version of the announced interface
1176 * @since 5.23
1177 **/
1178 void textInputManagerUnstableV0Announced(quint32 name, quint32 version);
1179 /**
1180 * Emitted whenever a zwp_text_input_manager_v2 interface gets announced.
1181 * @param name The name for the announced interface
1182 * @param version The maximum supported version of the announced interface
1183 * @since 5.23
1184 **/
1185 void textInputManagerUnstableV2Announced(quint32 name, quint32 version);
1186 /**
1187 * Emitted whenever a xdg_shell (unstable version 5) interface gets announced.
1188 * @param name The name for the announced interface
1189 * @param version The maximum supported version of the announced interface
1190 * @since 5.25
1191 **/
1192 void xdgShellUnstableV5Announced(quint32 name, quint32 version);
1193 /**
1194 * Emitted whenever a zxdg_shell_v6 (unstable version 6) interface gets announced.
1195 * @param name The name for the announced interface
1196 * @param version The maximum supported version of the announced interface
1197 * @since 5.25
1198 **/
1199 void xdgShellUnstableV6Announced(quint32 name, quint32 version);
1200
1201 /**
1202 * Emitted whenever a zwp_relative_pointer_manager_v1 interface gets announced.
1203 * @param name The name for the announced interface
1204 * @param version The maximum supported version of the announced interface
1205 * @since 5.28
1206 **/
1207 void relativePointerManagerUnstableV1Announced(quint32 name, quint32 version);
1208 /**
1209 * Emitted whenever a zwp_pointer_gestures_v1 interface gets announced.
1210 * @param name The name for the announced interface
1211 * @param version The maximum supported version of the announced interface
1212 * @since 5.29
1213 **/
1214 void pointerGesturesUnstableV1Announced(quint32 name, quint32 version);
1215 /**
1216 * Emitted whenever a zwp_pointer_constraints_v1 interface gets announced.
1217 * @param name The name for the announced interface
1218 * @param version The maximum supported version of the announced interface
1219 * @since 5.29
1220 **/
1221 void pointerConstraintsUnstableV1Announced(quint32 name, quint32 version);
1222
1223 /**
1224 * Emitted whenever a zxdg_exporter_v2 interface gets announced.
1225 * @param name The name for the announced interface
1226 * @param version The maximum supported version of the announced interface
1227 * @since 5.40
1228 */
1229 void exporterUnstableV2Announced(quint32 name, quint32 version);
1230
1231 /**
1232 * Emitted whenever a zxdg_importer_v2 interface gets announced.
1233 * @param name The name for the announced interface
1234 * @param version The maximum supported version of the announced interface
1235 * @since 5.40
1236 */
1237 void importerUnstableV2Announced(quint32 name, quint32 version);
1238
1239 /**
1240 * Emitted whenever a zwp_idle_inhibit_manager_v1 interface gets announced.
1241 * @param name The name for the announced interface
1242 * @param version The maximum supported version of the announced interface
1243 * @since 5.41
1244 */
1245 void idleInhibitManagerUnstableV1Announced(quint32 name, quint32 version);
1246
1247 /**
1248 * Emitted whenever a org_kde_kwin_appmenu_manager interface gets announced.
1249 * @param name The name for the announced interface
1250 * @param version The maximum supported version of the announced interface
1251 * @since 5.42
1252 */
1253 void appMenuAnnounced(quint32 name, quint32 version);
1254
1255 /**
1256 * Emitted whenever a zxdg_output_v1 interface gets announced.
1257 * @param name The name for the announced interface
1258 * @param version The maximum supported version of the announced interface
1259 * @since 5.47
1260 */
1261 void xdgOutputAnnounced(quint32 name, quint32 version);
1262
1263 /**
1264 * Emitted whenever a xdg_wm_base (stable xdg shell) interface gets announced.
1265 * @param name The name for the announced interface
1266 * @param version The maximum supported version of the announced interface
1267 * @since 5.48
1268 **/
1269 void xdgShellStableAnnounced(quint32 name, quint32 version);
1270
1271 /**
1272 * Emitted whenever a zxdg_decoration_manager_v1 interface gets announced.
1273 * @param name The name for the announced interface
1274 * @param version The maximum supported version of the announced interface
1275 * @since 5.54
1276 **/
1277 void xdgDecorationAnnounced(quint32 name, quint32 version);
1278
1279 ///@}
1280
1281 /**
1282 * @name Interface removed signals.
1283 **/
1284 ///@{
1285 /**
1286 * Emitted whenever a wl_compositor interface gets removed.
1287 * @param name The name for the removed interface
1288 **/
1289 void compositorRemoved(quint32 name);
1290 /**
1291 * Emitted whenever a wl_shell interface gets removed.
1292 * @param name The name for the removed interface
1293 **/
1294 void shellRemoved(quint32 name);
1295 /**
1296 * Emitted whenever a wl_seat interface gets removed.
1297 * @param name The name for the removed interface
1298 **/
1299 void seatRemoved(quint32 name);
1300 /**
1301 * Emitted whenever a wl_shm interface gets removed.
1302 * @param name The name for the removed interface
1303 **/
1304 void shmRemoved(quint32 name);
1305 /**
1306 * Emitted whenever a wl_subcompositor interface gets removed.
1307 * @param name The name for the removed interface
1308 **/
1309 void subCompositorRemoved(quint32 name);
1310 /**
1311 * Emitted whenever a wl_output interface gets removed.
1312 * @param name The name for the removed interface
1313 **/
1314 void outputRemoved(quint32 name);
1315 /**
1316 * Emitted whenever a wl_data_device_manager interface gets removed.
1317 * @param name The name for the removed interface
1318 **/
1319 void dataDeviceManagerRemoved(quint32 name);
1320 /**
1321 * Emitted whenever a org_kde_plasma_shell interface gets removed.
1322 * @param name The name for the removed interface
1323 * @since 5.4
1324 **/
1325 void plasmaShellRemoved(quint32 name);
1326 /**
1327 * Emitted whenever a org_kde_plasma_activation_feedback interface gets removed.
1328 * @param name The name for the removed interface
1329 * @since 5.83
1330 **/
1331 void plasmaActivationFeedbackRemoved(quint32 name);
1332 /**
1333 * Emitted whenever a org_kde_plasma_virtual_desktop_management interface gets removed.
1334 * @param name The name for the removed interface
1335 * @since 5.52
1336 **/
1337 void plasmaVirtualDesktopManagementRemoved(quint32 name);
1338 /**
1339 * Emitted whenever a org_kde_plasma_window_management interface gets removed.
1340 * @param name The name for the removed interface
1341 * @since 5.4
1342 **/
1343 void plasmaWindowManagementRemoved(quint32 name);
1344 /**
1345 * Emitted whenever a org_kde_kwin_fake_input interface gets removed.
1346 * @param name The name for the removed interface
1347 * @since 5.4
1348 **/
1349 void fakeInputRemoved(quint32 name);
1350 /**
1351 * Emitted whenever a org_kde_kwin_shadow_manager interface gets removed.
1352 * @param name The name for the removed interface
1353 * @since 5.4
1354 **/
1355 void shadowRemoved(quint32 name);
1356 /**
1357 * Emitted whenever a org_kde_kwin_blur_manager interface gets removed.
1358 * @param name The name for the removed interface
1359 * @since 5.5
1360 **/
1361 void blurRemoved(quint32 name);
1362 /**
1363 * Emitted whenever a org_kde_kwin_contrast_manager interface gets removed.
1364 * @param name The name for the removed interface
1365 * @since 5.5
1366 **/
1367 void contrastRemoved(quint32 name);
1368 /**
1369 * Emitted whenever a org_kde_kwin_slide_manager interface gets removed.
1370 * @param name The name for the removed interface
1371 * @since 5.5
1372 **/
1373 void slideRemoved(quint32 name);
1374 /**
1375 * Emitted whenever a org_kde_kwin_dpms_manager interface gets removed.
1376 * @param name The name for the removed interface
1377 * @since 5.5
1378 **/
1379 void dpmsRemoved(quint32 name);
1380 /**
1381 * Emitted whenever a wl_text_input_manager interface gets removed.
1382 * @param name The name for the removed interface
1383 * @since 5.23
1384 **/
1385 void textInputManagerUnstableV0Removed(quint32 name);
1386 /**
1387 * Emitted whenever a zwp_text_input_manager_v2 interface gets removed.
1388 * @param name The name for the removed interface
1389 * @since 5.23
1390 **/
1391 void textInputManagerUnstableV2Removed(quint32 name);
1392 /**
1393 * Emitted whenever an xdg_shell (unstable version 5) interface gets removed.
1394 * @param name The name for the removed interface
1395 * @since 5.25
1396 **/
1397 void xdgShellUnstableV5Removed(quint32 name);
1398 /**
1399 * Emitted whenever an xdg_shell (unstable version 5) interface gets removed.
1400 * @param name The name for the removed interface
1401 * @since 5.25
1402 **/
1403 void xdgShellUnstableV6Removed(quint32 name);
1404 /**
1405 * Emitted whenever a zwp_relative_pointer_manager_v1 interface gets removed.
1406 * @param name The name for the removed interface
1407 * @since 5.28
1408 **/
1409 void relativePointerManagerUnstableV1Removed(quint32 name);
1410 /**
1411 * Emitted whenever a zwp_pointer_gestures_v1 interface gets removed.
1412 * @param name The name for the removed interface
1413 * @since 5.29
1414 **/
1415 void pointerGesturesUnstableV1Removed(quint32 name);
1416 /**
1417 * Emitted whenever a zwp_pointer_constraints_v1 interface gets removed.
1418 * @param name The name for the removed interface
1419 * @since 5.29
1420 **/
1421 void pointerConstraintsUnstableV1Removed(quint32 name);
1422
1423 /**
1424 * Emitted whenever a zxdg_exporter_v2 interface gets removed.
1425 * @param name The name for the removed interface
1426 * @since 5.40
1427 **/
1428 void exporterUnstableV2Removed(quint32 name);
1429
1430 /**
1431 * Emitted whenever a zxdg_importer_v2 interface gets removed.
1432 * @param name The name for the removed interface
1433 * @since 5.40
1434 **/
1435 void importerUnstableV2Removed(quint32 name);
1436
1437 /**
1438 * Emitted whenever a zwp_idle_inhibit_manager_v1 interface gets removed.
1439 * @param name The name of the removed interface
1440 * @since 5.41
1441 **/
1442 void idleInhibitManagerUnstableV1Removed(quint32 name);
1443
1444 /**
1445 * Emitted whenever a org_kde_kwin_appmenu_manager gets removed.
1446 * @param name The name of the removed interface
1447 * @since 5.42
1448 **/
1449 void appMenuRemoved(quint32 name);
1450
1451 /**
1452 * Emitted whenever a zxdg_output_v1 gets removed.
1453 * @param name The name of the removed interface
1454 * @since 5.47
1455 **/
1456 void xdgOutputRemoved(quint32 name);
1457 /**
1458 * Emitted whenever an xdg_wm_base (stable xdgshell) interface gets removed.
1459 * @param name The name for the removed interface
1460 * @since 5.48
1461 **/
1462 void xdgShellStableRemoved(quint32 name);
1463
1464 /**
1465 * Emitted whenever a zxdg_decoration_manager_v1 gets removed.
1466 * @param name The name of the removed interface
1467 * @since 5.54
1468 **/
1469 void xdgDecorationRemoved(quint32 name);
1470
1471 ///@}
1472 /**
1473 * Generic announced signal which gets emitted whenever an interface gets
1474 * announced.
1475 *
1476 * This signal is emitted before the dedicated signals are handled. If one
1477 * wants to know about one of the well-known interfaces use the dedicated
1478 * signals instead. Especially the bind methods might fail before the dedicated
1479 * signals are emitted.
1480 *
1481 * @param interface The interface (e.g. wl_compositor) which is announced
1482 * @param name The name for the announced interface
1483 * @param version The maximum supported version of the announced interface
1484 **/
1485 void interfaceAnnounced(QByteArray interface, quint32 name, quint32 version);
1486 /**
1487 * Generic removal signal which gets emitted whenever an interface gets removed.
1488 *
1489 * This signal is emitted after the dedicated signals are handled.
1490 *
1491 * @param name The name for the removed interface
1492 **/
1493 void interfaceRemoved(quint32 name);
1494 /**
1495 * Emitted when the Wayland display is done flushing the initial interface
1496 * callbacks, announcing wl_display properties. This can be used to compress
1497 * events. Note that this signal is emitted only after announcing interfaces,
1498 * such as outputs, but not after receiving callbacks of interface properties,
1499 * such as the output's geometry, modes, etc..
1500 * This signal is emitted from the wl_display_sync callback.
1501 **/
1502 void interfacesAnnounced();
1503
1504Q_SIGNALS:
1505 /*
1506 * Emitted when the registry has been destroyed rather than released
1507 */
1508 void registryDestroyed();
1509
1510private:
1511 class Private;
1512 QScopedPointer<Private> d;
1513};
1514
1515}
1516}
1517
1518#endif
1519

source code of kwayland/src/client/registry.h