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
575 /**
576 * @returns The client geometry (i.e. without window borders) in absolute coordinates.
577 * @see clientGeometryChanged
578 * @since 6.2
579 **/
580 QRect clientGeometry() const;
581
582Q_SIGNALS:
583 /**
584 * The window title changed.
585 * @see title
586 **/
587 void titleChanged();
588 /**
589 * The application id changed.
590 * @see appId
591 **/
592 void appIdChanged();
593 /**
594 * The window became active or inactive.
595 * @see isActive
596 **/
597 void activeChanged();
598 /**
599 * The fullscreen state changed.
600 * @see isFullscreen
601 **/
602 void fullscreenChanged();
603 /**
604 * The keep above state changed.
605 * @see isKeepAbove
606 **/
607 void keepAboveChanged();
608 /**
609 * The keep below state changed.
610 * @see isKeepBelow
611 **/
612 void keepBelowChanged();
613 /**
614 * The minimized state changed.
615 * @see isMinimized
616 **/
617 void minimizedChanged();
618 /**
619 * The maximized state changed.
620 * @see isMaximized
621 **/
622 void maximizedChanged();
623 /**
624 * The on all desktops state changed.
625 * @see isOnAllDesktops
626 **/
627 void onAllDesktopsChanged();
628 /**
629 * The demands attention state changed.
630 * @see isDemandingAttention
631 **/
632 void demandsAttentionChanged();
633 /**
634 * The closeable state changed.
635 * @see isCloseable
636 **/
637 void closeableChanged();
638 /**
639 * The minimizeable state changed.
640 * @see isMinimizeable
641 **/
642 void minimizeableChanged();
643 /**
644 * The maximizeable state changed.
645 * @see isMaximizeable
646 **/
647 void maximizeableChanged();
648 /**
649 * The fullscreenable state changed.
650 * @see isFullscreenable
651 **/
652 void fullscreenableChanged();
653 /**
654 * The skip taskbar state changed.
655 * @see skipTaskbar
656 **/
657 void skipTaskbarChanged();
658 /**
659 * The skip switcher state changed.
660 * @see skipSwitcher
661 **/
662 void skipSwitcherChanged();
663 /**
664 * The window icon changed.
665 * @see icon
666 **/
667 void iconChanged();
668 /**
669 * The shadeable state changed.
670 * @see isShadeable
671 * @since 5.22
672 */
673 void shadeableChanged();
674 /**
675 * The shaded state changed.
676 * @see isShaded
677 * @since 5.22
678 */
679 void shadedChanged();
680 /**
681 * The movable state changed.
682 * @see isMovable
683 * @since 5.22
684 */
685 void movableChanged();
686 /**
687 * The resizable state changed.
688 * @see isResizable
689 * @since 5.22
690 */
691 void resizableChanged();
692 /**
693 * The virtual desktop changeable state changed.
694 * @see virtualDesktopChangeable
695 * @since 5.22
696 */
697 void virtualDesktopChangeableChanged();
698 /**
699 * The window got unmapped and is no longer available to the Wayland server.
700 * This instance will be automatically deleted and one should connect to this
701 * signal to perform cleanup.
702 **/
703 void unmapped();
704 /**
705 * This signal is emitted whenever the parent window changes.
706 * @see parentWindow
707 * @since 5.24
708 **/
709 void parentWindowChanged();
710 /**
711 * This signal is emitted whenever the window geometry changes.
712 * @see geometry
713 * @since 5.25
714 **/
715 void geometryChanged();
716
717 /**
718 * This signal is emitted whenever the resource name changes.
719 * @see resourceName
720 * @since 5.94
721 **/
722 void resourceNameChanged();
723
724 /**
725 * This signal is emitted when the window has entered a new virtual desktop.
726 * The window can be on more than one desktop, or none: then is considered on all of them.
727 * @since 5.46
728 */
729 void plasmaVirtualDesktopEntered(const QString &id);
730
731 /**
732 * This signal is emitted when the window left a virtual desktop.
733 * If the window leaves all desktops, it can be considered on all.
734 *
735 * @since 5.46
736 */
737 void plasmaVirtualDesktopLeft(const QString &id);
738
739 /**
740 * This signal is emitted when the window has entered an activity.
741 * The window can be on more than one activity, or none: then is considered on all of them.
742 * @since 5.81
743 */
744 void plasmaActivityEntered(const QString &id);
745
746 /**
747 * This signal is emitted when the window left an activity.
748 * If the window leaves all activities, it can be considered on all.
749 *
750 * @since 5.81
751 */
752 void plasmaActivityLeft(const QString &id);
753
754 /**
755 * This signal is emitted when either the D-BUS service name or
756 * object path for the window's application menu changes.
757 *
758 * @since 5.69
759 **/
760 void applicationMenuChanged();
761
762 /**
763 * This signal is emitted whenever the client geometry changes.
764 * @see clientGeometry
765 * @since 6.2
766 **/
767 void clientGeometryChanged();
768
769private:
770 friend class PlasmaWindowManagement;
771 explicit PlasmaWindow(PlasmaWindowManagement *parent, org_kde_plasma_window *activation, quint32 internalId, const char *uuid);
772 class Private;
773 QScopedPointer<Private> d;
774};
775
776/**
777 * @since 5.86
778 */
779class KWAYLANDCLIENT_EXPORT PlasmaActivation : public QObject
780{
781 Q_OBJECT
782public:
783 ~PlasmaActivation() override;
784
785Q_SIGNALS:
786 /**
787 * Informs about which application this activation is representing
788 *
789 * The @p appId can be used to infer how to decorate this activation.
790 */
791 void applicationId(const QString &appId);
792
793 /**
794 * Notifies that the activation is done with.
795 *
796 * It might happen either because it's over or because it timed out.
797 */
798 void finished();
799
800private:
801 friend class PlasmaActivationFeedback;
802 explicit PlasmaActivation(PlasmaActivationFeedback *parent, org_kde_plasma_activation *activation);
803 class Private;
804 QScopedPointer<Private> d;
805};
806
807/**
808 * @since 5.86
809 */
810class KWAYLANDCLIENT_EXPORT PlasmaActivationFeedback : public QObject
811{
812 Q_OBJECT
813
814public:
815 explicit PlasmaActivationFeedback(QObject *parent = nullptr);
816 ~PlasmaActivationFeedback() override;
817
818 /**
819 * @returns @c true if managing a org_kde_plasma_activation_feedback.
820 **/
821 bool isValid() const;
822
823 /**
824 * Releases the org_kde_plasma_activation_feedback interface.
825 * After the interface has been released the PlasmaActivationFeedback instance is no
826 * longer valid and can be setup with another org_kde_plasma_activation_feedback interface.
827 *
828 * Right before the interface is released the signal interfaceAboutToBeReleased is emitted.
829 * @see interfaceAboutToBeReleased
830 **/
831 void release();
832
833 /**
834 * Destroys the data held by this PlasmaActivationFeedback.
835 * This method is supposed to be used when the connection to the Wayland
836 * server goes away. Once the connection becomes invalid, it's not
837 * possible to call release anymore as that calls into the Wayland
838 * connection and the call would fail. This method cleans up the data, so
839 * that the instance can be deleted or set up to a new org_kde_plasma_activation_feedback interface
840 * once there is a new connection available.
841 *
842 * This method is automatically invoked when the Registry which created this
843 * PlasmaActivationFeedback gets destroyed.
844 *
845 * Right before the data is destroyed, the signal interfaceAboutToBeDestroyed is emitted.
846 *
847 * @see release
848 * @see interfaceAboutToBeDestroyed
849 **/
850 void destroy();
851
852 /**
853 * Setup this PlasmaActivationFeedback to manage the @p manager.
854 * When using Registry::createPlasmaActivationFeedback there is no need to call this
855 * method.
856 **/
857 void setup(org_kde_plasma_activation_feedback *manager);
858
859 /**
860 * Sets the @p queue to use for creating a PlasmaActivationFeedback.
861 **/
862 void setEventQueue(EventQueue *queue);
863
864 /**
865 * @returns The event queue to use for creating a PlasmaActivationFeedback.
866 **/
867 EventQueue *eventQueue();
868
869 operator org_kde_plasma_activation_feedback *();
870 operator org_kde_plasma_activation_feedback *() const;
871
872Q_SIGNALS:
873 /**
874 * This signal is emitted right before the interface is released.
875 **/
876 void interfaceAboutToBeReleased();
877
878 /**
879 * This signal is emitted right before the data is destroyed.
880 **/
881 void interfaceAboutToBeDestroyed();
882
883 /**
884 * The corresponding global for this interface on the Registry got removed.
885 *
886 * This signal gets only emitted if the Compositor got created by
887 * Registry::createPlasmaActivationFeedback
888 **/
889 void removed();
890
891 void activation(KWayland::Client::PlasmaActivation *activation);
892
893private:
894 class Private;
895 QScopedPointer<Private> d;
896};
897}
898}
899
900Q_DECLARE_METATYPE(KWayland::Client::PlasmaWindow *)
901
902#endif
903

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