Integrate smart dynamic tiling into KWin
Closed, DuplicatePublic

Description

Description

Plasma has one of the advanced window managers. But unfortunately it lacks useful feature found on the other modern OS (GNOME, Windows 10).
What I mean:

  1. Tiled windows automatically resize.

If you put windows side by side and start resizing one of them, that window doesn't go on top of the other. Instead it pushes out other window (which adapts changing it's width to smaller to fill rest of the screen).

  1. Smart window tile placement.

If you tile window near other full-height window, your window doesn't fill exactly half of the screen. Instead it fills free area beside other full-height window.

Here's some references:
https://youtu.be/ZFdA7ben_eY?t=34
https://youtu.be/KNMeinHe4jo?t=45

It's already possible with KWin scripts:
KWin Quick Tile Enhancements
Sticky Window Snapping

But I'd love to see it integrated because it guaranties maintanance.

What it will take

<What do we need to do to make this reality? What kind of support do you need?>

How we know we succeeded

<Will we have fluffy kittens? Anything we can measure? How will the world be better once we're done with this?

Relevant links

<any links that will help people find more information and understand the goal better>

I am willing to put work into this

  • add your name

I am interested

  • add your name
Eiden created this task.Jun 12 2019, 8:39 PM

But I'd love to see it integrated because it guaranties maintanance.

It doesn't. All code, no matter whether it is will rot if noone cares about it

ognarb added a subscriber: ognarb.Jun 12 2019, 8:55 PM

Look like a micro task and not a macro task. You should create a wish in KDE bug tracker. Did you consider using i3 instead of KWin inside Plasma: https://userbase.kde.org/Tutorials/Using_Other_Window_Managers_with_Plasma

crozbo added a subscriber: crozbo.Jun 12 2019, 9:02 PM

This task is basically copy of my proposal T11067, where my going in wider solutions.
@nicolasfella yea you are right but i think @Eiden wanna say this, currently plasma have some kwin scripts to support proposed features but that is hacky way because of conflicting and break on plasma updates. If kwin natively support that features that guaranties better support/maintenance.

@ognarb tiling window manager is a completely different workflow. Also, I'd rather continue using scripts or allign windows with <meta>+right-mouse than refuse from window rules, zoom effect and other nice KWin features.
Thanks @crozbo , you explained it perfectly! I opened this proposal because your task is more complex and looks like "alternative KWin mode". While I want those features as addition to regular mode, especially after seeing how well they work with other DE-s

martinsotirov added a subscriber: martinsotirov.EditedJun 13 2019, 6:23 AM

I actually consider this a part of T11057 because something like this is a must for tablets.

@martinsotirov correct... all three propose (T11086, T11067 and T11057) are request for better tiling support...

lydia updated the task description. (Show Details)Jun 15 2019, 7:16 AM

I think this can be considered a subtask or duplicate of T11067.

hiangel added a subscriber: hiangel.Jul 2 2019, 6:39 AM

I think this can be considered a subtask or duplicate of T11067.

I think it isn't. Please, disregard the word "tiling", this task is about enhancing an existing feature of the "stacking" KWin part. Even if KWin ends up integrating tiling mode, this task can not be solved as part of that because this is about the "stacking mode" of KWin. I.e. users who would benefit from that are not the ones who use tiling mode.

I too don't consider this in any way related to a tiling WM.

This to me is just about enhancing and tweaking the current mechanism that snaps windows to monitor edges. Most people wouldn't even use the keyboard for that but rather drag the different windows with the mouse or finger.

@ngraham FWIW, I can see why you thought it's a duplicate: some code to solve this can also be shared with tiling mode. But don't let this confuse you: if tiling mode task was solved, this one still wouldn't. There is some intersection in terms of implementation, however they're still separate tasks.