Tiling vs Stacking - Desktop Customization & Workflow

Users browsing this thread: 1 Guest(s)
venam
Administrators
Hello fellow nixers,
In this thread we're going to discuss two prominent ways of laying windows on the screen: tiling and stacking.

There was a long thread on reddit that inspired me to open this for further discussion.

I thought the pros and cons were not as developed as they could be and rotated around the "It works for me why wouldn't it work for you too".

Let's also dismiss in this argument the hybrid window manager, tiling but that allows floating. Because why not make the opposite too, floating but that allows some tiling.

Also it needs to be said that tiling strictly refers to the windows not overlapping and not the management in itself.

Here are some of the arguments:
  • Tiling WMs: The aspect ratio of windows might not be respected (not always true if you add gaps in the equation)
  • Tiling WMs: When you resize one terminal it will send SIGWINCH to all other terminals because they'll also be resized.
  • Tiling WMs: It is hard, when there are many windows open, to manipulate the tree and replace the windows in the order wanted or find the wanted window (not always true)
  • Stacking WMs: Is the desktop metaphor (maybe?)
  • Tiling WMs: allows you to see all the windows on a workspace at the same time (but what about the windows on different workspaces?)
  • Stacking WMs: Allows you to overlay windows and thus gain space on the screen when it gets cluttered (see desktop metaphor)


And here are the arguments related to the management and so that are not true arguments (AKA misconceptions):
  • Tiling WMs: Places all the windows at the right position and with the right size for you
  • Stacking WMs: You have to spend all your time thinking about how to place windows and resize them
  • Tiling WMs: Are keyboard driven
  • Stacking WMs: Are mouse driven
  • Tiling WMs: Need a lot of time to configure
  • Stacking WMs: Are resources heavy
  • Tiling WMs: have better workspace management (or do they? why? Stacking has workspaces too)
  • Stacking WMs: Need to have decoration so that you can drag them around with the mouse
  • Tiling WMs: Allow better grouping of windows

Overall, it's hard to find a lot of *valid* arguments just for the concepts of tiling and stacking themselves without bringing the management part into it.

Please bump this thread with more pros and cons.
mrtn
Members
Before giving arguments or try to decide what to use, you should be aware of your usage of your computer.

For me, it's either a fullscreen-program or some windows side-by-side. In addition, i don't really 'stack' windows. If the space is running out, i move windows to different workspaces anyway. So, the discovery of tiling wm's were actually a great improvement. Before i3, I used gnome, and to place windows side-by-side, i had to arrange them in an additional step... Now i just open another window on the same workspace and i'm good to go.

So, for me is the biggest pro of using a tiling-wm the reduction of steps to arrange my windows in a way i like them.
jkl
Long time nixers
Another pro for Tiling WMs: It is the standard as of UNIX v8.

However, for me (personally), neither Tiling nor Stacking WMs are the way to go. I mostly work on laptops with little screen space, so my abilities to arrange windows without losing information are limited. I tend to use my systems (both Windows and BSD) in monocle mode, having one full-screen window per screen all the time. Humans can't multi-task anyway.

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
venam
Administrators
(02-07-2017, 10:53 AM)jkl Wrote: I mostly work on laptops with little screen space, so my abilities to arrange windows without losing information are limited. I tend to use my systems (both Windows and BSD) in monocle mode, having one full-screen window per screen all the time. Humans can't multi-task anyway.

(02-07-2017, 08:54 AM)mrtn Wrote: For me, it's either a fullscreen-program or some windows side-by-side.

Same for me, I think most of us end up converging to monotasking.

(02-07-2017, 10:53 AM)jkl Wrote: Another pro for Tiling WMs: It is the standard as of UNIX v8.
So it used Blit apparently. Are you sure it was strictly tiling because it looks like it's stacking ( http://doc.cat-v.org/bell_labs/blit/blit.pdf )?
Quote:The screen is not big enough (no matter how big it might be). Therefore, windows must overlap. The desires for overlap and asynchronism led to the development of layers, an implementation of overlapping, asynchronously updated windows.
Also, this is probably more like terminal multiplexing than X window management.
jkl
Long time nixers
(02-07-2017, 11:16 AM)venam Wrote: Are you sure it was strictly tiling because it looks like it's stacking ( http://doc.cat-v.org/bell_labs/blit/blit.pdf )?

Whoops! Sorry, I retract my claim.

(02-07-2017, 11:16 AM)venam Wrote: Also, this is probably more like terminal multiplexing than X window management.

There was no X when Blit was designed, so of course it did not revolve around X windows. It was not Blit's fault that there were not many other graphical applications available though. Blit could also show (e.g.) a clock, so it was technically not limited to pure terminals.

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
venam
Administrators
(02-07-2017, 11:26 AM)jkl Wrote: Blit could also show (e.g.) a clock, so it was technically not limited to pure terminals.
Definitely, I agree with that.

Still mentioning that because V8 used Blit, which was stacking, as a default graphical environment doesn't make a good argument, that's more of a genetic fallacy than anything else.
mrtn
Members
(02-07-2017, 11:16 AM)venam Wrote: mrtn Wrote:
For me, it's either a fullscreen-program or some windows side-by-side.

Same for me, I think most of us end up converging to monotasking.

It is actually monotasking for me. The only case i use it that way, is reading documentation/tutorials/etc when coding...
pyratebeard
Long time nixers
I tend to have most windows fullscreen as well. As others have mentioned it is handy when you want to read along side working to have two windows side by side, and this is easily accomplished with tiling.

The big thing that brought me on to tiling WMs is the keyboard driven element.
*Edit - and the minimalism

With regards to the argument about manipulating the windows to suit your needs, this comes with time. Each WM is slightly different but with a bit of perseverance it becomes easier. It took me a while to get use to herbstluftwm after awesome for example.

I also organise my workspaces so that I know which one to switch to in order to find a window. Does anybody else do something similar?

I could do with a shot of rum right now.
mrtn
Members
(03-07-2017, 09:49 AM)pyratebeard Wrote: I also organise my workspaces so that I know which one to switch to in order to find a window. Does anybody else do something similar?

Same here. Browser is on Workspace 1, Programming happens on 2 and my terminal emulator is open on 3. IRC is always on 0 - for all other workspaces, it's simply chaos.
acg
Members
(03-07-2017, 04:12 AM)mrtn Wrote: It is actually monotasking for me. The only case i use it that way, is reading documentation/tutorials/etc when coding...
This is what I do too, I don't have any issues arranging them side by side using keybindings on a stacking WM.

At home I use dual monitor with my tmux session on the second one and sometimes a little video on top of everything, at the corner. But lets be real I'm not always looking at my second monitor and most of the time my focus is on the primary monitor; even when I have to do something heavy on tmux, I switch it to the main display.

Of course when I need to open something different like GIMP, Spotify or similar, I run them on a different workspace. On single monitor my Tmux session goes to the first and browser to the second; that's how I'm used to arrange them.
argonaut · musician · developer · writer · https://www.betoissues.com
z3bra
Grey Hair Nixers
I got two different worklows myself. First one happens at work, and is rather boring: Tltwo huge monitors, one with a browser fullscreened, one with a tmux fullscreened.

Then there is my home flow. One small screen only. I usually move windows and resize them all the time with my mouse. I make heavy use of groups to hide windows together and background tasks to focus on things. for example, I have 2-3 terminals windows to code, then background them all, open a few browser windows (I use surf), then hide them all and bring back the terminals. If I need specific windows, I add what I need to a new group, amd show only this group, and so on. Works for me, and it makes me look like a wizard ;)
r4ndom
Members
(03-07-2017, 06:15 PM)z3bra Wrote: Works for me, and it makes me look like a wizard ;)

Like that :D Your workflow video inspired me to switch back to stacking.

For the last year I used a tiling WM, but after a while I got tired of resizing windows, switching workspaces when working in the browser and coding and so on. So I switched to stacking with wmutils extensions and it's nice to be back at it. I know I probably have to resize windows, but do not change others while doing so.

So for me the most imporatent argument in "tiling vs. stacking" is the personal preference.
hades
Long time nixers
I like i3 for the simple fact that I can mix floating and tiling. If I'm gonna be, say, using a terminal and a web browser at the same time, I don't want to sacrifice half my screen for the terminal. No, I'll just keep my term floating, and position it over the whitespace on the webpage I'm reading, and keep my browser fullscreen.

But when I wanna work on 3 files simultaneously in vim, push them to my github periodically, and monitor an IRC channel at the same time, tiling becomes valuable.
acg
Members
(04-07-2017, 11:31 AM)hades Wrote: But when I wanna work on 3 files simultaneously in vim, push them to my github periodically, and monitor an IRC channel at the same time, tiling becomes valuable.

Why not do this with a terminal multiplexer?

I think this is the case for most of us, we don't need too complex windows management since what we use "simultaneously" is a browser and a terminal emulator.
kyberkhrime
Members
(04-07-2017, 11:40 AM)acg Wrote: Why not do this with a terminal multiplexer?
On the other hand: Why do this in / with a terminal multiplexer? My window manager does his job quite well, and gives me a lot more flexibility than a terminal multiplexer.
acg
Members
(05-07-2017, 03:22 AM)kyberkhrime Wrote: On the other hand: Why do this in / with a terminal multiplexer? My window manager does his job quite well, and gives me a lot more flexibility than a terminal multiplexer.

Well yeah, this is my perspective, from a floating wm user. The most efficient for us is to set that to a terminal emulator when needed.

As for this argument, +1 to tiling, since it automatically handles a common scenario without external tools.
venam
Administrators
I keep thinking about this thread and I feel like the division between tiling and stacking is very limited.

Quote:Generically, window managers have two parts, the presentation, which displays windows and lay them around the screen, and the operations which is how the user enters commands to manipulate those windows. This is a vague overview of the basic and that gives rise to many possibilities and implementations.

Layout strategies, being part of the operation, is a much wider subject than tiling or stacking.
I'm not sure I'm expressing myself clearly, I've writting about WM & DE before but didn't go in depth into that particular aspect.

Have you ever thought about that?
ckester
Nixers
(04-07-2017, 11:40 AM)acg Wrote: Why not do this with a terminal multiplexer?

One advantage in letting the wm tile several terminal emulator windows, rather than using a terminal multiplexer in a single window, is that you can use different font sizes in the terminals. E.g., 12pt in the master window you're working in, and 8pt in one that you're running "in the background" to monitor some process.

(Something I've often thought would be cool is a terminal emulator that automatically adjusted its font size when the window it's running in was resized -- as, for example, when it's moved to the "stack" area of a tiling wm. I'm not aware of any that can do this or how hard it would be to implement. Maybe someday. Of course, it might turn out to be a horrible idea...)
ckester
Nixers
(25-09-2020, 04:38 AM)venam Wrote: I keep thinking about this thread and I feel like the division between tiling and stacking is very limited.

Quote:Generically, window managers have two parts, the presentation, which displays windows and lay them around the screen, and the operations which is how the user enters commands to manipulate those windows. This is a vague overview of the basic and that gives rise to many possibilities and implementations.

Layout strategies, being part of the operation, is a much wider subject than tiling or stacking.
I'm not sure I'm expressing myself clearly, I've writting about WM & DE before but didn't go in depth into that particular aspect.

Have you ever thought about that?

Can you clarify what you mean by "layout strategies"? It's hard to know how to respond to your question when I tend to think of tiling and stacking as layout strategies themselves. What are they leaving out that you see being part of a wider subject that can be called by that name?

Is it just that there are other possible strategies besides those two?

E.g., 3D navigatable space like in a first-person shooter game?

There has also been some work on zooming user interfaces, aka ZUIs. I've seen some nice examples of those combined with a sort of mindmap, as a way to organize and present lecture "slides".

This ZUI looks interesting:
https://zircleui.github.io/docs/guide/
venam
Administrators
(25-09-2020, 06:54 PM)ckester Wrote: Is it just that there are other possible strategies besides those two?
Definitely, there are more than the idea of "non-overlapping placement" aka tiling, and "overlapping placement" both of those usually thought in 2d space. As I mentioned before, this doesn't imply who applies the layout strategies and according to which rules, is it automated or not, does it follow a specific order or not.
This now enters the field of possible operations permited by a window manager, specifically the operation of placement and movement of windows.

My point is that if you take the essence of what is required from a window manager, you start to see it under a different light.
freem
Nixers
(25-09-2020, 04:38 AM)venam Wrote: I keep thinking about this thread and I feel like the division between tiling and stacking is very limited.

Quote:Generically, window managers have two parts, the presentation, which displays windows and lay them around the screen, and the operations which is how the user enters commands to manipulate those windows. This is a vague overview of the basic and that gives rise to many possibilities and implementations.

Layout strategies, being part of the operation, is a much wider subject than tiling or stacking.
I'm not sure I'm expressing myself clearly, I've writting about WM & DE before but didn't go in depth into that particular aspect.

Have you ever thought about that?

Well, I remember windows 3.1 and 9x had a floating WM, that was able to automatically tile the windows. It was also possible to stick various windows to screen's borders. Those features were progressively removed AFAIK, but imo despite those "tiling" features I would still say they were stacking WMs, because they are intended to be used with floating windows: that was the normal way to deal with those.

Some tiling WMs (many? most? rare?) also provides floating mode, yet their normal mode is to have windows not stacking, thus they are tiling. For example, I would consider windows 8 WM a tiling one.

The layout question, imo, is mostly about tiling WMs, since stacking WMs hardly allows one to have such thing. There are tiling WM that put everything in a layout (I don't remember the names), others that are layout-free (i3).

(25-09-2020, 06:14 PM)ckester Wrote: [quote="acg" pid="18554" dateline="1499179253"]
Why not do this with a terminal multiplexer?

Well, quick answer: if your single terminal crash, you loose all the shells. Same for the multiplexer. Same for the WM.
A tiling window manager allows one to remove 2 of the list. It will also allows mixing those "terms" with other windows, moving them on different screens, etc. And, of course, allows one to only have 1 configuration to move windows, instead of 1 per application, since you can with a WM use single-tab browsers (file/web/whatever).

(25-09-2020, 06:54 PM)ckester Wrote: Can you clarify what you mean by "layout strategies"?

My understanding of it is that some tiling WMs'users can/must choose between a set of predefined layouts, instead of having to build those on the fly (which is i3 and many other's way), like having a main window on left side of the screen, and then a stack of windows on right side, maybe reducing those depending on their importance.
To help understanding, something like this:

Code:
+---main---++-alt1-+
+          ++      +  
+          ++      +  
+          ++-alt2-+
+          ++-alt3-+
+          ++-alt4-+
+----------++------+

This could make the WM easier to learn and use, but be less flexible. I think when I was investigating the topic years ago, xmonad for example was like that.
Dworin
Members
Like many, I mainly use full-screen windows (achieved by having only one window tagged as active in dwm). When I need to directly compare, copy/paste, read/write between windows(*), I'll tile two side-by-side. That's about it really. Oh, a major nuisance with floating windows in dwm is that they can flow out of the screen area, so the action buttons (cancel, ok) can only be used after dragging the window up.
* Another nuisance is that browser pages sometimes intercept selection/clipboard so a normal copy/paste isn't possible.
ckester
Nixers
(28-09-2020, 07:55 AM)freem Wrote: My understanding of it is that some tiling WMs'users can/must choose between a set of predefined layouts, instead of having to build those on the fly (which is i3 and many other's way), like having a main window on left side of the screen, and then a stack of windows on right side, maybe reducing those depending on their importance.

Ah.

Along with the popular vertical stack, other "layout strategies" per your definition include:
- fibonacci or "spiraling" layout, where each additional pane is smaller by a golden ratio
- dividing current pane in half (without the notion of a master window as in the vertical stack layout)

I'm partial to the vertical stack layout myself -- although I sometimes wish I could put the master window on the right when I'm working with two side-by-side monitors, so that the master window on each monitor would be "next" to the other, if that makes sense.
Dworin
Members
(02-10-2020, 05:05 PM)ckester Wrote: I'm partial to the vertical stack layout myself -- although I sometimes wish I could put the master window on the right when I'm working with two side-by-side monitors, so that the master window on each monitor would be "next" to the other, if that makes sense.

You could always patch that behaviour into your WM of choice. For dwm, someone has done the work:
rmaster patch.
freem
Nixers
(02-10-2020, 05:05 PM)ckester Wrote: Along with the popular vertical stack, other "layout strategies" per your definition include:
- fibonacci or "spiraling" layout, where each additional pane is smaller by a golden ratio
- dividing current pane in half (without the notion of a master window as in the vertical stack layout)

Yes. The fibonacci one is also something I remember having seen, looks nice on paper, but it's probably horrible in daily uses, except if someone have a screen big enough maybe?

(02-10-2020, 05:05 PM)ckester Wrote: I'm partial to the vertical stack layout myself -- although I sometimes wish I could put the master window on the right when I'm working with two side-by-side monitors, so that the master window on each monitor would be "next" to the other, if that makes sense.

I think a proper layout support can be useful. I3 have such thing IIRC, but last time I gave it a chance, it really felt like a quick hack or workaround.

My layout depends on what I'm doing. Even with my current shitty screens, when I code I like to have at least 2 windows per screen, and since I use C or C++ most of the time, I often end up with 3 or 4: 1 "major" implementation on which I work, optionally it's header, and then the code that calls it, or which is called by, with the header.
Alt screen is usually reserved to communications, monitoring, build logs, and manpages. At least, this is when I write code.
When I debug, well, it depends on what I debug, things can go pretty ugly when one needs to play with 3 processes to find a problem :)
Then I also use a different layout when I'm playing the admin, but I can hardly say it's fixed yet: I still am trying to learn to use new tools (and to understand how they work, with which techs, so that I really understand their up and down sides. This is why I'm still not playing with LXC/docker for example: I want to master cgroups and namespaces before, and one of linux's MAC systems).
I suppose when I'll know my tools, a layout will emerge by itself.
pfr
Nixers
This may be an extremely simplified perspective, but for me it's a very simple choice.

Laptop = Tiling WM
Desktop = Stacking WM/DE

It is purely the absence of a mouse that I find makes it impossible to use stacking WM's. That and screen size. I personally prefer stacking windows, when I'm sitting at a desktop in a comfortable chair with a mouse in one hand. But these days I'm laptop bound.
_____________________________________________________________________________________________
“Maybe you have some bird ideas... Maybe that's the best you can do.” - Terry A. Davis (R.I.P Terry & Percival)
z3bra
Grey Hair Nixers
freem Wrote:This is why I'm still not playing with LXC/docker for example: I want to master cgroups and namespaces before

You might find this old article of mine interresting then: https://blog.z3bra.org/2016/03/hand-craf...iners.html
seninha
Long time nixers
The only tiling layout I use is the column acme-like layout:
The screen is divided into columns and each column can have any number of windows tiled vertically (one over another). In the drawing below the screen is divided into three columns, with two to three windows each.

Code:
┌───┬───┬───┐
│   ├───┤   │
│   │   ├───┤
├───┤   │   │
│   ├───┤   │
└───┴───┴───┘

I realized that this is the only layout I ever use, so I created a wm that only uses this layout. I also realized that spliting-tree kind of tiling complicates the workflow (at least for me).
Even thus, I almost always use up to two columns with up to two windows each. The most common layout I use is this: One big window on the left and one or two windows on the right.

Code:
┌─────┬─────┐
│     │     │
│     │     │
│     ├─────┤
│     │     │
└─────┴─────┘
mcol
Nixers
(06-10-2020, 01:20 PM)phillbush Wrote: I realized that this is the only layout I ever use, so I created a wm that only uses this layout. I also realized that spliting-tree kind of tiling complicates the workflow (at least for me).
Even thus, I almost always use up to two columns with up to two windows each. The most common layout I use is this: One big window on the left and one or two windows on the right.

┌─────┬─────┐
│ │ │
│ │ │
│ ├─────┤
│ │ │
└─────┴─────┘

i've also found myself exclusively using this layout. If I need to see one window close up I can also meta+f to fullscreen it, otherwise 2 columns of no fuss and efficient. I wish I could say I made a WM specifically for it though!
petar
Members
(06-10-2020, 01:20 PM)phillbush Wrote: The only tiling layout I use is the column acme-like layout:
The screen is divided into columns and each column can have any number of windows tiled vertically (one over another). In the drawing below the screen is divided into three columns, with two to three windows each.

Code:
┌───┬───┬───┐
│   ├───┤   │
│   │   ├───┤
├───┤   │   │
│   ├───┤   │
└───┴───┴───┘

I realized that this is the only layout I ever use, so I created a wm that only uses this layout. I also realized that spliting-tree kind of tiling complicates the workflow (at least for me).
Even thus, I almost always use up to two columns with up to two windows each. The most common layout I use is this: One big window on the left and one or two windows on the right.

Code:
┌─────┬─────┐
│     │     │
│     │     │
│     ├─────┤
│     │     │
└─────┴─────┘

Hello! I've been using acme for a while now, and I became fascinated with the mouse chords, window management, executing text, and plumbing. Recently I'm becoming more and more frustrated with stacking window managers, but I am not sure which tiling wms support the mouse very well, because I want an experience similar to acme. I know of the various window managers but they always mention powerful keyboard only control. Can you perhaps point me in the right direction to look? Do you have any recommendations? Thanks in advance!