shell icon indicating copy to clipboard operation
shell copied to clipboard

Feature request: vertical stacking

Open aos opened this issue 1 year ago • 10 comments

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: image

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.

aos avatar Oct 17 '22 19:10 aos

What do you mean by orientation of a stack? Stacks stack in the z-direction. Everything can change its tiling orientation with Super + O

mmstick avatar Oct 17 '22 23:10 mmstick

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.

jacobgkau avatar Oct 18 '22 01:10 jacobgkau

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:

stack

aos avatar Oct 18 '22 04:10 aos

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.

jacobgkau avatar Oct 18 '22 05:10 jacobgkau

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:

Screenshot from 2022-10-18 11-02-40

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.

aos avatar Oct 18 '22 15:10 aos

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.

zfreeds avatar Oct 20 '22 22:10 zfreeds

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

aos avatar Oct 21 '22 16:10 aos

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.

diocletiann avatar Dec 22 '22 04:12 diocletiann

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:

  1. Your suggestion: Dedicated nav keys to that work the same as normal except they skip the "rear" tiles in a stack.
  2. 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*
  3. 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.
  4. 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.
  5. 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

SRNissen avatar Oct 22 '23 20:10 SRNissen

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

SRNissen avatar Nov 23 '23 08:11 SRNissen