User can't escape from (fullscreen) override-redirect X window
With _NET_WM fullscreen window handling being fixed with #114 (closed), the problem of handling (fullscreen) override-redirect X windows remains.
If user starts e.g. one of these programs:
And configures their window to be in fullscreen, they change their window to be override-redirect (O-R) one.
Which results in:
- Weston panel being shown on top of the window
- Window covering rest of the screen i.e. all other apps/windows
- User being unable to Alt-TAB (*) to another application and/or to kill the program
- Window stopping to get any input from keyboard or mouse, i.e. user can't ask program itself to quit
I don't think Weston panel being shown on top of the O-R window is a problem, but user being unable to escape from the program is a serious UI reliability issue. Only thing non-technical user can do that at that point is power-cycle their computer. This is rather bad user experience, and I think against Wayland design principle for UI security/robustness.
There are some things that could be done to allow user to escape gracefully from this situation, at least when O-R window covers the whole screen (or workspace) area:
- Allow O-R layer to receive input, or
- Have O-R layer in the window stack so that user can Alt-TAB'ed to other windows. Whenever another O-R window opens, O-R layer should then be topped again
I think latter is preferable as it doesn't require application to co-operate and avoiding input to O-R windows is more secure. Large enough O-R windows might also be overlaid with huge "Legacy Overlay-Redirect Window, escape with Alt/Windows-TAB" text.
(*) For some reason Weston requires use of Windows key instead of Alt.
Here's an example of Xracer window properties:
WM_CLASS(STRING) = "xracer", "XRacer" WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW WM_LOCALE_NAME(STRING) = "en_US.UTF-8" WM_HINTS(WM_HINTS): Initial state is Normal State. WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified location: 0, 0 user specified size: 1920 by 1080 WM_CLIENT_MACHINE(STRING) = "skl-skull" WM_ICON_NAME(STRING) = "FREEGLUT" WM_NAME(STRING) = "FREEGLUT" xwininfo: Window id: 0x400002 "FREEGLUT" Absolute upper-left X: 0 Absolute upper-left Y: 0 Relative upper-left X: 0 Relative upper-left Y: 0 Width: 1920 Height: 1080 Depth: 24 Visual: 0x1c8 Visual Class: TrueColor Border width: 0 Class: InputOutput Colormap: 0x400001 (not installed) Bit Gravity State: ForgetGravity Window Gravity State: NorthWestGravity Backing Store State: NotUseful Save Under State: no Map State: IsViewable Override Redirect State: yes Corners: +0+0 -0+0 -0-0 +0-0 -geometry 1920x1080+0+0
=> Maybe other FreeGlut programs also use O-R for fullscreen?