tarkah / grout

Simple tiling window manager for Windows
MIT License
205 stars 8 forks source link

Window state and dynamic resizing #33

Open DiXN opened 4 years ago

DiXN commented 4 years ago

It would be nice to be able to resize applications by one tile with a hotkey.

For example in case of a 4x1 grid, where two application each occupy two tiles, pressing the hotkey would make one application occupy three tiles and the other one then.

I am not sure how to keep track of how many tiles each application occupies though. This could be especially difficult with more complex layouts and applications stacking on top of each other.

tarkah commented 4 years ago

My gut feeling is this is out of scope. I really want to keep this program simple without too many shortcuts, primarily focused on quickly resizing with the grid. As you mentioned, a lot of additional development would need to be implemented to allow tracking all windows, probably in some sort of tree-like structure.

This would push the program to need to behave more like a full blown tiling window manager. A few good alternatives exist that would give someone that level of control:

DiXN commented 4 years ago

I figured that this might be out of scope as well as it drives up complexity. On the other hand, the basic concept of this would not be limited to hotkeys. This also could enhance the original indented workflow with the mouse because now each application has to be resized individually, if one needs to be resized in order for all of them to be aligned again.

As to the alternatives that you mentioned, I did test all of them a little bit but none of them felt right on Windows or maybe I just did not test them enough or even used them properly. I like this window manager because it is sort of in between and therefore it felt more natural on Windows.

In the end I am also a bit conflicted on this so maybe I'll test something in my fork and see, if there is a sensible solution and furthermore see if this would be a sensible addition.

tarkah commented 4 years ago

I'm definitely down for trying to scope something sensible out. And if we land on something we like, we can maybe push it into a 1.0.0 release, along with some refactoring.

I think it's important we define this really well. I'll try to collect my thoughts around this and list them out in detail.

tarkah commented 4 years ago

So we're talking about adding a feature that tracks "certain" windows against the grid, and when one window is resized within the grid, the other windows will intelligently resize around that window. So if a window increases in size by columns, any other windows that intersect with that column need to shrink past that column. Same for the reverse and by rows.

A list of questions / concerns / thoughts:

There are probably a lot of edge cases I haven't thought of and already this seems a bit unmanageable outside of some very simple layouts. I'd be interested in your thoughts as maybe I am over complicating the original thought.

DiXN commented 4 years ago

Those are some valid concerns!

The two approaches I currently thought of are:

A lot of questions and things to consider for sure.