Trying a tiling window manager

My experience with using i3, a tiling window manager for Unix-based systems.

A screenshot of i3 in use

I've been using Arch Linux as my daily driver distro for a few years now. There are a couple of things that are often humorously said about Arch users. One is that they have a compulsive need to tell you that they use Arch, analogous to the commonly meme'd scenario of a person who vapes incessantly telling everyone that they vape (I use Arch, btw). The other is that Arch users only use tiling window managers and don't use any program that isn't a CLI application. I've been using XFCE for the past few years, but I was intrigued by the idea of a tiling window manager. I figured that I'd embrace the Arch "stereotype" of using a TWM, and for the past few weeks I have been using i3, a popular TWM, to see how I would like it.

About window managers

A window manager is software that controls the placement and appearance of the windows on your desktop. Window managers are a concept that span multiple operating systems, including Windows, Mac, and Linux. Most people are accustomed to a stacking (or floating) window manager, which is the traditional way of managing windows. This gives you a title bar you can click and drag on to move the window around, and you get various buttons to minimize, maximize, or close the window. Windows can also overlap each other. The computer doesn't do much to manage your windows for you, it is up to you to decide the exact positioning of all your windows.

Tiling window managers work a bit differently. Your windows are automatically arranged in tiles (hence the name) on your desktop. Once you open your first window, it fills your entire screen (it "maximizes" it). When you open another, your screen splits in two: Your initially opened window now only fills half of the screen, and your new window fills up the other half. You can continue to open more windows and your screen will continue to split. You can control whether it splits horizontally or vertically, you can resize windows, and you have multiple "workspaces" (think of them as virtual desktops) that you can move other windows to if your screen gets too full.

The idea behind tiling window managers is that your screen space should be 100% utilized at all times. Overlapping windows are generally not allowed in TWMs. You can open many windows and cause an infinite number of splits. Workspaces let you group your windows and keep them at a reasonable size. The title bar of windows cannot be used to move the window in a TWM, and there are also no minimize or maximize buttons. Your windows are always displayed all the time. TWMs are aimed at power users and are designed to boost productivity. They are also largely driven by keyboard shortcuts, including when it comes to manipulating windows. Depending on the TWM you use, the mouse has little to no capabilities in managing your windows.

Choosing i3

One of the reasons I chose i3 was because they have a well-documented plain text configuration file. The i3 team prides themselves on great documentation and clean code, so I haven't had any difficulty reading their docs to figure out how to configure i3. Regardless, there are some pre-built configs and great resources you can find on sites like Reddit and YouTube if you do a simple search on Google (or if you're like me ... DuckDuckGo).

The other tiling window manager I considered trying was awesome. It seems to be another popular option but it is configured in Lua. I do not know Lua intimately and I didn't want to spend time learning the syntax to figure out how to configure awesome. Instead, I wanted to be able to configure my TWM and jump straight into using it right away, so that's why i3 won my choice.

I'll also point out that tiling window managers usually are only that: A tiling window manager. It is not a suite of software and doesn't come with any other applications you'd expect to find on any other computer, such as a file browser or text editor. I mentioned earlier that I had been using XFCE, which is a full-fledged desktop environment, so I am able to use their suite of applications within the i3 window manager. If you want to try i3 for yourself, it may be better to install it on a distro that already has applications installed for you to use, such as Ubuntu or Mint. There are multiple tutorials online for using i3 on these distros as well.

My experience

As I mentioned earlier, using a TWM is mainly done with keyboard shortcuts. I don't have an issue with using keyboard shortcuts, I already use them in other applications all the time. However, i3 has their own default combination of keys to move or resize windows and switch workspaces, so the largest barrier was getting the muscle memory down for those shortcuts. i3 also gives you the ability to change any of the keyboard shortcuts as you wish via their configuration file, but I largely stuck with the default ones.

What I like about tiling window managers is that they essentially force you to manage your windows and arrange them to make the best use of your screen space. Windows can't overlap and you can't "minimize" them (there is no taskbar), but you can move windows to other workspaces. You could, for example, have a workspace that contains only your web browser. You can have another that contains your chat apps, like Telegram, Discord, or whatever IRC clients that you prefer to use. Then you can have a third that contains a file browser and text editor, as a development workspace. As I type this, I have a Firefox browser taking up roughly two-thirds of the left side of my screen, previewing this blog post as it will appear online. On the right side, I am typing in the Atom text editor.

I've noticed since I started using i3 that I have to make more of an effort to close windows that I am no longer using. I have a tendency to leave many unneeded file browser or terminal emulator windows floating around in the background. If you are the type of person that leaves many browser windows and other types of applications open, you might struggle to use a TWM.

To my surprise, all of my full screen Steam games work flawlessly. i3 can handle full screen applications perfectly fine, utilizing the entirety of your workspace. You can still switch to other workspaces even from inside the full screen app. i3 also handles tiny windows such as dialog boxes properly. These types of windows usually provide a "hint" that tell i3 to break the tiling paradigm and treat the window as a floating window, which can be dragged around with the mouse and will overlay the other tiled windows on your desktop. This is to prevent simple message boxes with a few buttons from eating up your entire desktop, causing the UI in the window to be stretched to extreme proportions.

i3 comes with two notable applications that are integrated into the window manager: i3bar and i3status. i3bar is the application that creates a screen-width black bar that runs along the bottom of your screen, used for showing a list of workspaces and system info. i3status is the application that provides text to i3bar to be persistently displayed in the corner of the screen. By default, i3status pipes system info to i3bar such as the current date and time, your internal IP address, system load, and battery level if you're on a laptop. If you want to change the information that is displayed, you can reconfigure i3status to change what kind of text it outputs. You can also replace i3bar entirely with another application that persistently displays info, and pipe i3status output to that. Or, you can even ditch i3status and write your own script for outputting info. Everything is modular to keep you in full control of what you do and don't want to use. Currently, I'm still using i3bar but I'm feeding a Powerline status line into it to display some basic info, including the track I'm currently listening to on Spotify.

Overall, I would say that I've had a good time with i3. There is a bit of a learning curve to it, especially with the keyboard shortcuts, but if you are already the type of person who uses keyboard shortcuts quite extensively, you may not have much trouble adapting. While the default configuration works out of the box, you'll need to tweak it if you want to extensively customize your desktop. There is a Screens page on i3's website that provides some screenshots to show you what is possible. There are also links to some YouTube videos that explain how i3 works and how you can customize it. If you really want to get into it, I'd suggest watching them all. This series of screencasts goes in-depth on how to customize i3 to make it visually appealing and add additional functionality. Once you get a hang of how the tiling in i3 works it becomes much easier to move windows around and start utilizing the benefits of a tiling window manager. It's an alternative method of managing your windows that I think is worth trying out.