Skip to content
This repository has been archived by the owner on Jun 16, 2024. It is now read-only.

[FEATURE]: Implement sublayouts #93

Open
juacq97 opened this issue Oct 3, 2021 · 3 comments
Open

[FEATURE]: Implement sublayouts #93

juacq97 opened this issue Oct 3, 2021 · 3 comments
Labels
enhancement New feature or request help wanted Extra attention is needed
Milestone

Comments

@juacq97
Copy link

juacq97 commented Oct 3, 2021

Summary

Sometimes we want to arrange windows on a different way than the included layouts. For example, sometimes could be helpful to have the first half of the stack area with two horizontal windows and the second half with the windows stacked. A configurable (but not too configurable at the level of i3 to avoid too much complexity) can be very hepful for those situations.

A clear and concise description of what you want to happen

signal-2021-10-03-104956

Look at this example of the stacktile layout for river, at the right it's a window, at the left it's the stack, the first half has only one window and the second half has a stack of windows.

A clear and concise description of any alternative solutions or features you've considered.

Instead of having a configurable layout can be a bunch of hardcoded layouts .

Additional info

I'm not sure if that is even possible with kwin, QML or the kwin API

@juacq97 juacq97 added the enhancement New feature or request label Oct 3, 2021
@gikari
Copy link
Member

gikari commented Oct 3, 2021

I am not sure if I understand, what exactly you want to happen, but here is my interpretation: you want the screen surface to have a layout, which consists of nodes, where each node is either a layout or a separate window. Each layout node is represented the same as the root layout node (though I am not sure how deep this can go and how to design shortcuts around this).

That's an interesting idea, but I am not sure how it should work in the end, especially if we consider the current state, where we have a fixed amount of layouts.

I'm not sure if that is even possible with kwin, QML or the kwin API

Technically it is possible, but requires a lot of work. (Though, once again, I might underestimate, because I cannot comprehend the whole scope yet). I would like to see some more designs, demos and use cases for that kind of functionality, so I can better understand how to implement it and present options to the end user.

@gikari gikari added help wanted Extra attention is needed needs more info The issue needs more information from the submitter side labels Oct 3, 2021
@juacq97
Copy link
Author

juacq97 commented Oct 3, 2021

recording.mp4

Here is a demo of the river stacktile layout. Of course this is too customizable and maybe too complex to implement as we have hardcoded layouts instead of manual tiling. I can imagine some new layouts, for example, 1 master, 1 window on top of the stack and a stack of windows below (like at the start of the video), another with dwindle at top and stack at bottom, maybe a new keybinding only applicable to this new layouts to move windows between areas.
Another layout I would like to see is something like this (recreated on i3) similar to three columns but with stacks at the sides

i3 dream

Again, maybe this is too complex or out of scope for bismuth

@gikari
Copy link
Member

gikari commented Oct 3, 2021

The last layout is actually already possible (Using Three Column Layout with Master Area size 1):
Screenshot_20211003_212151

Edit: Sorry, I misunderstood. You were asking for stacks on the sides.

As for the first demo - it's actually a nice idea to implement the "remainder" stack. We have some layouts, that become monstrous, when you add a lot of windows to it. For example, now Quarter layout brings after 5th window it not itself anymore and puts new window outside. If we take the river approach and create a remainder area, the extra windows could definitely go to stack. Or take Tile layout - too many windows on the secondary area, and you cannot read anything anymore, as the windows became squished.

As for the scope problem - it's not desirable to create features for the features' sake, it's better to focus on use cases, but as you've demonstrated - this small one has its use (remainders stack).

I think to implement this feature, we need to divide the layout surfaces into some logical areas. We already have master area, but the rest of the space is not divided. This, however, needs UI/UX research of different layouts - what we think is primary, secondary and the remainder areas in the Monocle, Tile, Quarter and other layouts. This way, we do not increase complexity by introducing sublayouts and various UI/UX problems along with it.

@gikari gikari removed the needs more info The issue needs more information from the submitter side label Oct 5, 2021
@gikari gikari added this to the 4.0 milestone Nov 17, 2021
@gikari gikari mentioned this issue Sep 13, 2022
19 tasks
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request help wanted Extra attention is needed
2 participants