wnd's weblog

i3 window manager

6 Jun 2013 09:36:23 diary, software

I’m in love with “i3, improved tiling wm”, my current window manager of choice. I can’t understand how I managed to live without it for so long.



When I first started using GNU/Linux back in 2000, one of the first choices I made was picking a window manager. I tried an early version Sawmill (Sawfish), Enlightenment, Fvwm and others. Eventually I settled with Fvwm which could be configured to be near-perfect match for me. Even though I had come from Amiga and Workbench, I absolutely loved focus-follows-mouse, virtual desktops and the pager, the ability to bring windows to front and sending them background by simply clicking the frame and so on. As time went by, I added more obscure commands to move and resize windows and removed all but one widget from the window frame.

Even though I was mostly happy with Fvwm and Fvwm2, I often ended up opening far too many terminals for tasks that were only supposed to take seconds. My usual workflow to use several desktops and organise stuff accordinly usually worked well because I only had one or two overlapping windows on each desktop. With one-shot windows, however, I sometimes had to hunt for that one terminal with Vim put in the background. Furthermore, this helped me to form a habit of typing “fg” whenever there was no Vim running on that terminal. Clearly there was something wrong.


Eventually I was introduced to tiling window managers. I loved the idea and tried a few, namely xmonad and wmii. I decided to skip awesome for naming reasons and ion because of the author’s attitude. These experiments confirmed that I liked the concept, but could not switch because I was so fixed with having a terminal window limited to exactly 80 columns. This was because I believed (and still do) that no line of code should have to be wider than 80 columns or there was something wrong with it. Yes, even with 8-column indentation. If there wasn’t an option to force certain windows to certain size, this would be a showstopper.

As time passed, I came across a Vim option (colorcolumn) to highlight given column. Even though the option made pasting stuff over X a bit more cumbersome (as each line would have whitespaces at the end of each line), I started using this option. Some time later I heard about i3 and decided to give it a go on my home computer. Configuring i3 took almost no time and with this newly discovered Vim option, I was happy. When I realised that I could make certain window classes to always be floating I was even happier. These always floating windows would only be used to very temporary stuff such as showing feedback for keyboard shortcuts that controlled command line applications.

Point of no return

After a few months of running i3 on my home computer, I started using i3 on my work computer as well. This was one of the best choices I had made for quite some time. i3 on dual screen setup was even better than i3 on a single screen. It wasn’t just good, it was absolutely brilliant. I could easily change focus between two screens, change the content of either screen without touching the other, move focus between windows intuitively and efficiently, open a persistent “scratch” terminal anywhere and hide it again - all with a single keyboard shortcut. I could still sends number of Vims in the background, but now there was little need to do so. Right now my only regret is not trying this earlier.

I’m sure my honeymoon period with i3 will have to come to an end, but right now I couldn’t be happer with my decision. Much like with Ruby, all the pros easily outweight the cons. Do yourself a favour, have an open mind and give i3 a go.