Bug 333319

Summary: KWin should default to preventing configure (and map) requests that move the client off any screen and only allow by rule
Product: [Plasma] kwin Reporter: Damian Nowak <oferty>
Component: xrandrAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED WORKSFORME    
Severity: wishlist CC: kde.org, postix
Priority: NOR Flags: thomas.luebking: Decision-Required+
Version First Reported In: 4.11.8   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Damian Nowak 2014-04-11 13:06:24 UTC
I have 4 screens. The setup is:

http://upload.nowaker.net/nwkr/1397220340_xrandr-layout.png

Some of applications open outside of the screens making them totally inaccessible. They appear in alt-tab menu but it's not possible to reach them.

http://upload.nowaker.net/nwkr/1397220400_alt-tab.png

When taking a full-screen snapshot with Ksnapshot, Adobe Reader is fully visible. But you know, I am not able to reach it with mouse. I'd rather not use Ksnapshot to read my PDFs. ;-)

http://upload.nowaker.net/nwkr/1397220762_fullscren.png

I don't know if it's kwin or not. But description of the xrandr component ("Bugs related to XRandR. General multiscreen issues should be put into this component.") says I should report it here.

All the affected apps:
- Adobe Reader - opens outside every time, not usable
- gns3 - opens some popup windows outside, hard to use (https://github.com/GNS3/gns3-gui/issues/1)
- Skype - opens some popup windows outside, e.g. confirm to leave a chat, rendering it impossible to leave. ;) 

Using the latest Arch Linux, KDE 4.14.4, xrandr 1.4.2, mesa 10.1.0, libdrm 2.4.52, Xorg 1.15.
Radeon 7870 with open source driver, with Glamor mode.

Thanks.

Reproducible: Always
Comment 1 Martin Flöser 2014-04-11 13:25:17 UTC
I assume part of the problem is that the area around (0,0) is in a non-visible 
space. Overall the X-Screen is the bounding rect of your setup, so an 
application might happily place their windows in such an area without further 
checking whether it's valid.

Of course KWin should apply some force checking, but well four screens is 
difficult to test ;-)

As a workaround you can use window rules to force a position on your window.
Comment 2 Damian Nowak 2014-04-11 13:33:49 UTC
I don't know the code, but theoretically Kwin can get all the coordinates from xrandr:

DisplayPort-0 connected 1920x1200+1920+0
HDMI-0 connected primary 1920x1200+1920+1200
DVI-0 connected 2560x1440+3840+960
DVI-1 connected 1920x1200+0+1200

If the application puts itself into a wrong coordinate, KWin could react and move it somwhere to "primary" screen (or the screen where the cursor is on).
Comment 3 Thomas Lübking 2014-04-11 14:00:44 UTC
We'd need to know whether the client demands thatr position or moves itself after mapping.

Please run
    kcmshell4 kwinrules
setup a new rule for the window and in "Size & Position" set "Ignore requested size & position" to yes and try "apply initially" first, then "force" and report which setting is required to move  the window in sight.
If you can't "detect" the window (for lacking access) you can just create a "blind" rule (no detection, will match every window; you'll get a warning) for this test.

Thanks.
Comment 4 Damian Nowak 2014-04-11 14:40:07 UTC
Thanks Thomas. "Apply initially" never works, whereas "Force" fixes all the problems.

I wasn't able to catch Adobe Reader, so I created a blind rule. These fields "Window class" or "Window title" never wanted to work for me.

I am OK to set a rule temporarily for Adobe Reader - however, only a blind rule seems to work for me. I can't use it every day since it breaks other stuff (e.g. positioning of ALT+F2 menu). I tried to use the following:

- Window class - Substring Match - Adobe Reader
- Window title - Substring Match - Adobe Reader
Comment 5 Thomas Lübking 2014-04-11 15:06:42 UTC
Once the window is in sight, try to use the detect button (unless adobe also manages to alter the window class after mapping the window ...)
To avoid krunner, only match "normal" window types.

Bug is in AAR, we need to figure whether we can boldly deny "stupid" configure requests by default.
Comment 6 Damian Nowak 2014-04-11 15:11:53 UTC
Thanks, works now. I have to do the same with Skype and gns3.

Hope you can code a real fix for that. Thanks.
Comment 7 Martin Flöser 2014-04-11 20:12:10 UTC
sky surprises me - shouldn't it be Qt?
Comment 8 Thomas Lübking 2014-04-11 20:28:41 UTC
See eg bug #231524 - good toolkit doesn't mean nice client...

This will likely be part of a "works everywhere" strategy (similar to some weird things in firefox)
Iirc, there's also a bug where the client just adds an XMoveResize window to ensure the WM got it right and another one where the client assumes the request is always granted (leading to a diverging internal idea of its position - not! the tcl/tk thing)

The clients will just check where they got positioned, define it "absurd" and move into a "safe" position instead (QWidget::setGeometry() ...)

The idea that clients will just XMoveResizeWindow if we're to strict is my major concern in resolving this (codewise it's simple)
Comment 9 kde.org 2021-11-06 12:08:14 UTC
This bug report is quite old. Can you please confirm, that the issue still persists with KDE 5.23?
Comment 10 Bug Janitor Service 2021-11-21 04:38:46 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 11 Bug Janitor Service 2021-12-06 04:38:09 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!