8#include "phosphorscreenscore_export.h"
117 return m_cfg.maxVirtualScreensPerPhysical;
188 QString
virtualScreenAt(
const QPoint& globalPos,
const QString& physicalScreenId)
const;
264 void onProviderScreenGeometryChanged(
const PhysicalScreen& screen);
270 void syncTrackedScreens();
281 void destroyGeometrySensor(
const QString& screenName);
282 void onSensorGeometryChanged(
const QString& screenName);
288 void onPanelOffsetsChanged(QScreen* screen);
289 void onPanelRequeryCompleted();
291 void onConfigStoreChanged();
300 bool m_running =
false;
301 bool m_panelGeometryReadyEmitted =
false;
303 QVector<PhysicalScreen> m_trackedScreens;
307 QHash<QString, QPointer<QWindow>> m_geometrySensors;
320 mutable QHash<QString, QRect> m_availableGeometryCache;
328 QHash<QString, QRect> m_compositorAvailableGeometry;
331 QHash<QString, VirtualScreenConfig> m_virtualConfigs;
333 mutable QStringList m_cachedEffectiveScreenIds;
334 mutable bool m_effectiveScreenIdsDirty =
true;
336 mutable QHash<QString, QRect> m_virtualGeometryCache;
344 mutable QSet<QString> m_warnedVirtualGeometryMisses;
346 void invalidateVirtualGeometryCache(
const QString& physicalScreenId = {})
const;
347 void rebuildVirtualGeometryCache(
const QString& physicalScreenId)
const;
349 QString virtualScreenAtWithScreen(
const QPoint& globalPos,
const QString& physicalScreenId,
357 void propagateIdentifierDrift(
const QHash<QString, QString>& oldIds);
Pluggable persistence for virtual-screen configurations.
Definition IConfigStore.h:37
Pluggable producer of panel-reservation offsets per screen.
Definition IPanelSource.h:33
Pluggable source of the connected-output set and its lifecycle.
Definition IScreenProvider.h:33
Centralized screen-topology service.
Definition Manager.h:75
ScreenManager(ScreenManagerConfig cfg=ScreenManagerConfig{}, QObject *parent=nullptr)
VirtualScreenConfig virtualScreenConfig(const QString &physicalScreenId) const
void screenRemoved(const PhysicalScreen &screen)
void delayedPanelRequeryCompleted()
Fired when a delayed panel re-query (scheduleDelayedPanelRequery) has settled.
void screenIdentifierChanged(const QString &oldId, const QString &newId)
Emitted when a connected screen's identifier flips — e.g.
QRect actualAvailableGeometry(QScreen *screen) const
Bridge overload for consumers that still hold a live QScreen*.
QStringList effectiveScreenIds() const
void screenGeometryChanged(const PhysicalScreen &screen)
PhysicalScreen physicalScreenFor(const QString &screenId) const
The physical output a (physical or virtual) screen ID resolves to.
void virtualScreenRegionsChanged(const QString &physicalScreenId)
VS regions changed but the VS ID set is unchanged (swap, rotate, boundary resize).
void screenAdded(const PhysicalScreen &screen)
void scheduleDelayedPanelRequery(int delayMs)
Schedule a one-shot panel re-query after delayMs.
void stop()
Tear down everything start() set up. Idempotent.
PhysicalScreen screenByName(const QString &name) const
bool isPanelGeometryReady() const
Has the panel source produced its first reading?
void refreshVirtualConfigs(const QHash< QString, VirtualScreenConfig > &configs)
Diff configs against the current cache and apply the delta.
QVector< PhysicalScreen > screens() const
bool setVirtualScreenConfig(const QString &physicalScreenId, const VirtualScreenConfig &config)
Apply a single VS subdivision config.
QRect actualAvailableGeometry(const PhysicalScreen &screen) const
Per-screen panel-aware available geometry.
PhysicalScreen primaryScreen() const
int maxVirtualScreensPerPhysical() const
Maximum number of virtual screens per physical monitor this manager will admit.
Definition Manager.h:115
bool hasVirtualScreens(const QString &physicalScreenId) const
QRect screenGeometry(const QString &screenId) const
void start()
Begin tracking screens.
QRect screenAvailableGeometry(const QString &screenId) const
void setCompositorAvailableGeometry(const QString &screenName, const QRect &available)
Record the authoritative per-screen available geometry as reported by the compositor.
~ScreenManager() override
QString effectiveScreenAt(const QPoint &globalPos) const
void virtualScreensChanged(const QString &physicalScreenId)
VS topology changed (added, removed, renamed).
void availableGeometryChanged(const PhysicalScreen &screen, const QRect &availableGeometry)
QString virtualScreenAt(const QPoint &globalPos, const QString &physicalScreenId) const
QStringList virtualScreenIdsFor(const QString &physicalScreenId) const
VirtualScreenDef::PhysicalEdges physicalEdgesFor(const QString &screenId) const
void panelGeometryReady()
Fired once when isPanelGeometryReady transitions to true.
Definition IWindowTrackingService.h:26
A physical output as ScreenManager sees it — decoupled from QScreen.
Definition PhysicalScreen.h:37
Construction-time wiring for ScreenManager.
Definition Manager.h:50
IScreenProvider * screenProvider
Definition Manager.h:51
IConfigStore * configStore
Definition Manager.h:53
bool useGeometrySensors
Definition Manager.h:54
int maxVirtualScreensPerPhysical
Definition Manager.h:55
IPanelSource * panelSource
Definition Manager.h:52
Configuration for how a physical screen is subdivided into virtual screens.
Definition VirtualScreen.h:124
Check which edges of this virtual screen are at the physical screen boundary (vs internal edges share...
Definition VirtualScreen.h:103