Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
PhosphorEngine::PlacementEngineBase Class Referenceabstract

Abstract base class for placement engines. More...

#include <phosphor-engine/include/PhosphorEngine/PlacementEngineBase.h>

Inheritance diagram for PhosphorEngine::PlacementEngineBase:
[legend]

Classes

struct  UnmanagedEntry
 

Signals

void geometryRestoreRequested (const QString &windowId, const QRect &geometry, const QString &screenId)
 
void windowStateTransitioned (const QString &windowId, WindowState oldState, WindowState newState)
 
void navigationFeedback (bool success, const QString &action, const QString &reason, const QString &sourceId, const QString &targetId, const QString &screenId)
 
void windowFloatingChanged (const QString &windowId, bool floating, const QString &screenId)
 
void activateWindowRequested (const QString &windowId)
 
void windowFloatingStateSynced (const QString &windowId, bool floating, const QString &screenId)
 Emitted to sync floating state without restoring geometry.
 
void windowsBatchFloated (const QStringList &windowIds, const QString &screenId)
 Emitted when overflow windows are batch-floated during applyTiling.
 
void algorithmChanged (const QString &algorithmId)
 Emitted when the active tiling algorithm changes.
 
void placementChanged (const QString &screenId)
 Emitted when the placement layout changes for a screen.
 
void windowsReleased (const QStringList &windowIds, const QSet< QString > &releasedScreenIds)
 Emitted when windows are released from engine management.
 
void settingsPersistRequested ()
 Emitted when the engine writes tuning values back to the settings object and wants the daemon to persist them to disk.
 

Public Member Functions

WindowState windowState (const QString &windowId) const
 
void claimWindow (const QString &windowId, const QRect &geometry, const QString &screenId, bool overwrite=false)
 
void releaseWindow (const QString &windowId)
 
void floatWindow (const QString &windowId)
 
void unfloatWindow (const QString &windowId)
 
QRect unmanagedGeometry (const QString &windowId) const
 
QString unmanagedScreen (const QString &windowId) const
 
bool hasUnmanagedGeometry (const QString &windowId) const
 
void clearUnmanagedGeometry (const QString &windowId)
 
void forgetWindow (const QString &windowId)
 
void storeUnmanagedGeometry (const QString &windowId, const QRect &geometry, const QString &screenId, bool overwrite=false)
 
const QHash< QString, UnmanagedEntry > & unmanagedGeometries () const
 
void setUnmanagedGeometries (const QHash< QString, UnmanagedEntry > &geos)
 
virtual int pruneStaleWindows (const QSet< QString > &aliveWindowIds)
 
QJsonObject serializeBaseState () const
 
void deserializeBaseState (const QJsonObject &state)
 
void setEngineSettings (QObject *settings)
 
QObject * engineSettings () const
 
 ~PlacementEngineBase () override
 
- Public Member Functions inherited from PhosphorEngine::IPlacementEngine
virtual ~IPlacementEngine ()=default
 
virtual bool isActiveOnScreen (const QString &screenId) const =0
 Whether this engine is active on the given screen.
 
virtual void windowOpened (const QString &windowId, const QString &screenId, int minWidth=0, int minHeight=0)=0
 A new window appeared on this engine's screen.
 
void windowOpened (const QString &windowId, const QString &screenId)
 Convenience overload — equivalent to windowOpened(id, screen, 0, 0).
 
virtual void windowClosed (const QString &windowId)=0
 A window was closed.
 
virtual void windowFocused (const QString &windowId, const QString &screenId)=0
 A window gained focus (called when the compositor reports activation).
 
virtual void toggleWindowFloat (const QString &windowId, const QString &screenId)=0
 Toggle between managed and floating.
 
virtual void setWindowFloat (const QString &windowId, bool shouldFloat)=0
 Set floating state explicitly (directional, not toggle).
 
virtual void focusInDirection (const QString &direction, const NavigationContext &ctx)=0
 Move keyboard focus to the adjacent window.
 
virtual void moveFocusedInDirection (const QString &direction, const NavigationContext &ctx)=0
 Move the focused window to the adjacent slot.
 
virtual void swapFocusedInDirection (const QString &direction, const NavigationContext &ctx)=0
 Swap the focused window with the adjacent window.
 
virtual void moveFocusedToPosition (int position, const NavigationContext &ctx)=0
 Move the focused window to the Nth position.
 
virtual void rotateWindows (bool clockwise, const NavigationContext &ctx)=0
 Rotate all managed windows on the screen.
 
virtual void reapplyLayout (const NavigationContext &ctx)=0
 Re-apply the current layout to all managed windows.
 
virtual void snapAllWindows (const NavigationContext &ctx)=0
 Snap every unmanaged window on the screen to the current layout.
 
virtual void cycleFocus (bool forward, const NavigationContext &ctx)=0
 Cycle keyboard focus through managed windows.
 
virtual void pushToEmptyZone (const NavigationContext &ctx)=0
 Move the focused window to the first empty slot.
 
virtual void restoreFocusedWindow (const NavigationContext &ctx)=0
 Restore the focused window out of its managed state.
 
virtual void toggleFocusedFloat (const NavigationContext &ctx)=0
 Toggle the focused window between managed and floating.
 
virtual QSet< QString > activeScreens () const
 
virtual void setActiveScreens (const QSet< QString > &screens)
 
virtual QStringList managedWindowOrder (const QString &screenId) const
 
virtual void setInitialWindowOrder (const QString &screenId, const QStringList &windowIds)
 
virtual void applyPerScreenConfig (const QString &screenId, const QVariantMap &overrides)
 
virtual void clearPerScreenConfig (const QString &screenId)
 
virtual QVariantMap perScreenOverrides (const QString &screenId) const
 
virtual bool isModeSpecificFloated (const QString &windowId) const
 
virtual void clearModeSpecificFloatMarker (const QString &windowId)
 
virtual bool restoreSavedModeFloat (const QString &windowId)
 
virtual void clearSavedFloatingForWindows (const QStringList &windowIds)
 Remove saved floating state for the given windows (per-window, not bulk clear).
 
virtual bool hasDragInsertPreview () const
 
virtual bool beginDragInsertPreview (const QString &windowId, const QString &screenId)
 
virtual void commitDragInsertPreview ()
 
virtual void cancelDragInsertPreview ()
 
virtual QString dragInsertPreviewScreenId () const
 
virtual bool isWindowTracked (const QString &windowId) const
 
virtual bool isWindowManaged (const QString &windowId) const
 Whether the engine considers the window "managed" (eligible for layout operations).
 
virtual bool isWindowTiled (const QString &windowId) const
 Whether the window is actively tiled (engine-owned, non-floating).
 
virtual QString screenForTrackedWindow (const QString &windowId) const
 Return the screen this engine considers the window to be on, or empty if the window isn't tracked by this engine.
 
virtual void handoffReceive (const HandoffContext &ctx)
 Receive ownership of a window from another engine.
 
virtual void handoffRelease (const QString &windowId)
 Release ownership of a window WITHOUT modifying its geometry.
 
virtual QString engineId () const
 Stable engine identity for HandoffContext.fromEngineId.
 
virtual int computeDragInsertIndexAtPoint (const QString &screenId, const QPoint &cursorPos) const
 Compute the insert index for a cursor position on a managed screen.
 
virtual void updateDragInsertPreview (int insertIndex)
 Update the target insert index for an active drag-insert preview.
 
virtual QString algorithmId () const
 
virtual void setAlgorithm (const QString &algorithmId)
 
virtual bool isEnabled () const noexcept
 
virtual QString activeScreen () const
 
virtual void setActiveScreenHint (const QString &screenId)
 
virtual void setCurrentDesktop (int desktop)
 
virtual void setCurrentActivity (const QString &activity)
 
virtual void updateStickyScreenPins (const std::function< bool(const QString &)> &isWindowSticky)
 
virtual QSet< int > desktopsWithActiveState () const
 
virtual void pruneStatesForDesktop (int removedDesktop)
 
virtual void pruneStatesForActivities (const QStringList &validActivities)
 
virtual void refreshConfigFromSettings ()
 Re-read all tuning values from the engine's settings interface.
 
virtual qreal effectiveSplitRatioStep (const QString &screenId) const
 
virtual int runtimeMaxWindows () const
 Runtime max-windows limit.
 
virtual void retile (const QString &screenId=QString())
 
virtual void scheduleRetileForScreen (const QString &screenId)
 
virtual void markModeSpecificFloated (const QString &windowId)
 
virtual void clearAllSavedFloating ()
 
virtual void saveModeFloat (const QString &windowId)
 
virtual void clearSavedModeFloating ()
 
virtual QJsonArray serializeWindowOrders () const
 
virtual void deserializeWindowOrders (const QJsonArray &orders)
 
virtual QJsonObject serializePendingRestores () const
 
virtual void deserializePendingRestores (const QJsonObject &obj)
 
virtual void setWindowRegistry (QObject *registry)
 Attach a window-class registry (QObject carrying WindowRegistry).
 
virtual void setIsWindowFloatingFn (std::function< bool(const QString &)> fn)
 
virtual void increaseMasterRatio (qreal delta=0.05)
 
virtual void decreaseMasterRatio (qreal delta=0.05)
 
virtual void increaseMasterCount ()
 
virtual void decreaseMasterCount ()
 
virtual void focusMaster ()
 
virtual void swapFocusedWithMaster ()
 
virtual QJsonObject serializeEngineState () const
 
virtual void deserializeEngineState (const QJsonObject &state)
 
virtual void saveState ()=0
 
virtual void loadState ()=0
 
virtual IPlacementStatestateForScreen (const QString &screenId)=0
 Per-screen state object for the given screen.
 
virtual const IPlacementStatestateForScreen (const QString &screenId) const =0
 

Protected Member Functions

 PlacementEngineBase (QObject *parent=nullptr)
 
virtual void onWindowClaimed (const QString &windowId)=0
 
virtual void onWindowReleased (const QString &windowId)=0
 
virtual void onWindowFloated (const QString &windowId)=0
 
virtual void onWindowUnfloated (const QString &windowId)=0
 

Detailed Description

Abstract base class for placement engines.

Handles universal mechanics that every engine needs identically: window state FSM (unmanaged / engine-owned / floated), unmanaged geometry capture/restore, and float geometry bookkeeping.

Engines subclass this and implement only the placement-specific hooks: where to put a window, how to remember placement for unfloat, etc. The base class ensures consistent state transitions regardless of engine type.

Constructor & Destructor Documentation

◆ ~PlacementEngineBase()

PhosphorEngine::PlacementEngineBase::~PlacementEngineBase ( )
override

◆ PlacementEngineBase()

PhosphorEngine::PlacementEngineBase::PlacementEngineBase ( QObject *  parent = nullptr)
explicitprotected

Member Function Documentation

◆ activateWindowRequested

void PhosphorEngine::PlacementEngineBase::activateWindowRequested ( const QString &  windowId)
signal

◆ algorithmChanged

void PhosphorEngine::PlacementEngineBase::algorithmChanged ( const QString &  algorithmId)
signal

Emitted when the active tiling algorithm changes.

◆ claimWindow()

void PhosphorEngine::PlacementEngineBase::claimWindow ( const QString &  windowId,
const QRect &  geometry,
const QString &  screenId,
bool  overwrite = false 
)

◆ clearUnmanagedGeometry()

void PhosphorEngine::PlacementEngineBase::clearUnmanagedGeometry ( const QString &  windowId)

◆ deserializeBaseState()

void PhosphorEngine::PlacementEngineBase::deserializeBaseState ( const QJsonObject &  state)

◆ engineSettings()

QObject * PhosphorEngine::PlacementEngineBase::engineSettings ( ) const
inline

◆ floatWindow()

void PhosphorEngine::PlacementEngineBase::floatWindow ( const QString &  windowId)

◆ forgetWindow()

void PhosphorEngine::PlacementEngineBase::forgetWindow ( const QString &  windowId)

◆ geometryRestoreRequested

void PhosphorEngine::PlacementEngineBase::geometryRestoreRequested ( const QString &  windowId,
const QRect &  geometry,
const QString &  screenId 
)
signal

◆ hasUnmanagedGeometry()

bool PhosphorEngine::PlacementEngineBase::hasUnmanagedGeometry ( const QString &  windowId) const

◆ navigationFeedback

void PhosphorEngine::PlacementEngineBase::navigationFeedback ( bool  success,
const QString &  action,
const QString &  reason,
const QString &  sourceId,
const QString &  targetId,
const QString &  screenId 
)
signal

◆ onWindowClaimed()

virtual void PhosphorEngine::PlacementEngineBase::onWindowClaimed ( const QString &  windowId)
protectedpure virtual

◆ onWindowFloated()

virtual void PhosphorEngine::PlacementEngineBase::onWindowFloated ( const QString &  windowId)
protectedpure virtual

◆ onWindowReleased()

virtual void PhosphorEngine::PlacementEngineBase::onWindowReleased ( const QString &  windowId)
protectedpure virtual

◆ onWindowUnfloated()

virtual void PhosphorEngine::PlacementEngineBase::onWindowUnfloated ( const QString &  windowId)
protectedpure virtual

◆ placementChanged

void PhosphorEngine::PlacementEngineBase::placementChanged ( const QString &  screenId)
signal

Emitted when the placement layout changes for a screen.

◆ pruneStaleWindows()

virtual int PhosphorEngine::PlacementEngineBase::pruneStaleWindows ( const QSet< QString > &  aliveWindowIds)
virtual

◆ releaseWindow()

void PhosphorEngine::PlacementEngineBase::releaseWindow ( const QString &  windowId)

◆ serializeBaseState()

QJsonObject PhosphorEngine::PlacementEngineBase::serializeBaseState ( ) const

◆ setEngineSettings()

void PhosphorEngine::PlacementEngineBase::setEngineSettings ( QObject *  settings)

◆ settingsPersistRequested

void PhosphorEngine::PlacementEngineBase::settingsPersistRequested ( )
signal

Emitted when the engine writes tuning values back to the settings object and wants the daemon to persist them to disk.

◆ setUnmanagedGeometries()

void PhosphorEngine::PlacementEngineBase::setUnmanagedGeometries ( const QHash< QString, UnmanagedEntry > &  geos)

◆ storeUnmanagedGeometry()

void PhosphorEngine::PlacementEngineBase::storeUnmanagedGeometry ( const QString &  windowId,
const QRect &  geometry,
const QString &  screenId,
bool  overwrite = false 
)

◆ unfloatWindow()

void PhosphorEngine::PlacementEngineBase::unfloatWindow ( const QString &  windowId)

◆ unmanagedGeometries()

const QHash< QString, UnmanagedEntry > & PhosphorEngine::PlacementEngineBase::unmanagedGeometries ( ) const
inline

◆ unmanagedGeometry()

QRect PhosphorEngine::PlacementEngineBase::unmanagedGeometry ( const QString &  windowId) const

◆ unmanagedScreen()

QString PhosphorEngine::PlacementEngineBase::unmanagedScreen ( const QString &  windowId) const

◆ windowFloatingChanged

void PhosphorEngine::PlacementEngineBase::windowFloatingChanged ( const QString &  windowId,
bool  floating,
const QString &  screenId 
)
signal

◆ windowFloatingStateSynced

void PhosphorEngine::PlacementEngineBase::windowFloatingStateSynced ( const QString &  windowId,
bool  floating,
const QString &  screenId 
)
signal

Emitted to sync floating state without restoring geometry.

Passive state-sync: engine-internal divergence correction.

◆ windowsBatchFloated

void PhosphorEngine::PlacementEngineBase::windowsBatchFloated ( const QStringList &  windowIds,
const QString &  screenId 
)
signal

Emitted when overflow windows are batch-floated during applyTiling.

◆ windowsReleased

void PhosphorEngine::PlacementEngineBase::windowsReleased ( const QStringList &  windowIds,
const QSet< QString > &  releasedScreenIds 
)
signal

Emitted when windows are released from engine management.

◆ windowState()

WindowState PhosphorEngine::PlacementEngineBase::windowState ( const QString &  windowId) const

◆ windowStateTransitioned

void PhosphorEngine::PlacementEngineBase::windowStateTransitioned ( const QString &  windowId,
WindowState  oldState,
WindowState  newState 
)
signal

The documentation for this class was generated from the following file: