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?