diff options
| author | srdusr <[email protected]> | 2024-08-14 16:55:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2024-08-14 16:55:00 +0200 |
| commit | 380c4d90f63ac9c82455206072c2deac246a4fdc (patch) | |
| tree | d69026e4764a4e34f2002e08c384fa7fc331ac80 /crates/core/src | |
| parent | 09e63d204132f767cee7d0846e291d659f79fe90 (diff) | |
| download | srdwm-380c4d90f63ac9c82455206072c2deac246a4fdc.tar.gz srdwm-380c4d90f63ac9c82455206072c2deac246a4fdc.zip | |
Handle late title/class updates on XWayland windows
map_window_request only ever read window.title()/.class() once, at
MapRequest - for a client whose managed window doesn't carry
WM_NAME/WM_CLASS at that exact moment (or the properties simply arrive
later), Window.title/app_id stayed permanently empty. That reaches
srd.rule's class matching, this compositor's own titlebar text, and
every wlr-foreign-toplevel-management listener (a dock's running
indicator, an app switcher, icon lookup) - confirmed live via a peer
session's AGS instance rendering blank rows for Spotify and OpenSnitch.
Implements XwmHandler::property_notify (previously unhandled, a
no-op default) to re-read title/class on WmWindowProperty::Title/Class
and update Window plus notify rule/decoration/foreign-toplevel
listeners on an actual change - the XWayland-side mirror of
sync_toplevel_metadata, which already exists for exactly this problem
on the native xdg-shell path (see its own doc comment).
Not fully verified against the specific live case that surfaced this:
whether XWayland's X11Wm delivers property_notify for a *managed*
window whose real WM_NAME/WM_CLASS live only on an unmanaged sibling/
child (rather than arriving late on the same window) is still an open
question - this fixes the well-documented "arrives late" case with
certainty, and may or may not cover that harder case too.
Diffstat (limited to 'crates/core/src')
0 files changed, 0 insertions, 0 deletions