Bismuth-Forge / bismuth

KDE Plasma add-on, that tiles your windows automatically and lets you manage them via keyboard, similarly to i3, Sway or dwm.
https://bismuth-forge.github.io/bismuth/
Other
2.41k stars 93 forks source link

[FEATURE]: Manual Tiling Layout like bspwm #182

Open kinglouie opened 2 years ago

kinglouie commented 2 years ago

Summary

I'm coming from bspwm and tried a few other wms like awesome but always went back to bspwm because there I have a lot more freedom where the window is placed and which size it occupies.

I really would love a manual tiling layout for bismuth because it is the only viable option to use tiling with kwin.

A clear and concise description of what you want to happen

See https://github.com/baskerville/bspwm or https://github.com/koekeishiya/yabai for macos

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

No response

Additional info

No response

venglov commented 2 years ago

As I understood this is the same behavior as the pop shell has. Definitely super necessary to implement it in KDE! 🙏 @gikari

kinglouie commented 2 years ago

Yes, basically each window is stored in a binary tree, where the size of the window is determined by a ratio between the two nodes on the same level. When creating new windows the currently focused window is getting split by a predefinded ratio, so I can create any custom layout on the fly very easily.

bspwm has a powerful rule system with oneshot rules which allows me to create a few different workspaces after boot with my default apps already running in my preferred layout for each workspace.

gikari commented 2 years ago

I think, in the future we should refactor the existing layouts into that binary tree approach and make every layout a preset with a particular tree structure and rules.

Still not sure about the implementation details, but the idea seems good, as it's flexible. However, some design is needed: how exactly the initial layouts could be wrapped around that?

This issue actually comes as the second item in the roadmap, right after implementing plasma applet (it's currently in progress). This is definitely will be implement in some way or another.

kinglouie commented 2 years ago

@GarlandKey while this would be nice it has nothing to do with my feature request because it doesnt use a binary tree and also this is about creating custom layouts on the fly not preconfiguring baked layouts.

TamasBarta commented 2 years ago

This popped up on Reddit as well. The distinction definitely must be made. If we can use an "editor" to preconfigure custom layouts, that won't help a bit, because the very first second we open a new window, we have to fire up the editor to design a layout for the new setup, and we would have to switch between those layouts every time we open a new window or close. I'm sure you saw i3, or how you can alter layouts while using i3. In bspwm it is very similar, but you cannot go above 2 windows, opening a new window always puts the new and the currently selected one in a node that splits them either vertically or horizontally. I personally grew to like i3's approach better after using both, but both works perfectly fine to tile windows manually on the fly.

We might be thinking of the same thing, but then you'd need to explain the editor better to us, because now it sounds like a UI, or a config file that lets us preconfigure and persist a layout.

colemickens commented 2 years ago

Sorry to add noise, but is this the same tiling that is available in Sway? I feel like a poser a bit, but I got very comfortable with divying things up however I wished by just $meta-dragging windows around and into place. I can already do that with Bismuth, but only in fixed layouts. I think this issue covers my use case, but if not I'll open another. Thanks <3 Bismuth has made me take another look at Plasma, and Wow! :slightly_smiling_face: :heart: