The perfect Tiling Window Manager (for me)?

Window managers are a very, very personal thing. If you don't know what a Window Manager is, then this probably isn't the place to start. Wikipedia is always useful for a pretty thorough explanation.

Tiling Window Manager

I've been on the hunt for the perfect tiling window manager. I like tiling window managers because they take (most) of the thought (and action) out of how big to make a window, and they stop them overlapping. Which means I don't have to use the mouse as much, and it keeps my hands on the keyboard.

Currently, I use i3wm, which is awesome. It is a dynamic tiling window manager, which means that i3 decides how big the windows will be and where they will go based on a few simple rules.

There is another type of tiling window manager: manual. A manual tiling window manager (such as herbstluftwm) defers most choices about the size of a window to the user. It does this by using the concept of frames, which are then filled with windows. Each frame has a layout algorithm, which determines how windows within each frame are displayed: vertical, horizontal or tiled.

Almost all tiling window managers also support floating windows; windows that float over the others. Some even support stacking windows layout algorithms. herbstluftwm sadly doesn't support stacking or floating windows and also is only X11. Which brings us to ...

X11 or Wayland

X11 is the de facto windowing system for Linux, and (almost) all *nixes. It was designed in a time when servers where powerful and terminals were, well, not. So the design philosophy of X11 is that of a client program (that runs physically on the server machine) and a display server (which is the terminal) that sits in front of the user. The X11 client program sends draw commands (and other stuff) to the display server (sitting on the terminal in front of the user) over a pipe of some sort (a network in the terminal <-> big, powerful, machine days). On a desktop, this is still happening, except the X11 client programs are the X11 display server are on the same machine and communicate over a socket.

This is all very flexible. But there's a slight problem: performance. In these days of desktop (and laptop) machines, with fancy graphics cards and lots of memory, X11 is a fairly poor fit. An impedance mismatch of a sort. So, to the rescue is Wayland, which works basically how you'd think a windowing system would work:

client -> library -> compositor -> graphics driver -> hardware

And no network in-between, although there are possibilities for remote Wayland; but then you have X11 for that, right?

Anyway, the future of windowing systems on Linux is probably Wayland especially since Canonical stopped development of Mir. So, a tiling window manager on Wayland is probably what I want these days.

My specific problem

So, obviously, this post is about some problem that I have, and maybe some of you have. And my specific problem is:

My monitor is too wide for a dynamic tiling window manager.

First world problems, eh? I have a 34" (86.36cm for ISO people) ultrawide - that's 21x9 format, 1440p. Or 3440 x 1440 pixels. Which is a very wide monitor:

Wide-screen is big!

As you can see that's three windows across, which is very usable. But when it's just one terminal it looks silly:

Wide-screen is silly

And that's what every new workspace is like when you add a single window. It fills the width of the screen which is too wide for a single window. And you're thinking "Now you're just moaning, Alex." And to some extent, you are right. It's not really a problem, but it irks me that when I open a browser on a new workspace I also have to open a terminal or something next to it to be able to read the browser page properly.

And as a software developer, I'm (possibly) in a position to do something about it.

My wish-list for a tiling window manager

In no particular order, this is my wish-list for a tiling window manager:

  • Dynamic tiling like i3wm. i.e. The ability to add a window, change to tabs or stacked and have a tree of windows.
  • Manual 'frames' like herbstluftwm. i.e. the ability to have fixed, manual frames in which to place a number of windows.
  • Floating windows on a tiling workspace like i3wm.
  • A workspace with stacked window management support. Something reasonable simple, but nevertheless, it would be useful.
  • Works on Wayland. Why? Well, it's the future direction of graphics support in Linux distros.
  • (Obviously) keyboard driven for all possible window management tasks.
  • (Not so obviously) mouse support for various window management tasks. Resizing is an obvious one, but so is moving a window.
  • Fast! This precludes it being written in a non-compiling language.
  • Has a CLI tool. It's important to be able to script a tiling window manager.
  • Supports 'rules' like i3wm and herbstluftwm so that you can place windows on different workspaces.

Essentially, I'd like a variant of i3wm that supports fixed layouts (frames), but with dynamic windows in the frames, and can work on frames and windows on Wayland. sway is essentially i3 on Wayland, but like i3, doesn't support fixed frames. And I really want fixed frames.

Roll my own?

What the world doesn't need is another tiling window manager. So that's precisely what I'm suggesting. :smile:

I'm probably going to do something in Rust, on Wayland, and borrow code from several other projects. The tag window-manager will link together all the posts about it (and presently there is one.)

Comments are disabled for this page.