timbertson / shellshape

tiling window manager extension for gnome-shell
http://gfxmonk.net/shellshape/
Other
396 stars 38 forks source link

feature request: 3-column layout #106

Open quesada opened 11 years ago

quesada commented 11 years ago

With many monitors in the 2600 x 1400 range, it's becoming more and more needed.

jamartinb commented 11 years ago

+1

engelfrost commented 10 years ago

+1

cmlsharp commented 10 years ago

+1

Amxx commented 9 years ago

Would be a really nice feature on 3200x1800 laptop !

william-gr commented 9 years ago

+1

cmlsharp commented 9 years ago

+1

timbertson commented 9 years ago

I don't have plans to implement this any time soon myself, but if anyone wants to submit a PR / patch, that'd be most welcome :)

bufke commented 9 years ago

+1 I'd be willing start a bounty on this.

timbertson commented 9 years ago

Closed? This isn't implemented, and there seems to be plenty of interest so I'm reopening. @quesada I think you can remove yourself from notifications by unsubscribing, if that's what you were after.

AlexDunmow commented 8 years ago

+1

nzjrs commented 7 years ago

+1 I'd be willing to put a bounty on this too.

rhofour commented 7 years ago

I don't have much use for a three column layout, but if there's a bounty I could probably spend the time and get this working.

How do people imagine this should work?

The simplest way to do this would probably be to make a new horizontal layout where the minor split is also horizontal. The default main split could be set to 1/3 and the minor split to 1/2 so that when three windows are tiled this way they're all equal width. I think this would be the most natural fit here, but as someone who's never really wanted a three column layout I'm not sure if I'm missing something.

rhofour commented 7 years ago

So, one possible problem with my suggestion is that if we start at 1/3 for the first split, but only have two windows then things would probably seem a bit weird.

Another possibility is a layout which automatically keeps all columns identically sized, but this then loses the ability to resize a column.

A third option, and the very least work, would be to a new horizontal layout where the only difference is that the minor split is horizontal. When you have two windows it would work just like the current horizontal mode. When you add a third then the primary window would take up half the screen and the other two would take up one quarter each. At this point you could then use the usual keys to resize to something close to equal width.

Any thoughts on these options?

timbertson commented 7 years ago

I always imagined that a 3 column layout would have the ability to have a configurable number of windows in each column. So you could have (1,1,1) for three columns, but then (1,1,2) for two full-height winows and then two half-height windows on top of each other in the third column. Or (1,2,2) for a single tall column and then a 2x2 grid in the other two-thirds of the screen. The trouble is, shellshape has a hardcoded notion of main & minor split, so it's not clear how you'd configure this (and how to make sane keybindings).

Amethyst on OSX has "row" and "column" layouts, where you can just split the screen into n rows or columns, one per window. Such a layout would naturally extend to (2,3,4,...) columns, but without the ability to ever have more than one window per column. This could be implemented as @rhofour suggests (with the main and minor axes being the same, unlike the existing layouts), or shellshape could probably be extended to understand layouts with only a single axis.

Would such a row / column layout that work for the people who've expressed interest in a 3 column layout? Or is it important to you that you have 3 columns, and extra windows get stacked within a column instead of adding a new column?

rhofour commented 7 years ago

The biggest problem I see there is the sane keybindings. In addition, this feels like it would make things far more complicated solely to make it needlessly powerful, but maybe I just use my window manager differently. It's also not clear that there's an obvious way to handle (1,1,2) if you have less than four windows.

One way I could see something this powerful working is with some sort of recursive tiling where each tiled area could be retiled. It would complicate things, but it would make everything even more powerful than your suggestions.

Still though, I think the simplest option is best here. If working with the window manager becomes too complicated then you might as well just use the mouse.

nzjrs commented 7 years ago

Thanks for discussing this.

With my monitor (3440x1440) having a three column layout that can't have more than 1 window in the rightmost 2 columns (my understanding of the first suggestion) would be too restrictive as terminals in the rightmost column would be 1440px high, which is often too much for my needs. Therefore the last suggestion (or any implementation where extra windows get stacked within the column) is preferable.

One other feature suggestion. As I primarily work in the centre column, maintaining a key-binding / concept that allowed growing this column by shrinking the columns on either side would be useful.

On 2 January 2017 at 02:22, Richard A Hofer notifications@github.com wrote:

The biggest problem I see there is the sane keybindings. In addition, this feels like it would make things far more complicated solely to make it needlessly powerful, but maybe I just use my window manager differently. It's also not clear that there's an obvious way to handle (1,1,2) if you have less than four windows.

One way I could see something this powerful working is with some sort of recursive tiling where each tiled area could be retiled. It would complicate things, but it would make everything even more powerful than your suggestions.

Still though, I think the simplest option is best here. If working with the window manager becomes too complicated then you might as well just use the mouse.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/timbertson/shellshape/issues/106#issuecomment-269928226, or mute the thread https://github.com/notifications/unsubscribe-auth/AACjo8DqVtaBJtmJRAqIAqHBT4epf9Vdks5rOFFDgaJpZM4AXdOE .

jluttine commented 7 years ago

Wouldn't it be quite straightforward to have arbitrary number of columns and arbitrary number of windows stacked in each column? I think almost all the key bindings etc should work nicely with that. Only resizing would need some reconsidering because currently there is only one boundary to resize so two key bindings suffice, right? Or am I missing some other functionality / key bindings that would need some re-thinking?

Some suggestions:

EDIT: About resizing: in column mode, it seems that stacked window vertical resizing affects the boundary below the current window, not both, so it might be more consistent to resize the rightside boundary of the column (except for the rightmost column, there is only leftside boundary to resize).

rhofour commented 7 years ago

So, it sounds like one thing that would work is adding some new "Custom" layout where you specify rows or columns then how many things go in each row/column. However, this seems like a very narrow solution and I'd rather find something better than this.

I was hoping to make minimal changes to the existing layout/keybindings to make Shellshape powerful enough to handle this. I like the idea of changing Super , and Super .. Right now they just add or remove windows to the main pane. If instead they were repurposed to move the selected window up or down the hierarchy of splits, then combined with a new columns layout like I suggested (where every split is along the same axis) it would be possible to have any number of columns with any number of windows in each. Does this make sense?

The downside to changing those keys is we make things a bit more complicated because now they're context-dependent. This would also probably require making similar changes for the Super h, Super l, Super u and Super i.

rhofour commented 7 years ago

Does this work for people? I don't want to start implementing something a bit complicated if it won't actually solve the problem people are having. If what I said wasn't clear I can quickly make a couple of mocks to better show the idea.

con-f-use commented 6 years ago

It sounds like it would work for me. I'd very much like this.

neilw4 commented 5 years ago

I implemented this at https://github.com/neilw4/shellshape. Set the default number of partitions in the settings or press win+shift+> to increment. This works well in my local environment but YMMV.