-
-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement WM_STATE in X11 GUI agent #121
Conversation
V2: use the correct variable name (winid -> window), and added gpg signatures. Sorry I accidentally pushed a broken version the first time. On a side note, I found that trying to build this using |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please rebase it (and make the PR) on master branch. When merged, I'll cherry pick it to release4.0.
Otherwise looks good.
The internal variable "wm_state" is used to store the X atom "_NET_WM_STATE". Rename this variable to "net_wm_state" to avoid confusion, because "WM_STATE" is something different from "_NET_WM_STATE" and we need to handle both.
The WM_STATE property is defined by ICCCM, and should be set by the window manager to indicate the current state of a client window. It is used for two primary purposes: - A client can examine the property to determine whether the client's own window is conceptually "visible" (NormalState) or "hidden" (IconicState). - A client can look for this property on other clients' windows, in order to distinguish application windows (which have the WM_STATE property) from windows created by the window manager. One notable program that makes use of the latter feature is Mozilla Firefox, which allows WebRTC sites to perform "screen sharing" - but in order to share a single window rather than the whole screen, that other window must have the WM_STATE property. We want to set this property when a client window is mapped, and unset it when the window is unmapped (withdrawn). In Qubes, we pretend that the window is always in normal state, regardless of whether it's currently minimized/iconified/shaded in dom0. Note that this property shouldn't be set for override-redirect windows, since those are beyond the window manager's purview.
Now rebased and I think I set the target branch correctly. I haven't tested this on 4.1, but it ought to work. :) |
@bemoody have you uploaded your key to a keyserver? If so, the pipeline probably just needs to be retried. |
PipelineRetry |
(the above is about gitlab-ci, not signature check - the key is still missing) |
My public key ID is FBE2DC9A105D63ABCC5E679D323A63063AC869DF and it
should be on the keyservers. Let me know if I need to upload it
anywhere in particular, or anything else I can do to verify myself. ;)
|
Oh, I used a signing subkey, so perhaps that's confusing the
verification system? My subkey ID is
F0D84E04D8D1935EE37A14E9905D8AB782223619.
|
Using a subkey is considered best practice, and it should not confuse the verification scripts. If it does, that’s a bug in the scripts. @marmarek have the scripts been tested with a subkey? |
Which one? |
PipelineRetry |
works. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! It works!
These changes implement the WM_STATE property on the X11 AppVM side - allowing applications to identify the toplevel windows of other applications that are running in the same VM.
This is necessary for "screen sharing" of individual windows in Firefox and possibly other, similar programs: QubesOS/qubes-issues#5789