Feature request: vertical stacking
Issue/Bug Description:
Right now, Stacking mode only does horizontal stacking of windows. I looked through the docs, issues, and PRs for a way to change orientation of stacking to be vertical but found nothing. I think this would be great. Here's a sample from i3:

One bonus of this, is that if I want to move focus to a window to the right or left, it doesn't walk through the windows of my stack, it would go directly to the window to the left.
Expected behavior:
If I press Super+S in an already stacked group of windows, it should allow me to change orientation of the stack.
Other Notes: I'm happy to implement this feature, just a few pointers into where to look in the code base would be great.
What do you mean by orientation of a stack? Stacks stack in the z-direction. Everything can change its tiling orientation with Super + O
What do you mean by orientation of a stack?
This person means orientation of the tabs. I'm not clear what the control structure being suggested is, but the end result is in their i3 screenshot. They want multiple rows of tabs with the ability to navigate between them directly (in multiple dimensions/directions) via the keyboard.
This person means orientation of the tabs. I'm not clear what the control structure being suggested is, but the end result is in their i3 screenshot. They want multiple rows of tabs with the ability to navigate between them directly (in multiple dimensions/directions) via the keyboard.
Thank you for clarifying for me. To be clear, I'm fine with just a single column of tabs, stacking vertically. This is a (very rough) sketch of what I mean:

To be clear, I'm fine with just a single column of tabs, stacking vertically.
That seems like it would take up more space than the current horizontal tabs and also wouldn't add the navigational advantage of a grid.
It indeed does take up more space. But one advantage of vertical stacking is that when you move horizontally from window to window, you don't have to move through your stacked tabs of windows. For example:

If I want to use my browser and my focus is on the right terminal window with the text I want this window to remain visible, I can't keep that window visible. I would have to navigate through my other terminal tab to get to my browser. With vertical stacking, I don't have to deal with this because the only way to navigate the tabs is using up and down arrows.
While I like the idea of vertical stacking, it doesn't fully solve your issue for windows split vertically. It might be a good idea to add a key command for moving by windows and skip tabs (this wouldn't change current movement functionality). Additionally, I'm going to suggest wrapping functionality, so focusing to the right would wrap around to the chrome window.
Edit: I just found this issue giving nearly my exact suggestion. It only wraps for tabs though which would modify the behaviour users are accustomed to.
I appreciate your input. With vertical stacking, I can customize the way I go about navigating my windows. The mental overhead of adding another command just to provide "skipping" seems a bit much in my opinion. And wraparound functionality doesn't really solve the problem either. Anyway, I'll go ahead and see if I can implement vertical stacking myself and submit a PR
I would also appreciate this. It allows for seamless selection and movement of tiles on both axes. Yes, if you stack too many tiles it takes up space, and that's usually a sign to move tiles to another workspace.
My mental model, after about ~~1½~~3 years of using pop-shell, is still wrong about this. I still see a stack as "one item" so if my setup is like this:
+----------------+ +-----------+-----------+ +----------------+
| program 1 | | program 2 | program 3 | | program 4 |
| | |-----------+ | | |
| | | | | |
| | | | | |
| Active | | | | |
| tile | | | | |
| | | | | |
| | | | | |
| | | | | |
+----------------+ +-----------------------+ +--------------- +
And I hit [super]+[right] only once, I expect it to take me from P1, skipping P2, to P3
Which is not what it does of course, it takes me to P2.
Likewise, if I'm on P1 and I want to be on P4, I probably hit right twice, go "oh..." and hit right once more.
It's a bit like, to my mind, imagine the middle tile was a tabbed browser like this:
+----------------+ +-----------+-----------+ +----------------+
| program 1 | | Firefox | | program 4 |
| | |-----------+-----------| | |
| | | GitHub | YouTube | | |
| | |-----------+ | | |
| | | | | |
| Active | | | | |
| tile | | | | |
| | | | | |
| | | | | |
+----------------+ +-----------------------+ +--------------- +
And I hit [super]+[right] only once, I expect it to take me from P1, skipping GitHub.com, to YouTube.com.
Which it does, of course! Because Firefox is "one thing" (that contains sub-things).
It might be a good idea to add a key command for moving by windows and skip tabs
See that still doesn't work for me (I mean. I guess. Haven't tried it yet.) because I wouldn't expect to need some other key while moving right just to not end on GitHub.
The problem is not (For me, I cannot speak for @aos ) that I have to hit right 3 times to get to program 4, the problem is that, for navigational purposes, it feels like I only have three things open. So I do the same action as I do on any other workspace that only has three things, but I get a different result, because the middle one thing is actually two things.
Possible solutions:
- Your suggestion: Dedicated nav keys to that work the same as normal except they skip the "rear" tiles in a stack.
- Same, but with an option in keyboard settings (or whereever) to "switch" so the normal nav keys skip stacked tiles and the new dedicated keys can be used to navigate stacked tiles*
- No new nav keys, but a key that toggles a "lock" state on a stack so the nav keys treat it like one item when they come across it. If you need to access "rear" tiles you toggle the lock again so you can navigate in them.
- Dark horse candidate: Completely new approach to how tiled objects work (I have a sketch in my mind for how it could be done, but it would be a colossal piece of work and I don't think anybody would appreciate it tbh.
- Something else?
*This is how it works if you think of the stack as browser tabs - normal keys treat the browser as "one item" and then ctrl+tab navigates browser tabs
Turns out this is three related issues:
https://github.com/pop-os/shell/issues/655
https://github.com/pop-os/shell/issues/1639
https://github.com/pop-os/shell/issues/1531