IceWM — Probably My Favourite Floating Window Manager

Otto P
4 min readDec 1, 2021

One of the more fascinating features in Linux, the BSDs and other such operating systems is the ability to change up your user interface. Sure, you can do this in Windows or MacOS, too, but it’s rather hacky and there are nowhere as many options available for you to simply install and use.

But with Linux, you just install another desktop. However, if you have some additional time that you want to spend on it, you don’t even need to install a full desktop. That’s where window managers come into the picture. They manage your windows for you and potentially provide some outside functionality, such as a bar. You can then combine such a window manager together with other programs of choice to create your own desktop. This way you can customize your UI to match your needs and you don’t end up with a whole bunch of unnecessary junk on your system.

This is what I have managed to do with IceWM. It mostly incorporates IceWM elements as the title bars, task bar and window management are all being provided by IceWM. However, I have stopped using IceWM’s application menu and moved into using the more keyboard-driven Rofi, which I already use on a variety of other window managers.

The initial setup

But how does IceWM look out of the box? The answer: pretty bad. IceWM is a very old window manager and although it is still maintained and getting updates, the themes that are supplied by default are from its old days. Luckily enough, making themes is relatively easy and there are plenty that are already available. If you are specifically interested in my configuration, that can be found here.

Regardless, the default UI is simple. It follows something akin to Windows 95 visually. A grey bar with a rectangular app menu button to the left. Next to it you can find some shortcut icons and workspace icons. Then there’s a window list and at the right there are some additional widgets and a clock. This can all be configured in the configuration file, of course. The basic keybindings, navigation and window behaviour are all pretty standard as well, so those are easy enough to understand.

The configuration

The configuration is done in text files just like most window managers. However, it is very simple when compared to many others. Rather than using a programming language for its configuration files, they use a plain text format. Every option is also explained with a comment that describes its functionality. This makes basic configuration relatively easy. There are a number of other files for setting the theme, keybindings and so on. These do not follow the plain text format as clearly, but they are very short files and easy enough to work with.

However, this model of configuration is limiting if you are a more advanced user. You cannot configure the position of the different items on the taskbar and the window management options are somewhat limited. However, this, too, can be solved. You can use a third party bar along with an app launcher like Rofi and be set with a customized bar and a keyboard-based app menu. For further window management cutomization, IceWM comes with an utility called icesh. This is a command that can directly manage how the window manager treats the windows and its power exceeds that of the configuration file. For instance, horizontal maximization of windows, which the main configuration file seems to be lacking, could be handled by an icesh command that is set as a keybinding in the keys file.

Reliability

The configuration is obviously not enough to make a window manager, however. How about the actual reliability of the window manager?

Long in the past, there was a bug in IceWM that really got in my way. Namely, making the bar as thin as I wanted to make it would result in a graphical issue where the bar would remain black until I clicked on something, switched workplaces, etc. This is no good. Thus I opened an issue in their Github and the issue was fixed in the following release. Since then, IceWM has been perfectly functional for me and it has proven itself to simply work well.

Conclusions

I have grown rather fond of IceWM over the time that I have been using it. By no means is it my only window manager. I run a whole bunch of tiling window managers as well, but IceWM is what I have ended up with as my only floating one for now. I did run XFWM (Xfce’s window manager) for quite a while, but I ended up just preferring IceWM. I do also want to try some others, such as Berry, which seems like an interesting take on a floating window manager, so hopefully that will turn out to be a positive experience.

At the end of the day, IceWM is a very solid and light Window Manager. It is on the old side, but this does not mean that it can’t look good or work well. It’s a very pleasant window manager in all kinds of ways once you set it up and the defaults are decent by themselves, too. The default look is not very pretty, though, so I would recommend applying a nicer theme right away.

--

--

Otto P

A new software engineering student. I write about technology, software, FOSS and Linux. I am by no means a professional, so I just hope to enjoy some writing.