1/*
2 SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6#ifndef WAYLAND_PLASMAWINDOWMANAGEMENT_H
7#define WAYLAND_PLASMAWINDOWMANAGEMENT_H
8
9#include <QIcon>
10#include <QObject>
11#include <QSize>
12
13#include "KWayland/Client/kwaylandclient_export.h"
14
15struct org_kde_plasma_activation_feedback;
16struct org_kde_plasma_activation;
17struct org_kde_plasma_window_management;
18struct org_kde_plasma_window;
19
20namespace KWayland
21{
22namespace Client
23{
24class EventQueue;
25class Output;
26class PlasmaActivationFeedback;
27class PlasmaWindow;
28class PlasmaWindowModel;
29class Surface;
30
31/**
32 * @short Wrapper for the org_kde_plasma_window_management interface.
33 *
34 * PlasmaWindowManagement is a privileged interface. A Wayland compositor is allowed to ignore
35 * any requests. The PlasmaWindowManagement allows to get information about the overall windowing
36 * system. It allows to see which windows are currently available and thus is the base to implement
37 * e.g. a task manager.
38 *
39 * This class provides a convenient wrapper for the org_kde_plasma_window_management interface.
40 * It's main purpose is to create a PlasmaWindowManagementSurface.
41 *
42 * To use this class one needs to interact with the Registry. There are two
43 * possible ways to create the Shell interface:
44 * @code
45 * PlasmaWindowManagement *s = registry->createPlasmaWindowManagement(name, version);
46 * @endcode
47 *
48 * This creates the PlasmaWindowManagement and sets it up directly. As an alternative this
49 * can also be done in a more low level way:
50 * @code
51 * PlasmaWindowManagement *s = new PlasmaWindowManagement;
52 * s->setup(registry->bindPlasmaWindowManagement(name, version));
53 * @endcode
54 *
55 * The PlasmaWindowManagement can be used as a drop-in replacement for any org_kde_plasma_window_management
56 * pointer as it provides matching cast operators.
57 *
58 * @see Registry
59 * @see PlasmaWindowManagementSurface
60 **/
61class KWAYLANDCLIENT_EXPORT PlasmaWindowManagement : public QObject
62{
63 Q_OBJECT
64public:
65 explicit PlasmaWindowManagement(QObject *parent = nullptr);
66 ~PlasmaWindowManagement() override;
67
68 /**
69 * @returns @c true if managing a org_kde_plasma_window_management.
70 **/
71 bool isValid() const;
72 /**
73 * Releases the org_kde_plasma_window_management interface.
74 * After the interface has been released the PlasmaWindowManagement instance is no
75 * longer valid and can be setup with another org_kde_plasma_window_management interface.
76 *
77 * Right before the interface is released the signal interfaceAboutToBeReleased is emitted.
78 * @see interfaceAboutToBeReleased
79 **/
80 void release();
81 /**
82 * Destroys the data held by this PlasmaWindowManagement.
83 * This method is supposed to be used when the connection to the Wayland
84 * server goes away. Once the connection becomes invalid, it's not
85 * possible to call release anymore as that calls into the Wayland
86 * connection and the call would fail. This method cleans up the data, so
87 * that the instance can be deleted or set up to a new org_kde_plasma_window_management interface
88 * once there is a new connection available.
89 *
90 * This method is automatically invoked when the Registry which created this
91 * PlasmaWindowManagement gets destroyed.
92 *
93 * Right before the data is destroyed, the signal interfaceAboutToBeDestroyed is emitted.
94 *
95 * @see release
96 * @see interfaceAboutToBeDestroyed
97 **/
98 void destroy();
99 /**
100 * Setup this Shell to manage the @p shell.
101 * When using Registry::createShell there is no need to call this
102 * method.
103 **/
104 void setup(org_kde_plasma_window_management *shell);
105
106 /**
107 * Sets the @p queue to use for creating a Surface.
108 **/
109 void setEventQueue(EventQueue *queue);
110 /**
111 * @returns The event queue to use for creating a Surface.
112 **/
113 EventQueue *eventQueue();
114
115 operator org_kde_plasma_window_management *();
116 operator org_kde_plasma_window_management *() const;
117
118 /**
119 * Whether the system is currently showing the desktop.
120 * This means that the system focuses on the desktop and hides other windows.
121 * @see setShowingDesktop
122 * @see showDesktop
123 * @see hideDesktop
124 * @see showingDesktopChanged
125 **/
126 bool isShowingDesktop() const;
127 /**
128 * Requests to change the showing desktop state to @p show.
129 * @see isShowingDesktop
130 * @see showDesktop
131 * @see hideDesktop
132 **/
133 void setShowingDesktop(bool show);
134 /**
135 * Same as calling setShowingDesktop with @c true.
136 * @see setShowingDesktop
137 **/
138 void showDesktop();
139 /**
140 * Same as calling setShowingDesktop with @c false.
141 * @see setShowingDesktop
142 **/
143 void hideDesktop();
144
145 /**
146 * @returns All windows currently known to the PlasmaWindowManagement
147 * @see windowCreated
148 **/
149 QList<PlasmaWindow *> windows() const;
150 /**
151 * @returns The currently active PlasmaWindow, the PlasmaWindow which
152 * returns @c true in {@link PlasmaWindow::isActive} or @c nullptr in case
153 * there is no active window.
154 **/
155 PlasmaWindow *activeWindow() const;
156 /**
157 * Factory method to create a PlasmaWindowModel.
158 * @returns a new created PlasmaWindowModel
159 **/
160 PlasmaWindowModel *createWindowModel();
161
162 /**
163 * @returns windows stacking order
164 *
165 * @since 5.73
166 */
167 QList<QByteArray> stackingOrderUuids() const;
168
169Q_SIGNALS:
170 /**
171 * This signal is emitted right before the interface is released.
172 **/
173 void interfaceAboutToBeReleased();
174 /**
175 * This signal is emitted right before the data is destroyed.
176 **/
177 void interfaceAboutToBeDestroyed();
178 /**
179 * The showing desktop state changed.
180 * @see isShowingDesktop
181 **/
182 void showingDesktopChanged(bool);
183
184 /**
185 * A new @p window got created.
186 * @see windows
187 **/
188 void windowCreated(KWayland::Client::PlasmaWindow *window);
189 /**
190 * The active window changed.
191 * @see activeWindow
192 **/
193 void activeWindowChanged();
194
195 /**
196 * The corresponding global for this interface on the Registry got removed.
197 *
198 * This signal gets only emitted if the Compositor got created by
199 * Registry::createPlasmaWindowManagement
200 *
201 * @since 5.5
202 **/
203 void removed();
204
205 /**
206 * The stacking order uuids changed
207 * @since 5.73
208 **/
209 void stackingOrderUuidsChanged();
210
211public:
212 class Private;
213
214private:
215 QScopedPointer<Private> d;
216};
217
218/**
219 * @short Wrapper for the org_kde_plasma_window interface.
220 *
221 * A PlasmaWindow gets created by the PlasmaWindowManagement and announced through
222 * the {@link PlasmaWindowManagement::windowCreated} signal. The PlasmaWindow encapsulates
223 * state about a window managed by the Wayland server and allows to request state changes.
224 *
225 * The PlasmaWindow will be automatically deleted when the PlasmaWindow gets unmapped.
226 *
227 * This class is a convenient wrapper for the org_kde_plasma_window interface.
228 * The PlasmaWindow gets created by PlasmaWindowManagement.
229 *
230 * @see PlasmaWindowManager
231 **/
232class KWAYLANDCLIENT_EXPORT PlasmaWindow : public QObject
233{
234 Q_OBJECT
235public:
236 ~PlasmaWindow() override;
237
238 /**
239 * Releases the org_kde_plasma_window interface.
240 * After the interface has been released the PlasmaWindow instance is no
241 * longer valid and can be setup with another org_kde_plasma_window interface.
242 **/
243 void release();
244 /**
245 * Destroys the data held by this PlasmaWindow.
246 * This method is supposed to be used when the connection to the Wayland
247 * server goes away. If the connection is not valid anymore, it's not
248 * possible to call release anymore as that calls into the Wayland
249 * connection and the call would fail. This method cleans up the data, so
250 * that the instance can be deleted or set up to a new org_kde_plasma_window interface
251 * once there is a new connection available.
252 *
253 * It is suggested to connect this method to ConnectionThread::connectionDied:
254 * @code
255 * connect(connection, &ConnectionThread::connectionDied, source, &PlasmaWindow::destroy);
256 * @endcode
257 *
258 * @see release
259 **/
260 void destroy();
261 /**
262 * @returns @c true if managing a org_kde_plasma_window.
263 **/
264 bool isValid() const;
265
266 operator org_kde_plasma_window *();
267 operator org_kde_plasma_window *() const;
268
269 /**
270 * @returns the window title.
271 * @see titleChanged
272 **/
273 QString title() const;
274 /**
275 * @returns the application id which should reflect the name of a desktop file.
276 * @see appIdChanged
277 **/
278 QString appId() const;
279 /**
280 * @returns Whether the window is currently the active Window.
281 * @see activeChanged
282 **/
283 bool isActive() const;
284 /**
285 * @returns Whether the window is fullscreen
286 * @see fullscreenChanged
287 **/
288 bool isFullscreen() const;
289 /**
290 * @returns Whether the window is kept above other windows.
291 * @see keepAboveChanged
292 **/
293 bool isKeepAbove() const;
294 /**
295 * @returns Whether the window is kept below other window
296 * @see keepBelowChanged
297 **/
298 bool isKeepBelow() const;
299 /**
300 * @returns Whether the window is currently minimized
301 * @see minimizedChanged
302 **/
303 bool isMinimized() const;
304 /**
305 * @returns Whether the window is maximized.
306 * @see maximizedChanged
307 **/
308 bool isMaximized() const;
309 /**
310 * @returns Whether the window is shown on all desktops.
311 * @see virtualDesktop
312 * @see onAllDesktopsChanged
313 **/
314 bool isOnAllDesktops() const;
315 /**
316 * @returns Whether the window is demanding attention.
317 * @see demandsAttentionChanged
318 **/
319 bool isDemandingAttention() const;
320 /**
321 * @returns Whether the window can be closed.
322 * @see closeableChanged
323 **/
324 bool isCloseable() const;
325 /**
326 * @returns Whether the window can be maximized.
327 * @see maximizeableChanged
328 **/
329 bool isMaximizeable() const;
330 /**
331 * @returns Whether the window can be minimized.
332 * @see minimizeableChanged
333 **/
334 bool isMinimizeable() const;
335 /**
336 * @returns Whether the window can be set to fullscreen.
337 * @see fullscreenableChanged
338 **/
339 bool isFullscreenable() const;
340 /**
341 * @returns Whether the window should be ignored by a task bar.
342 * @see skipTaskbarChanged
343 **/
344 bool skipTaskbar() const;
345 /**
346 * @returns Whether the window should be ignored by a switcher.
347 * @see skipSwitcherChanged
348 **/
349 bool skipSwitcher() const;
350 /**
351 * @returns The icon of the window.
352 * @see iconChanged
353 **/
354 QIcon icon() const;
355 /**
356 * @returns Whether the window can be set to the shaded state.
357 * @see isShaded
358 * @see shadeableChanged
359 * @since 5.22
360 */
361 bool isShadeable() const;
362 /**
363 * @returns Whether the window is shaded, that is reduced to the window decoration
364 * @see shadedChanged
365 * @since 5.22
366 */
367 bool isShaded() const;
368 /**
369 * @returns Whether the window can be moved.
370 * @see movableChanged
371 * @since 5.22
372 */
373 bool isMovable() const;
374 /**
375 * @returns Whether the window can be resized.
376 * @see resizableChanged
377 * @since 5.22
378 */
379 bool isResizable() const;
380 /**
381 * @returns Whether the virtual desktop can be changed.
382 * @see virtualDesktopChangeableChanged
383 * @since 5.22
384 */
385 bool isVirtualDesktopChangeable() const;
386 /**
387 * @returns The process id this window belongs to.
388 * or 0 if unset
389 * @since 5.35
390 */
391 quint32 pid() const;
392 /**
393 * @returns The X11 resource name for this window.
394 * This is only set for X11 windows.
395 * @since 5.94
396 */
397 QString resourceName() const;
398
399 /**
400 * Requests to activate the window.
401 **/
402 void requestActivate();
403 /**
404 * Requests to close the window.
405 **/
406 void requestClose();
407 /**
408 * Requests to start an interactive window move operation.
409 * @since 5.22
410 */
411 void requestMove();
412 /**
413 * Requests to start an interactive resize operation.
414 * @since 5.22
415 */
416 void requestResize();
417
418 /**
419 * Requests the window at this model row index have its keep above state toggled.
420 * @since 5.35
421 */
422 void requestToggleKeepAbove();
423
424 /**
425 * Requests the window at this model row index have its keep below state toggled.
426 * @since 5.35
427 */
428 void requestToggleKeepBelow();
429
430 /**
431 * Requests the window at this model row index have its minimized state toggled.
432 */
433 void requestToggleMinimized();
434
435 /**
436 * Requests the window at this model row index have its maximized state toggled.
437 */
438 void requestToggleMaximized();
439
440 /**
441 * Requests the window at this model row index have its fullscreen state toggled.
442 * @since 6.0
443 */
444 void requestToggleFullscreen();
445
446 /**
447 * Sets the geometry of the taskbar entry for this window
448 * relative to a panel in particular
449 * @since 5.5
450 */
451 void setMinimizedGeometry(Surface *panel, const QRect &geom);
452
453 /**
454 * Remove the task geometry information for a particular panel
455 * @since 5.5
456 */
457 void unsetMinimizedGeometry(Surface *panel);
458
459 /**
460 * Requests the window at this model row index have its shaded state toggled.
461 * @since 5.22
462 */
463 void requestToggleShaded();
464
465 /**
466 * A unique identifier for the window
467 *
468 * @see QUuid
469 * @since 5.73
470 */
471 QByteArray uuid() const;
472
473 /**
474 * The parent window of this PlasmaWindow.
475 *
476 * If there is a parent window, this window is a transient window for the
477 * parent window. If this method returns a null PlasmaWindow it means this
478 * window is a top level window and is not a transient window.
479 *
480 * @see parentWindowChanged
481 * @since 5.24
482 **/
483 QPointer<PlasmaWindow> parentWindow() const;
484
485 /**
486 * @returns The window geometry in absolute coordinates.
487 * @see geometryChanged
488 * @since 5.25
489 **/
490 QRect geometry() const;
491
492 /**
493 * Ask the server to make the window enter a virtual desktop.
494 * The server may or may not consent.
495 * A window can enter more than one virtual desktop.
496 *
497 * @since 5.52
498 */
499 void requestEnterVirtualDesktop(const QString &id);
500
501 /**
502 * Make the window enter a new virtual desktop. If the server consents the request,
503 * it will create a new virtual desktop and assign the window to it.
504 * @since 5.52
505 */
506 void requestEnterNewVirtualDesktop();
507
508 /**
509 * Ask the server to make the window the window exit a virtual desktop.
510 * The server may or may not consent.
511 * If it exits all desktops it will be considered on all of them.
512 *
513 * @since 5.52
514 */
515 void requestLeaveVirtualDesktop(const QString &id);
516
517 /**
518 * Return all the virtual desktop ids this window is associated to.
519 * When a desktop gets deleted, it will be automatically removed from this list.
520 * If this list is empty, assume it's on all desktops.
521 *
522 * @since 5.52
523 */
524 QStringList plasmaVirtualDesktops() const;
525
526 /**
527 * Ask the server to make the window enter an activity.
528 * The server may or may not consent.
529 * A window can enter more than one activity.
530 *
531 * @since 5.81
532 */
533 void requestEnterActivity(const QString &id);
534
535 /**
536 * Ask the server to make the window exit an activity.
537 * The server may or may not consent.
538 * If it exits all activities it will be considered on all of them.
539 *
540 * @since 5.81
541 */
542 void requestLeaveActivity(const QString &id);
543
544 /**
545 * Return all the activity ids this window is associated to.
546 * When an activity gets deleted, it will be automatically removed from this list.
547 * If this list is empty, assume it's on all activities.
548 *
549 * @since 5.81
550 */
551 QStringList plasmaActivities() const;
552
553 /**
554 * Return the D-BUS service name for a window's
555 * application menu.
556 *
557 * @since 5.69
558 */
559 QString applicationMenuServiceName() const;
560 /**
561 * Return the D-BUS object path to a windows's
562 * application menu.
563 *
564 * @since 5.69
565 */
566 QString applicationMenuObjectPath() const;
567
568 /**
569 * Sends the current window to @p output
570 *
571 * @since 5.86
572 */
573 void sendToOutput(KWayland::Client::Output *output) const;
574
575Q_SIGNALS:
576 /**
577 * The window title changed.
578 * @see title
579 **/
580 void titleChanged();
581 /**
582 * The application id changed.
583 * @see appId
584 **/
585 void appIdChanged();
586 /**
587 * The window became active or inactive.
588 * @see isActive
589 **/
590 void activeChanged();
591 /**
592 * The fullscreen state changed.
593 * @see isFullscreen
594 **/
595 void fullscreenChanged();
596 /**
597 * The keep above state changed.
598 * @see isKeepAbove
599 **/
600 void keepAboveChanged();
601 /**
602 * The keep below state changed.
603 * @see isKeepBelow
604 **/
605 void keepBelowChanged();
606 /**
607 * The minimized state changed.
608 * @see isMinimized
609 **/
610 void minimizedChanged();
611 /**
612 * The maximized state changed.
613 * @see isMaximized
614 **/
615 void maximizedChanged();
616 /**
617 * The on all desktops state changed.
618 * @see isOnAllDesktops
619 **/
620 void onAllDesktopsChanged();
621 /**
622 * The demands attention state changed.
623 * @see isDemandingAttention
624 **/
625 void demandsAttentionChanged();
626 /**
627 * The closeable state changed.
628 * @see isCloseable
629 **/
630 void closeableChanged();
631 /**
632 * The minimizeable state changed.
633 * @see isMinimizeable
634 **/
635 void minimizeableChanged();
636 /**
637 * The maximizeable state changed.
638 * @see isMaximizeable
639 **/
640 void maximizeableChanged();
641 /**
642 * The fullscreenable state changed.
643 * @see isFullscreenable
644 **/
645 void fullscreenableChanged();
646 /**
647 * The skip taskbar state changed.
648 * @see skipTaskbar
649 **/
650 void skipTaskbarChanged();
651 /**
652 * The skip switcher state changed.
653 * @see skipSwitcher
654 **/
655 void skipSwitcherChanged();
656 /**
657 * The window icon changed.
658 * @see icon
659 **/
660 void iconChanged();
661 /**
662 * The shadeable state changed.
663 * @see isShadeable
664 * @since 5.22
665 */
666 void shadeableChanged();
667 /**
668 * The shaded state changed.
669 * @see isShaded
670 * @since 5.22
671 */
672 void shadedChanged();
673 /**
674 * The movable state changed.
675 * @see isMovable
676 * @since 5.22
677 */
678 void movableChanged();
679 /**
680 * The resizable state changed.
681 * @see isResizable
682 * @since 5.22
683 */
684 void resizableChanged();
685 /**
686 * The virtual desktop changeable state changed.
687 * @see virtualDesktopChangeable
688 * @since 5.22
689 */
690 void virtualDesktopChangeableChanged();
691 /**
692 * The window got unmapped and is no longer available to the Wayland server.
693 * This instance will be automatically deleted and one should connect to this
694 * signal to perform cleanup.
695 **/
696 void unmapped();
697 /**
698 * This signal is emitted whenever the parent window changes.
699 * @see parentWindow
700 * @since 5.24
701 **/
702 void parentWindowChanged();
703 /**
704 * This signal is emitted whenever the window geometry changes.
705 * @see geometry
706 * @since 5.25
707 **/
708 void geometryChanged();
709
710 /**
711 * This signal is emitted whenever the resource name changes.
712 * @see resourceName
713 * @since 5.94
714 **/
715 void resourceNameChanged();
716
717 /**
718 * This signal is emitted when the window has entered a new virtual desktop.
719 * The window can be on more than one desktop, or none: then is considered on all of them.
720 * @since 5.46
721 */
722 void plasmaVirtualDesktopEntered(const QString &id);
723
724 /**
725 * This signal is emitted when the window left a virtual desktop.
726 * If the window leaves all desktops, it can be considered on all.
727 *
728 * @since 5.46
729 */
730 void plasmaVirtualDesktopLeft(const QString &id);
731
732 /**
733 * This signal is emitted when the window has entered an activity.
734 * The window can be on more than one activity, or none: then is considered on all of them.
735 * @since 5.81
736 */
737 void plasmaActivityEntered(const QString &id);
738
739 /**
740 * This signal is emitted when the window left an activity.
741 * If the window leaves all activities, it can be considered on all.
742 *
743 * @since 5.81
744 */
745 void plasmaActivityLeft(const QString &id);
746
747 /**
748 * This signal is emitted when either the D-BUS service name or
749 * object path for the window's application menu changes.
750 *
751 * @since 5.69
752 **/
753 void applicationMenuChanged();
754
755private:
756 friend class PlasmaWindowManagement;
757 explicit PlasmaWindow(PlasmaWindowManagement *parent, org_kde_plasma_window *activation, quint32 internalId, const char *uuid);
758 class Private;
759 QScopedPointer<Private> d;
760};
761
762/**
763 * @since 5.86
764 */
765class KWAYLANDCLIENT_EXPORT PlasmaActivation : public QObject
766{
767 Q_OBJECT
768public:
769 ~PlasmaActivation() override;
770
771Q_SIGNALS:
772 /**
773 * Informs about which application this activation is representing
774 *
775 * The @p appId can be used to infer how to decorate this activation.
776 */
777 void applicationId(const QString &appId);
778
779 /**
780 * Notifies that the activation is done with.
781 *
782 * It might happen either because it's over or because it timed out.
783 */
784 void finished();
785
786private:
787 friend class PlasmaActivationFeedback;
788 explicit PlasmaActivation(PlasmaActivationFeedback *parent, org_kde_plasma_activation *activation);
789 class Private;
790 QScopedPointer<Private> d;
791};
792
793/**
794 * @since 5.86
795 */
796class KWAYLANDCLIENT_EXPORT PlasmaActivationFeedback : public QObject
797{
798 Q_OBJECT
799
800public:
801 explicit PlasmaActivationFeedback(QObject *parent = nullptr);
802 ~PlasmaActivationFeedback() override;
803
804 /**
805 * @returns @c true if managing a org_kde_plasma_activation_feedback.
806 **/
807 bool isValid() const;
808
809 /**
810 * Releases the org_kde_plasma_activation_feedback interface.
811 * After the interface has been released the PlasmaActivationFeedback instance is no
812 * longer valid and can be setup with another org_kde_plasma_activation_feedback interface.
813 *
814 * Right before the interface is released the signal interfaceAboutToBeReleased is emitted.
815 * @see interfaceAboutToBeReleased
816 **/
817 void release();
818
819 /**
820 * Destroys the data held by this PlasmaActivationFeedback.
821 * This method is supposed to be used when the connection to the Wayland
822 * server goes away. Once the connection becomes invalid, it's not
823 * possible to call release anymore as that calls into the Wayland
824 * connection and the call would fail. This method cleans up the data, so
825 * that the instance can be deleted or set up to a new org_kde_plasma_activation_feedback interface
826 * once there is a new connection available.
827 *
828 * This method is automatically invoked when the Registry which created this
829 * PlasmaActivationFeedback gets destroyed.
830 *
831 * Right before the data is destroyed, the signal interfaceAboutToBeDestroyed is emitted.
832 *
833 * @see release
834 * @see interfaceAboutToBeDestroyed
835 **/
836 void destroy();
837
838 /**
839 * Setup this PlasmaActivationFeedback to manage the @p manager.
840 * When using Registry::createPlasmaActivationFeedback there is no need to call this
841 * method.
842 **/
843 void setup(org_kde_plasma_activation_feedback *manager);
844
845 /**
846 * Sets the @p queue to use for creating a PlasmaActivationFeedback.
847 **/
848 void setEventQueue(EventQueue *queue);
849
850 /**
851 * @returns The event queue to use for creating a PlasmaActivationFeedback.
852 **/
853 EventQueue *eventQueue();
854
855 operator org_kde_plasma_activation_feedback *();
856 operator org_kde_plasma_activation_feedback *() const;
857
858Q_SIGNALS:
859 /**
860 * This signal is emitted right before the interface is released.
861 **/
862 void interfaceAboutToBeReleased();
863
864 /**
865 * This signal is emitted right before the data is destroyed.
866 **/
867 void interfaceAboutToBeDestroyed();
868
869 /**
870 * The corresponding global for this interface on the Registry got removed.
871 *
872 * This signal gets only emitted if the Compositor got created by
873 * Registry::createPlasmaActivationFeedback
874 **/
875 void removed();
876
877 void activation(KWayland::Client::PlasmaActivation *activation);
878
879private:
880 class Private;
881 QScopedPointer<Private> d;
882};
883}
884}
885
886Q_DECLARE_METATYPE(KWayland::Client::PlasmaWindow *)
887
888#endif
889

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