Exploring Tiling Window Managers

Exploring Tiling Window Managers

If you have a low-resource computer, one with a small screen like some laptops, or are even someone just looking for something different to try, a tiling window manager could be a good option. They’re not for everybody, but then they’re not just for command-line commandos either.

I’m a keyboard guy, I like using keyboard shortcuts and keeping my hands on the keyboard as much as possible. Besides, I suck at touch typing and reaching for the mouse constantly just throws me all out of whack when I go back to the keyboard. It’s one of the reasons I was a KDE user for such a long time. KDE’s Plasma Desktop is probably the most keyboard customizable desktop environment out there. Plasma had some quirks though; there were bugs and oddities that annoyed me quite often. So I found myself in the “looking for something different” category.

I decided to give Gnome 3 a try. It’s a very nice desktop, though not as keyboard-friendly as Plasma, but close. It’s slick, well thought-out and quite customizable. I used it for a while, but—maybe it’s just me—it seemed like there was a lot of wasted space in the user interface. When putting applications side-by-side or corner tiling them, it seemed like so much of the screen was taken up with UI elements that it was annoying. That, and every time there was an update, something would break. Generally what broke were the extensions I had installed for it, and sometimes the theme I was using. I tried Enlightenment E17 next. It was also very nice, but it had a confusing settings manager and was just buggy. In time, I probably would have learned the configuration, sorted out the various bugs, and made better use of it. But time wasn’t a luxury I had much of. So then I tried MATE, and liked it a lot. Still do, and have it installed on my machine, though I rarely use it anymore. What I started to run into was theming quirks, that are mainly caused by GTK 3 apps and the constantly shifting way they’re themed. I run a very mixed set of applications, some Qt, some GTK 3 and some GTK 2, with a smattering of command-line ones. It was getting really hard to find a theme that would work well with all my apps and not pollute my ~/.xesssion-errors file with warnings and errors. MATE is a great desktop and I still use it from time to time just for a change. But there were still some personal irks (quirks?) I had with it that kept me looking for another option. Since I’d been seeing a lot about tiling window managers, I figured what the heck, let’s give one of them a try. That was about 2 years ago, and I’ve been using one ever since.

There seems to be a general idea that tiling window managers are for the geeky, that they’re only for command-line gurus and those who choose to live in a CLI world. Frankly, most screen-shots we see of them in action do nothing to dispel the idea. Tons of terminals open in little tiles showing code and system stats that are the common fodder. The plain fact is this is simply not true. GUI apps work wonderfully well in a tiling window manager. There are trade-offs, though. Tilers are very keyboard-centric, though you can still use a mouse for many things. If you’re a mouse maven, you probably don’t want to try one. They’re very basic, though many are infinitely expandable and customizable. Out-of-the-box they have few if any system-tray widgets, fancy menus or glitzy themes. They also don’t have compositors, at least none that I know of (yet). So if you want effects like drop-shadows and transparency, you’ll have to install a separate compositor. Probably the biggest sticking point for many is: while some tilers are usable right away, many require some configuration before you can even use them. All of them will eventually require the user digging into configuration files to get the most out of them. For these trade-offs what you get is a window manager that makes ultimate use of your screen space, is blazingly fast, uses very little memory or system resources, is totally customizable, but initially as bare-bones as it gets. Again, they’re not for everyone, and they don’t try to be. But if you’re looking for something that might be a better fit for your needs than your current desktop, and you’re not afraid to dig into a configuration file to make changes, then a tiling window manager just might be worth checking out.

There are dozens of tilers available- a quick web search for “Linux tiling window manager” will give pages and pages of results. So which should you try first? I think that would depend on your needs and skill level. If you’ve never edited a configuration file, touched a script or spent any time in the command line, but would still like to try one, I recommend one that is usable right out-of-the-box. That way you can try it out for a while in its default form and decide if you’d like to go further with it. For more experienced users, I think just reading up on the various ones you’re interested in should lead you in the right direction. You know your abilities. Looking at the tiler’s website or Git-Hub page should give you enough information to decide if you’d like to try it. For anyone’s first adventure in a tiler, I would recommend sticking with those that are in your distributions repositories. They’re easy and quick to install and if you decide it’s not for you it’s a lot easier to uninstall. However, if you’re comfortable compiling or have experience installing software from source, go with whatever interests you.

I’ll point out right away that I have not tried every tiling window manager. out there. I would not be surprised if there were others out there that might be better suited for inexperienced users. If you know of one, hit the comments below and tell us about it. I would also strongly recommend that anyone who is going to try a tiler, read about it’s keyboard shortcuts before you try it. Not knowing at least the basic keystrokes for opening an application and moving around within the interface is the biggest reason people who’ve tried tilers give up right away. Write them down, print them out, whatever works for you. Just have them ready before you start your experiment. I made that mistake the first time I tried one. Was greeted with a blank screen and had no idea how to do anything with it. Don’t make my mistake. Get the keyboard shortcuts first, and have them handy.

For those who would like to try a tiler with minimum fuss, I’d recommend one called i3. It has very few dependencies, is in almost every repository on the planet, is extremely popular with a large user base and perhaps most importantly for first-time users, is usable right after install. In fact, it should show up right away as an option in your login screen after installing it. When you first log into it, it asks only one question: which key would you like to use for your default “meta” key. The “meta” key in tilers is the one you’ll press first, adding some other key to generate a command the tiler will execute, like opening an applications menu. I recommend choosing the “Windows” key, as it’s generally not used for anything else in any other Linux application.

i3 Tiling Window Manager

This is a screenshot of the default i3 window manager. On the bottom is a bar showing the current workspace number (1) and some system statistics. By default, you move to workspaces by pressing the “meta” key and a number. Meta+2 would move you to workspace 2, etc.. The current workspace number is displayed in the bottom-left corner, and any that are occupied with applications will also show up there in a different color. You open a menu of applications by pressing Meta+d. (Note: in default i3, as well as most of the others, the application menu is all executable files on the system, both terminal apps and GUI ones, listed by their actual names. Tread carefully. Many tilers will have an optional menu you can install that will only read the ‘*.desktop’ files DE’s use, producing a more user-friendly menu. But it’s not included by default in most distributions.) A bar will appear at the top of the screen with all the installed applications in alphabetical order. Start typing an app name and the list will narrow down until you find what you wanted. Hit enter and the app will open, taking up the whole screen minus the bottom panel. Press Meta+d again, pick another application, and it will open to the right of the current one, each occupying half the screen. If you have the keyboard shortcuts (you did get them first, right?) you can manipulate the windows, switch them around, put them one on top of the other (called ‘stacking’), or tab them like in a web browser. You can open more windows, pre-select how i3 will tile new windows (horizontally or vertically), or switch to another workspace and open some there. There’s no wallpaper, though there are various means to put one on the desktop, covered in i3’s documentation. And like all the tilers I’ll mention here, there’s no compositing; meaning there’s no drop-shadows or other effects, though that too can be added. i3 has truly great documentation on their website. Take the time to read through its basic use or watch one of the videos to see what you can really do with it. i3 may be one of the easiest tiling window managers to install and customize to your needs yet it’s still very powerful and extensible. Plus, with its large user base, there’s plenty of help and ideas available. There’s good reason it’s one of the most popular—if not the most—tiler in use today.

Second minimum-fuss tiler I’d recommend is Awesome. Like i3, Awesome is usable right away. The difference being Awesome doesn’t ask which key you’d like to use for Meta. It defaults to the ‘Windows’ key. This is configurable if later you decide to do so. It also has a scrollable menu accessed via the Meta+d key like i3. Additionally Awesome has extensive documentation on its website and a large user base. But it’s not quite like i3 when you first start it, as you can see in the screenshot.

Awesome Window Manager

By default, Awesome puts a panel on the top, with a menu icon and all the workspaces in the top left. At first the click-able menu icon shows a very sparse menu, but it’s extensible via the configuration. Workspaces that are currently occupied have a little square icon above them and the currently viewed one is in a lighter color. On the right, instead of a lot of system information like i3, it has the current date and time, and an icon to show its different tiling modes. With Awesome, how it tiles applications can be changed both by keyboard shortcuts and by clicking on that top-right icon. One of the ’tiling’ modes is actually a free-floating type, much like a regular stacking desktop. In that mode, applications are opened as regular windows and you can hold the Meta key down while left-clicking anywhere on them to move them around the desktop. Meta+right-clicking on them allows you to resize them. Unlike i3, Awesome does use wallpapers out-of-the-box but there’s no compositing by default. Awesome is extremely configurable, but there’s a catch. Its entire user interface is configured in Lua script, so to make changes and configure it to your needs is going to require a bit more work. Basically, you’re going to need to learn how to do it using Lua. Awesome also uses several files for its configuration, as opposed to i3’s single one, so it can be a bit confusing if you have no experience with working in multiple configuration files. Awesome makes up for it by having extensive documentation for every aspect of it, so a little time reading and experimenting can produce great results. Despite being easier than many of the other tilers out there to get started with, it’s still not as easy as i3 to configure for newbies. That being said, I still recommend it for those who want to try a tiler out. It needs no configuration to just try it. If you decide you’d like to go further with it, the documentation and hundreds of user-contributed tools and widgets will help you create a desktop that rivals any other out there.

For the more experienced users, there are plenty of options out there to choose from. Both of the already mentioned tilers are excellent choices for any level user, so I’d recommend them just as heartily for more experienced ones. Others for consideration would include Xmonad. It’s very popular, though it requires configuration in Haskell, so it’s not for the faint-hearted. Herbstluftwm is another one gaining popularity. Or you might consider the ‘original’, Ratpoison, one of the first if not the first tiler. A quick web search will give some idea of how many different ones there are to choose from. Your experience level will help dictate more than anything what you choose to try. For me, it ended up being one called “bspwm“, and acronym for “Binary Space Partitioning Window Manager”. A friend of mine suggested it about a year ago, and once I got it configured to my liking, I’ve been using it ever since. While I’d say it falls into the “experienced user” camp, it’s not overly complicated to install and use. The defaults are sane and usable out-of-the-box for the window manager itself. It’s getting a panel to do what most users would want that can be daunting, at least with the default recommendations. If you’re competent in BASH scripting, it should be no problem configuring and going with the default panel. For myself, I took an easier route and installed tint2, then configured it to my needs.

My bspwm tiling window manager

You can see in the screenshot the tint2 panel at top, showing all 10 of my named workspaces and the icons for the apps I currently have running in them, the system tray icons, and the current date and time. And you’ll notice that tilers work just fine with GUI applications. Here I have Quite-RSS (a Qt application), along with Atril document viewer and Pluma text editor (both GTK apps), all getting along very well. Not a terminal in sight. I use them, if you look carefully at the tint2 panel on top you’ll see about 10 of them open, running something in various workspaces. But I don’t live exclusively in them just because I’m using a tiling window manager. I use what I’ve found over time works for me, regardless of whether it’s terminal-based or GUI.

Earlier, I mentioned compositing. I don’t know of any tiler that has it by default that was written for the X windowing system. If you know of one, please hit the comments below and let us all know about it. However, you can get basic compositing while using a tiler. Xcompmgr and Compton are two of the best known, though Xcompmgr hasn’t seen any updates in a while. I use Compton myself. To get one working with your tiler, install it, then (depending on which tiler you’re using, and/or how you want to start it), it gets loaded either via your tiler startup configuration, a script the startup calls, or in your X startup script. To use a compositor, you should check with your tiler’s documentation as to find out what the best way to start it is. These compositors are very basic. You can get drop-shadows and transparency with them but little else. If you’re after wobbly-windows or flying cubes, you’re going to be out of luck. Also, while the compositor will work out of the box in most cases. It’ll take some configuration to get the right look and performance out of it. My feelings are: while a compositor is not required to use or try out a tiler, if you’re going to be using a lot of GUI apps in it, you might consider adding it at some point. Most modern GUI apps expect a compositor and can look pretty ugly without one. There are some, though few, that just plain won’t work right without one. Pretty much anything that has xrender or OpenGL as a requirement is going to have problems or be unusable. Remember, it’s not required to simply try the tiler. I wouldn’t recommend installing one until you’re sure you’d like to go deeper into your experimentation with a tiler. It’d just be something else you’d end up having to uninstall. The GUI apps might not look like they’re supposed to, but most are perfectly usable for trying out. There’s more than a few full-time tiler users who use GUI apps and never use a compositor, not caring how the app looks as much as how it functions.

There are other trade-offs with a tiling window manager that should be considered when deciding if you’d like to try one. Most have no fancy menus, no notification pop-ups, no desktop widgets, or no system tray applications of their own, or at most only very limited and basic ones, such as a sound volume control or a clipboard manager. Informational pop-ups are also handy for those apps who use them. These little tools are pretty standard on most DE’s but not on tilers (known exception is Awesome. It has its own notification pop-ups). You can, however, install basic stand-alone ones that will get the job done. I use Parcellite myself as a clipboard manager, a great little app that’s light and easy to use, and volumeicon as my volume control. Dunst fills in for the notifications. All are readily available in most repositories and there are scores more to choose from. Some of the tilers, like Awesome, for example, have user-contributed scripts and widgets that would be native to the tiler and do the same thing. There are lots of options, but be forewarned that out-of-the-box you’re going to be facing a very basic, bare-bones desktop.

Another trade-off is: if you’re going to get the most out of a tiler, you’re going to need to edit configurations. Some, like i3’s, are pretty simple to understand and have great documentation to help along, as well as a large user base to lend a hand on sticky points. Some, like Xmonad, are much more complex, so it’s going to take some time and learning to get it to where you’d like. Your skill level and/or how far you want to take itwill also be a deciding factor in whether a tiler is something you want to try and use, and if so, which one you choose.

In the end, I can only say what was attractive to me, and why I choose to use one for my daily driver. First, as I’ve already mentioned, is the fact I tend to be keyboard-centric, and tilers if anything are keyboard-centric. Second, while I have a fairly new, powerful computer with a large screen, I like the fact that tilers are light. I like having that much more memory available for my apps, as well as having fewer background processes taking up CPU time. Third, well they just make great use of the screen real-estate. Fourth is, while a tiler’s main purpose is to tile windows and make maximum use of screen space, all offer the option of “floating” or popping the window out of it’s tile to work in. I can then resize the window to whatever I want to make it easier or more convenient to use. I can also full-screen any app for as long as I need to. Whether I have it full-screen or floating, once done with what I was doing, I can press a key combo and either close it or tile it back in place. With my preferred tiler, bspwm, I can also choose exactly where and what size a new tiled window will be, before actually opening the application. All in all, I’ve come to love the lightness, speed and efficiency a tiling window manager offers, and find I really don’t need or miss any of the bells and whistles of fuller desktop environments.

What about the future? With all the currently favorite tiling window managers firmly based in the X-window environment, what will happen when Wayland gets more adoption? While most of the current tilers show little to no action or interest in porting to Wayland, there are plenty of new tilers being written especially for Wayland, as well as some ports of existing tilers. There’s orbment on the horizon, an i3 compatible one called sway, Orbital and several others. While some (even many) of the current tilers may not be around once most DE’s and distributions have made the transition to Wayland, there certainly won’t be a lack of tilers to try or use. On the plus side is the fact that, once Wayland becomes the standard, we won’t need a separate compositor anymore, Wayland itself handles that.

A tiling window manager isn’t for everyone. If you’re a mouse-maven, extensively use a touch screen, or just can’t live without wobbly-windows and exploding menus, then a tiler is not for you. There are trade-offs and a bit of a learning curve with any that you might decide to try. But, if you’re on a low-resource computer, have one with a small screen that seems a little cramped with most DE’s, or are just a bit adventurous and want to try out something different, a tiling window manager might be what you’re looking for. Despite what you may have heard, read or seen in screen-shots, they’re not just for command-line aficionados and ultra-geeks. You might even find they’re exactly what you’ve been looking for. I did.

Spread the love