Fix XEmbed tray docking initialization#264
Conversation
Correct the embedded-notify event, decode the mapped flag using the Xlib property representation, and publish the initial embedder geometry before docking. Developed and tested with assistance from OpenAI Codex.
21bd6ec to
5e552d5
Compare
OpenQA test summaryComplete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026072016-devel&flavor=pull-requests Test run included the following:
New failures, excluding unstableCompared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026050504-devel&flavor=update
Failed tests15 failures
Fixed failuresCompared to: https://openqa.qubes-os.org/tests/176874#dependencies 21 fixed
Unstable testsDetails
Performance TestsPerformance degradation:28 performance degradations
Remaining performance tests:83 tests
|
| conf.width = 32; | ||
| conf.height = 32; | ||
| conf.override_redirect = 0; | ||
| write_message(g->vchan, hdr, conf); |
There was a problem hiding this comment.
This looks a bit risky, because the above XMoveResizeWindow() call will eventually also result in a MSG_CONFIGURE message (in response to X11 event). But, IIUC the order or messages is important here, and the other MSG_CONFIGURE will be send after MSG_DOCK. So, maybe duplicate message is less bad...
|
Finally the nm-applet icon is visible: https://openqa.qubes-os.org/tests/189082#step/clipboard_and_web/3 :) |
|
Is it draft because of unverified commit signature? Or something else? |
|
Converted. Can sign in about two weeks |
Summary
Fix XEmbed tray clients that remain mapped as blank
1x1icons when proxied to a desktop tray.The live tray-docking path now:
XEMBED_EMBEDDED_NOTIFYevent instead of the address of the incoming-event pointer;XEMBED_MAPPEDusing theunsigned longrepresentation returned byXGetWindowProperty();32x32default embedder geometry; andMSG_DOCK, matching the ordering used when full window state is resent.Root cause
The incorrect
XSendEvent()argument prevented clients from receivingXEMBED_EMBEDDED_NOTIFY.Fixing only that call was insufficient for clients initially created at
1x1: dom0 still knew the pre-dock window as1x1and configured the docked client back to that size. Additionally, reading a format-32 X property throughint *selects the wrong slot on 64-bit systems, so the mapped flag could be missed.Validation
gui-agent/qubes-guifrom a clean object state with the project's-Wall -Wextra -Werrorflags.xembedsniproxyin dom0.1x1changed from receiving no embedded notification and remaining1x1to receivingXEMBED_EMBEDDED_NOTIFY,MapNotify, and a stable32x32configure event.32x32andIsViewable.sys-netwith the realnm-applet; the previously blank NetworkManager icon became visible and was tinted with the qube's red label color.AI assistance disclosure
This change was developed and tested with assistance from OpenAI Codex. The runtime tests and final visual confirmation were performed interactively on the affected Qubes OS system.