Estimated reading time: 3 minutes

Tiling vs tabbing

A fairly large chunk of my developer friends fawn over tmux and tabbed. These tools can give the effect of a multiple window interface to your terminal sessions, or apply a tabbed interface to any xembed supporting application respectively. I’ll freely admit they’re pretty awesome at what they do1.

That said, I’ve never been a fan of them or the plethora of tools like them. They feel, to me, like they’re attacking the problem from entirely the wrong side. Instead of configuring individual applications to behave in a tabbed and custom way, why not just rely on that behaviour globally? Allow me to illustrate with the following examples.

Example of awesomewm’s tile.right layout

If I want two terminals next to each other I’ll just switch to a layout that supports that(in awesomewm I’d probably choose tile.right) . If I want various image viewer windows open and a nice tabbed interface to access them, I’ll just tag them all and enable a layout that supports that(such as dwm’s monocle2). If I want to vertically split a terminal window and then horizontally split that to include a vim instance, I can just tag those three windows and enable a layout that supports it3. I think the basic message should be clear by now.

You can go further too. Say you want vim and a browser window side by side while reading documentation but need that vim instance next to a terminal for running tests, then you can simply apply two tags to the vim instance and switch between both layouts with a rattle of the keyboard. The exact same interface you’d use for any other layout change too, not one that is specific to tmux or tabbed.

It seems strange to me that given the option to perform tasks like this at the window manager level people would choose to insert an extra layer in the middle that does less. By using actual windows you sidestep the problems with mouse selection in pseudo-windows in tmux, and you can change your mind about your preference for tabs or tiling mid-session unlike with tabbed.

You can also abuse other excellent things like xdotool to fiddle with your layout or interact with specific clients instead of needing to do application specific things depending on whether you’re in a tmux session or not.

Footnotes

1

I’m especially impressed with tabbed, as it feels somehow obvious yet magical. A rare combination in my eyes.

2

You’ll probably want a patch such as fancybar if you want to emulate the appearance of having a tab bar in dwm.

3

And using the window manager’s functionality means that vim session can be a gvim instance with nice colourful PNGs for signs instead of just characters too.

4

You can find a quick patch to remove the daemon support and along with it the gtkhotkey dependency here.


Authenticate this page by pasting this signature into Keybase.

Have a suggestion or see a typo? Edit this page