This bug has been reported to the Debian BTS 9 months ago by Christophe Troestler. It was against Xnest, but the same bug is valid for Xephyr, and I guess Xephyr is more likely to get fixed.
Xnest/Xephyr does not set the WM_CLASS property which makes it difficult to
treat it specially by window managers.
XKLAVIER_STATE(INTEGER) = 0, 0
_NET_WM_ICON_GEOMETRY(CARDINAL) = 697, 1018, 200, 32
window state: Normal
icon window: 0x0
_NET_FRAME_EXTENTS(CARDINAL) = 5, 5, 23, 5
_NET_WM_DESKTOP(CARDINAL) = 5
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE
program specified minimum size: 640 by 480
program specified maximum size: 640 by 480
WM_NAME(STRING) = "Xephyr on :1 ( ctrl+shift grabs mouse and keyboard )"
Sorry about the phenomenal bug spam, guys. Adding xorg-team@ to the QA contact so bugs don't get lost in future.
Created attachment 14625 [details] [review]
Proposed patch. Please review.
This works in my hands and should conform to the ICCCM.
Created attachment 14673 [details] [review]
This is slightly cleaner than my last patch. The class hint structure pointer is now just a variable on the stack of hostx_init rather than a part of the global structure, which is unnecessary. I also only allocate and free it once rather than each time in the inner loop, thus saving some churn.
Applied to git, thanks!
Note, only applied to Xephyr. If someone wants to fix it for Xnest, yay, please reopen this bug to let me know.