Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
ICompositorBridge.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 <phosphorcompositor_export.h>
7
8#include <QIcon>
9#include <QRectF>
10#include <QSizeF>
11#include <QString>
12#include <QVector>
13
14// QObject is only named as a pointer return type (asQObject) — forward
15// declare per the project's header rule rather than pulling in <QObject>.
16class QObject;
17
18namespace PhosphorCompositor {
19
31using WindowHandle = void*;
32
41{
43 QString windowId;
44 QString appId;
45 QString windowClass;
46 QString screenId;
47 QString caption;
48 QIcon icon;
50 QSizeF minSize;
51 bool isMinimized = false;
58 bool isFullScreen = false;
59 bool isOnCurrentDesktop = true;
61 bool hasDecoration = false;
62 bool isNormalWindow = true;
63 bool keepAbove = false;
64 qint64 pid = 0;
65};
66
93class PHOSPHORCOMPOSITOR_EXPORT ICompositorBridge
94{
95public:
96 ICompositorBridge() = default;
97 virtual ~ICompositorBridge() = default;
98
103
104 // ═══════════════════════════════════════════════════════════════════
105 // Window Lookup
106 // ═══════════════════════════════════════════════════════════════════
107
109 virtual WindowHandle findWindowById(const QString& windowId) const = 0;
110
112 virtual QVector<WindowHandle> findAllWindowsById(const QString& windowId) const = 0;
113
115 virtual QVector<WindowHandle> stackingOrder() const = 0;
116
117 // ═══════════════════════════════════════════════════════════════════
118 // Window Identity
119 // ═══════════════════════════════════════════════════════════════════
120
122 virtual QString windowId(WindowHandle w) const = 0;
123
125 virtual QString windowScreenId(WindowHandle w) const = 0;
126
127 // ═══════════════════════════════════════════════════════════════════
128 // Window Properties
129 // ═══════════════════════════════════════════════════════════════════
130
131 virtual QRectF frameGeometry(WindowHandle w) const = 0;
132 virtual QSizeF minSize(WindowHandle w) const = 0;
133 virtual bool isMinimized(WindowHandle w) const = 0;
134 virtual bool isOnCurrentDesktop(WindowHandle w) const = 0;
135 virtual bool isOnCurrentActivity(WindowHandle w) const = 0;
136 virtual bool hasDecoration(WindowHandle w) const = 0;
137
144 virtual bool userCanSetNoBorder(WindowHandle w) const = 0;
145
148 virtual bool isNoBorder(WindowHandle w) const = 0;
149
154 virtual QRectF moveResizeGeometry(WindowHandle w) const = 0;
155
157 virtual WindowInfo windowInfo(WindowHandle w) const = 0;
158
159 // ═══════════════════════════════════════════════════════════════════
160 // Window Filtering
161 // ═══════════════════════════════════════════════════════════════════
162
164 virtual bool shouldHandleWindow(WindowHandle w) const = 0;
165
167 virtual bool isTileableWindow(WindowHandle w) const = 0;
168
169 // ═══════════════════════════════════════════════════════════════════
170 // Window Actions
171 // ═══════════════════════════════════════════════════════════════════
172
174 virtual void moveResize(WindowHandle w, const QRectF& geometry) = 0;
175
177 virtual void setNoBorder(WindowHandle w, bool noBorder) = 0;
178
180 virtual void setMaximized(WindowHandle w, bool maximized) = 0;
181
183 virtual void activateWindow(WindowHandle w) = 0;
184
186 virtual void raiseWindow(WindowHandle w) = 0;
187
190 virtual void applyWindowGeometry(WindowHandle w, const QRectF& geometry, bool skipAnimation) = 0;
191
192 // ═══════════════════════════════════════════════════════════════════
193 // D-Bus Integration (convenience wrappers using compositor as parent)
194 // ═══════════════════════════════════════════════════════════════════
195
197 virtual QObject* asQObject() = 0;
198
200 virtual bool isDaemonReady() const = 0;
201
202 // ═══════════════════════════════════════════════════════════════════
203 // Screen Management
204 // ═══════════════════════════════════════════════════════════════════
205
207 virtual void invalidateScreenIdCache() = 0;
208};
209
210} // namespace PhosphorCompositor
Abstract interface bridging compositor-agnostic logic to compositor-specific APIs.
Definition ICompositorBridge.h:94
virtual void applyWindowGeometry(WindowHandle w, const QRectF &geometry, bool skipAnimation)=0
Move a window to a target geometry, running the configured placement transition (snap / tile / move) ...
virtual bool isDaemonReady() const =0
Check if the daemon D-Bus service is registered and ready.
virtual bool isOnCurrentActivity(WindowHandle w) const =0
virtual void moveResize(WindowHandle w, const QRectF &geometry)=0
Move/resize a window to the given geometry.
virtual QString windowScreenId(WindowHandle w) const =0
Get the screen ID where a window is located.
virtual WindowInfo windowInfo(WindowHandle w) const =0
Fill a WindowInfo snapshot (for bulk operations)
virtual void setMaximized(WindowHandle w, bool maximized)=0
Maximize or restore a window.
ICompositorBridge & operator=(ICompositorBridge &&)=delete
ICompositorBridge(const ICompositorBridge &)=delete
ICompositorBridge & operator=(const ICompositorBridge &)=delete
virtual QSizeF minSize(WindowHandle w) const =0
virtual bool hasDecoration(WindowHandle w) const =0
virtual bool isOnCurrentDesktop(WindowHandle w) const =0
virtual bool shouldHandleWindow(WindowHandle w) const =0
Should this window be managed by Phosphor at all?
virtual WindowHandle findWindowById(const QString &windowId) const =0
Find a window by its full window ID ("appId|instanceId")
virtual QRectF moveResizeGeometry(WindowHandle w) const =0
Geometry the compositor is currently moving the window toward.
virtual void activateWindow(WindowHandle w)=0
Give input focus to a window.
virtual bool userCanSetNoBorder(WindowHandle w) const =0
May this window's server-side decoration be toggled off? True for SSD windows even while they are CUR...
ICompositorBridge(ICompositorBridge &&)=delete
virtual bool isMinimized(WindowHandle w) const =0
virtual QVector< WindowHandle > stackingOrder() const =0
Get all managed windows in stacking order (bottom to top)
virtual QRectF frameGeometry(WindowHandle w) const =0
virtual QString windowId(WindowHandle w) const =0
Get the full window ID for a window ("appId|instanceId")
virtual QVector< WindowHandle > findAllWindowsById(const QString &windowId) const =0
Find all windows matching a window ID (exact + appId fallback for disambiguation)
virtual void raiseWindow(WindowHandle w)=0
Raise a window in the stacking order.
virtual bool isTileableWindow(WindowHandle w) const =0
Is this window eligible for autotile (stricter than shouldHandle)?
virtual void invalidateScreenIdCache()=0
Invalidate cached screen IDs (call on screen add/remove/reconfigure)
virtual void setNoBorder(WindowHandle w, bool noBorder)=0
Set/remove server-side decoration (title bar)
virtual QObject * asQObject()=0
Get the QObject parent for D-Bus watcher ownership.
virtual bool isNoBorder(WindowHandle w) const =0
Is the server-side decoration currently suppressed? (KWin: Window::noBorder)
Definition DaemonClient.h:22
void * WindowHandle
Opaque handle to a compositor window.
Definition ICompositorBridge.h:31
Compositor-agnostic window property snapshot.
Definition ICompositorBridge.h:41
bool isOnCurrentDesktop
Definition ICompositorBridge.h:59
QString caption
Definition ICompositorBridge.h:47
WindowHandle handle
Definition ICompositorBridge.h:42
bool isOnCurrentActivity
Definition ICompositorBridge.h:60
QSizeF minSize
Definition ICompositorBridge.h:50
QString screenId
Definition ICompositorBridge.h:46
QString appId
Definition ICompositorBridge.h:44
QIcon icon
Definition ICompositorBridge.h:48
bool isFullScreen
Currently written but read by no consumer.
Definition ICompositorBridge.h:58
bool isNormalWindow
Definition ICompositorBridge.h:62
QString windowId
Definition ICompositorBridge.h:43
bool keepAbove
Definition ICompositorBridge.h:63
qint64 pid
Definition ICompositorBridge.h:64
bool isMinimized
Definition ICompositorBridge.h:51
QString windowClass
WM_CLASS / app_id as reported by compositor (may differ from appId for XWayland)
Definition ICompositorBridge.h:45
bool hasDecoration
Definition ICompositorBridge.h:61
QRectF frameGeometry
Definition ICompositorBridge.h:49