Flupp / sticky-window-snapping

A KWin script which lets snapped window edges stick together when one window is resized.
https://store.kde.org/p/1112552/
121 stars 12 forks source link

In KWin5 this no longer works with quick-tiled windows #1

Closed jospoortvliet closed 9 years ago

jospoortvliet commented 9 years ago

In kwin 4.x it works perfect, in 5.x you will have the problem that a window which is quick tiled can't be easily resized (it snaps back when you resize it). So the awesome thing you can do in 4.x where you quick tile a window to the left, then one to the right, then you just resize in the middle to change the percent each has - that doesn't work in KWin 5.x.

Here's a gif of how it doesn't work anymore... (and at the end - that was what I was hoping to accomplish) sticky-snapping

Flupp commented 9 years ago

I hope this will fix it. The fix is not released yet.

jospoortvliet commented 9 years ago

@Flupp aah, that does indeed look related. I'm building a kwin package for openSUSE Tumbleweed to see if that fixes: https://build.opensuse.org/package/show/home:jospoortvliet:branches:KDE:Frameworks5/kwin5

https://build.opensuse.org/package/show/home:jospoortvliet:branches:home:jospoortvliet:branches:KDE:Frameworks5/kwin5 because it takes forever to build (I know, I'm doing something evil here).

Now yes, it makes things better - but not perfect, oh no. Rather unpredictable, actually. If you have a bunch of windows, you'll notice they do weird stuff. A good example: tile a window to the right, tile one to the left. Move one - the other disappears. Turns out it's behind the other, being about half the size (1 quarter of the width of the screen). You can make it work, though - quick tile one left, move it a bit back to the edge. quick tile the other to the right, move it a bit back. move it then against the first one you tiled to the left. All is now good! But maximize one of the two, then go back to the first and resize it - the one you maximized jumps back like it was still connected.

Not sure if it's a KWin bug still, or something in the script interacting weirdly...

jospoortvliet commented 9 years ago

BUT: it is an improvement, for sure. It takes less effort to make it work so I'll take it for now.

luebking commented 9 years ago

I've a bunch of extra kwin patches locally, but I don't think in this area. From what I can say, this seems to work as expected with 5.4

What's a bit weird (but in the script code) is that two entirely unconnected windows might align, as long as one of their edges is aligned (eg. two not vertically adjacent windows which randomly share the left edge (eg. the screen edge))

jospoortvliet commented 9 years ago

@luebking hmm, you mean that a window bigger than another one can still do a sticky resize? If I understand correctly then that is indeed a feature, not a bug.

Here's a gif showing it. Also showing some inconsistency, sometimes a window will stick, sometimes not. sticky-snapping-patched

Note that in KWin 4.x this behavior was entirely predictable - eg like in the 2nd half, where the skype chat window doesn't respond - such things never happened. If a window was snapped to another, either by dragging or resizing, they would stick and resize together, period. Now it seems unreliable, I'm not sure why as I can't seem to find a clear pattern.

One thing I did notice is that after a 'kwin_x11 --replace' I had to restart some apps before KWin was willing to make 'em move sticky.

jospoortvliet commented 9 years ago

Ok, so - some more testing, some more checking. Looks like I applied the patch wrongly, but - it now seems to work quite well.

edit: I finally tested in a fresh account and it seems the patch for bug 348640 fixes all problems that I could find. Awesome, @luebking !!