Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
ForeignToplevel.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
6#include <phosphorwayland_export.h>
7
8#include <QList>
9#include <QObject>
10#include <QPointer>
11
12#include <memory>
13
14QT_BEGIN_NAMESPACE
15class QScreen;
16class QWindow;
17QT_END_NAMESPACE
18
19namespace PhosphorWayland {
20
21class ForeignToplevel;
22
43class PHOSPHORWAYLAND_EXPORT ForeignToplevelManager : public QObject
44{
45 Q_OBJECT
46 Q_DISABLE_COPY_MOVE(ForeignToplevelManager)
47
48public:
49 explicit ForeignToplevelManager(QObject* parent = nullptr);
51
55 static bool isSupported();
56
59 [[nodiscard]] QList<ForeignToplevel*> toplevels() const;
60
64 void stop();
65
66Q_SIGNALS:
69
70private:
71 friend class ForeignToplevel;
72 class Private;
73 std::unique_ptr<Private> d;
74};
75
90class PHOSPHORWAYLAND_EXPORT ForeignToplevel : public QObject
91{
92 Q_OBJECT
93 Q_PROPERTY(QString title READ title NOTIFY titleChanged)
94 Q_PROPERTY(QString appId READ appId NOTIFY appIdChanged)
95 Q_PROPERTY(bool maximized READ isMaximized NOTIFY stateChanged)
96 Q_PROPERTY(bool minimized READ isMinimized NOTIFY stateChanged)
97 Q_PROPERTY(bool activated READ isActivated NOTIFY stateChanged)
98 Q_PROPERTY(bool fullscreen READ isFullscreen NOTIFY stateChanged)
99 Q_PROPERTY(QList<QScreen*> outputs READ outputs NOTIFY outputsChanged)
100 Q_PROPERTY(PhosphorWayland::ForeignToplevel* parentToplevel READ parentToplevel NOTIFY parentToplevelChanged)
101 Q_PROPERTY(bool closed READ isClosed NOTIFY closedChanged)
102
103public:
105
106 [[nodiscard]] QString title() const;
107 [[nodiscard]] QString appId() const;
108 [[nodiscard]] bool isMaximized() const;
109 [[nodiscard]] bool isMinimized() const;
110 [[nodiscard]] bool isActivated() const;
111 [[nodiscard]] bool isFullscreen() const;
112 [[nodiscard]] QList<QScreen*> outputs() const;
113 [[nodiscard]] ForeignToplevel* parentToplevel() const;
114 [[nodiscard]] bool isClosed() const;
115
121 Q_INVOKABLE void activate();
122
126 Q_INVOKABLE void close();
127
128 Q_INVOKABLE void setMaximized(bool maximized);
129 Q_INVOKABLE void setMinimized(bool minimized);
135 Q_INVOKABLE void setFullscreen(bool fullscreen, QScreen* output = nullptr);
136
143 Q_INVOKABLE void setRectangle(QWindow* surface, const QRect& rect);
144
145Q_SIGNALS:
152
153private:
155 class Private;
156 explicit ForeignToplevel(std::unique_ptr<Private> p);
157 std::unique_ptr<Private> d;
158};
159
160} // namespace PhosphorWayland
161
162Q_DECLARE_METATYPE(PhosphorWayland::ForeignToplevel*)
Client-side wrapper around zwlr_foreign_toplevel_manager_v1.
Definition ForeignToplevel.h:44
static bool isSupported()
True iff the compositor advertises zwlr_foreign_toplevel_manager_v1.
void toplevelRemoved(PhosphorWayland::ForeignToplevel *toplevel)
void toplevelAdded(PhosphorWayland::ForeignToplevel *toplevel)
ForeignToplevelManager(QObject *parent=nullptr)
void stop()
Stop receiving events.
QList< ForeignToplevel * > toplevels() const
Snapshot of the current toplevel set.
A single toplevel window owned by some other Wayland client.
Definition ForeignToplevel.h:91
void setMaximized(bool maximized)
void setRectangle(QWindow *surface, const QRect &rect)
Tell the compositor where on screen this toplevel's representation lives (e.g.
void close()
Request the compositor close this toplevel.
void setFullscreen(bool fullscreen, QScreen *output=nullptr)
Toggle fullscreen on the given output (null = compositor's choice).
void activate()
Request the compositor focus this toplevel.
ForeignToplevel * parentToplevel() const
void setMinimized(bool minimized)
QList< QScreen * > outputs() const
Definition CompositorLost.h:11