Jazqa / kwin-quarter-tiling

An easy tiling script for KWin
GNU General Public License v2.0
367 stars 20 forks source link

The ultimate tiling option: user defined layout per monitor #82

Open kupiqu opened 4 years ago

kupiqu commented 4 years ago

This is just wishful thinking and most likely very hard to accomplish, but given the different screen resolutions and the option to display in portrait vs landscape orientation, this would be a great feature to have, especially for 2+ monitors of different resolutions/orientations.

This is sth I frequently hear from other users, they like quarter tiling very much but quarters don't apply to their system nicely. For instance if orientation is portrait, one may prefer rows to columns (especially when resolution is low). If resolution is high, one may prefer having > 2 columns (especially when orientation is landscape).

So, instead of implementing a bunch of possible layouts, better is to create a framework in which the user is able to define the layout that best applies to her system.

This would require two specific feature requests:

Jazqa commented 4 years ago

user defined layout

This is difficult and there are a thousand different ways to do this, most of which would eventually lead up to BSP tiling where you just split tiles until you've capped at the maximum amount you've set and get tossed to the next desktop. Problem is, once I allow the columns and rows to be set - the filling order would need an option too. If it's just "columns/rows first" and you'd run with 7 columns, it'd fill all the 7 columns before splitting any of the tiles horizontally.

layout per monitor

This is quite simple, but showing it on the configuration UI in a simple, easy-to-understand kind of way will be a minor pain in the ass.

kupiqu commented 4 years ago

layout per monitor

This is quite simple, but showing it on the configuration UI in a simple, easy-to-understand kind of way will be a minor pain in the ass.

I think one possible way would be something similar to this in the applet-window-title:

image

The user could define a default layout in main UI (grid specification and filling order, e.g., 2 x 3 using matrix notation nrows x ncols, and rows for filling order). Then manage specific behavior (like substitutions in the screenshot) for specific monitors if wanted. In the pop-up window, the user is presented a list of available monitors and can adjust their tiling options (grid specification and filling order as above).

It would be great if this info is saved (similar to kscreen) so one does not need to redo when that monitor is disconnected and reconnected.

Problem is, once I allow the columns and rows to be set - the filling order would need an option too. If it's just "columns/rows first" and you'd run with 7 columns, it'd fill all the 7 columns before splitting any of the tiles horizontally.

You're right, I added filling order in the rationale above

kupiqu commented 4 years ago

Adding a "no tiling" option would also be appreciated in some cases, so the tiling layout in main UI and "substitutions" could be either No tiling or nrows x ncolumns, and filing order would only apply when tiling is enabled.

Jazqa commented 4 years ago

I’ve got some ideas for this, but it’ll take longer than most additions. At least the rewritten script makes this a little easier to implement, as whatever the approach, it’s completely doable with just a layout file (e.g src/layouts/QuarterVertical.js).