Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
PhosphorEngine::WindowMetadata Struct Reference

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

Public Member Functions

bool operator== (const WindowMetadata &other) const
 
bool operator!= (const WindowMetadata &other) const
 

Public Attributes

QString appId
 
QString desktopFile
 
QString title
 
QString windowRole {}
 X11 WM_WINDOW_ROLE; empty for Wayland-native windows.
 
int pid = 0
 process id; 0 = unknown
 
int virtualDesktop = 0
 1-based x11 desktop number; 0 = all desktops / unknown
 
QList< int > virtualDesktops {}
 Full desktop list when the window spans SEVERAL (but not all) desktops; empty for the common single-desktop / sticky / unknown cases.
 
QString activity {}
 activity UUID; empty = all activities / unknown
 
PhosphorProtocol::WindowType windowType = PhosphorProtocol::WindowType::Unknown
 
std::optional< bool > isMinimized {}
 Kept current as of the LAST DELIVERED push, unlike isFocused: the effect re-pushes full metadata on every minimizedChanged edge, so mode-swap seed/restore decisions can rely on it — with the one-edge propagation delay that implies, and disengaged when the compositor never reported the field (consumers treat that as "cannot vouch", not "visible").
 
std::optional< bool > isDemandingAttention {}
 Urgency (KWin's demandsAttention).
 
std::optional< bool > isFullscreen {}
 
std::optional< bool > isSticky {}
 on all virtual desktops
 
std::optional< bool > isMaximized {}
 MaximizeFull (both axes)
 
std::optional< bool > isFocused {}
 focused at metadata-push time (point-in-time, NOT refreshed on focus change) — the open-path Float / RestorePosition resolvers read it at window-open, where it is fresh; the effect path reads live isFocused for continuously-evaluated border / opacity rules.
 
std::optional< bool > isTransient {}
 dialog/utility/popup/menu/tooltip/splash family or has a transient parent
 
std::optional< bool > isNotification {}
 notification / critical-notification / on-screen-display
 
std::optional< bool > keepAbove {}
 
std::optional< bool > keepBelow {}
 
std::optional< bool > skipTaskbar {}
 
std::optional< bool > skipPager {}
 
std::optional< bool > skipSwitcher {}
 
std::optional< bool > isModal {}
 
std::optional< bool > hasDecoration {}
 server-side title-bar / border
 
std::optional< bool > isResizable {}
 
std::optional< bool > isMovable {}
 window can be moved
 
std::optional< bool > isMaximizable {}
 window can be maximized
 
std::optional< int > width {}
 frame width in px
 
std::optional< int > height {}
 frame height in px
 
std::optional< int > positionX {}
 frame left edge X in px
 
std::optional< int > positionY {}
 frame top edge Y in px
 
std::optional< QString > captionNormal {}
 title without the WM-added app-name suffix
 

Member Function Documentation

◆ operator!=()

bool PhosphorEngine::WindowMetadata::operator!= ( const WindowMetadata other) const
inline

◆ operator==()

bool PhosphorEngine::WindowMetadata::operator== ( const WindowMetadata other) const
inline

Member Data Documentation

◆ activity

QString PhosphorEngine::WindowMetadata::activity {}

activity UUID; empty = all activities / unknown

◆ appId

QString PhosphorEngine::WindowMetadata::appId

◆ captionNormal

std::optional<QString> PhosphorEngine::WindowMetadata::captionNormal {}

title without the WM-added app-name suffix

◆ desktopFile

QString PhosphorEngine::WindowMetadata::desktopFile

◆ hasDecoration

std::optional<bool> PhosphorEngine::WindowMetadata::hasDecoration {}

server-side title-bar / border

◆ height

std::optional<int> PhosphorEngine::WindowMetadata::height {}

frame height in px

◆ isDemandingAttention

std::optional<bool> PhosphorEngine::WindowMetadata::isDemandingAttention {}

Urgency (KWin's demandsAttention).

Kept current the same way isMinimized is — the effect re-pushes full metadata on every demandsAttentionChanged edge — because urgency is only useful while it is live. Disengaged when the compositor never reported it, which consumers read as "not urgent" (an unknown urgency must not light a window up).

◆ isFocused

std::optional<bool> PhosphorEngine::WindowMetadata::isFocused {}

focused at metadata-push time (point-in-time, NOT refreshed on focus change) — the open-path Float / RestorePosition resolvers read it at window-open, where it is fresh; the effect path reads live isFocused for continuously-evaluated border / opacity rules.

◆ isFullscreen

std::optional<bool> PhosphorEngine::WindowMetadata::isFullscreen {}

◆ isMaximizable

std::optional<bool> PhosphorEngine::WindowMetadata::isMaximizable {}

window can be maximized

◆ isMaximized

std::optional<bool> PhosphorEngine::WindowMetadata::isMaximized {}

MaximizeFull (both axes)

◆ isMinimized

std::optional<bool> PhosphorEngine::WindowMetadata::isMinimized {}

Kept current as of the LAST DELIVERED push, unlike isFocused: the effect re-pushes full metadata on every minimizedChanged edge, so mode-swap seed/restore decisions can rely on it — with the one-edge propagation delay that implies, and disengaged when the compositor never reported the field (consumers treat that as "cannot vouch", not "visible").

◆ isModal

std::optional<bool> PhosphorEngine::WindowMetadata::isModal {}

◆ isMovable

std::optional<bool> PhosphorEngine::WindowMetadata::isMovable {}

window can be moved

◆ isNotification

std::optional<bool> PhosphorEngine::WindowMetadata::isNotification {}

notification / critical-notification / on-screen-display

◆ isResizable

std::optional<bool> PhosphorEngine::WindowMetadata::isResizable {}

◆ isSticky

std::optional<bool> PhosphorEngine::WindowMetadata::isSticky {}

on all virtual desktops

◆ isTransient

std::optional<bool> PhosphorEngine::WindowMetadata::isTransient {}

dialog/utility/popup/menu/tooltip/splash family or has a transient parent

◆ keepAbove

std::optional<bool> PhosphorEngine::WindowMetadata::keepAbove {}

◆ keepBelow

std::optional<bool> PhosphorEngine::WindowMetadata::keepBelow {}

◆ pid

int PhosphorEngine::WindowMetadata::pid = 0

process id; 0 = unknown

◆ positionX

std::optional<int> PhosphorEngine::WindowMetadata::positionX {}

frame left edge X in px

◆ positionY

std::optional<int> PhosphorEngine::WindowMetadata::positionY {}

frame top edge Y in px

◆ skipPager

std::optional<bool> PhosphorEngine::WindowMetadata::skipPager {}

◆ skipSwitcher

std::optional<bool> PhosphorEngine::WindowMetadata::skipSwitcher {}

◆ skipTaskbar

std::optional<bool> PhosphorEngine::WindowMetadata::skipTaskbar {}

◆ title

QString PhosphorEngine::WindowMetadata::title

◆ virtualDesktop

int PhosphorEngine::WindowMetadata::virtualDesktop = 0

1-based x11 desktop number; 0 = all desktops / unknown

◆ virtualDesktops

QList<int> PhosphorEngine::WindowMetadata::virtualDesktops {}

Full desktop list when the window spans SEVERAL (but not all) desktops; empty for the common single-desktop / sticky / unknown cases.

When non-empty, virtualDesktop equals the first entry.

◆ width

std::optional<int> PhosphorEngine::WindowMetadata::width {}

frame width in px

◆ windowRole

QString PhosphorEngine::WindowMetadata::windowRole {}

X11 WM_WINDOW_ROLE; empty for Wayland-native windows.

◆ windowType

PhosphorProtocol::WindowType PhosphorEngine::WindowMetadata::windowType = PhosphorProtocol::WindowType::Unknown

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