A Short IceWM Tutorial

If you want to use a lightweight Linux system on your old computer, you have to use a lightweight window manager. IceWM is one of my favourite lightweight window managers. It does not reserve a lot of system resources and it can be used even with very old computers. It depends only on the X window system and libXpm. It should run even on an 386 or any other imaginable box that can run X. It is included in the repositories of every major distribution, so you should encounter no problems in installing it through the default package manager, either apt-get, yum, zypper or any other imaginable tool.

In addition to Linux, it can be used on several other flavours of Unix including commercial systems like Tru64 and AIX and open source operating systems like FreeBSD and NetBSD. It has even been reported to compile and run under Windows!

IceWM uses themes to change the look and feeling of the window manager. Themes consist of things like fonts, colours, borders and button pixmaps put together under a name to form a theme. The theme can be changed from IceWM's menu under the item Settings. The theme will be stored in the file ~/.icewm/theme. Changing the theme from the Themes menu overwrites the content of the file with the new theme automatically

Find a theme to install

Your IceWM probably came with some themes. Usually even more of themes can be installed through the package management as a separate package.

I prefer to choose myself the themes to be installed. There are two especially good web sites to go hunting for a ready theme to spice up your desktop:

* Freshmeat
* Box-look

It can even be configured to look like Windows XP if you try to build a desktop for those who are afraid of Linux.

Unzip the package

The themes are compressed packages and they must be uncompressed before use.

First check the package is OK:

tar -tzvf win31theme-default.tar.gz

This allows you to check the contents of the package before really unzipping it. If everything seems to be OK unzip the file with:

tar -xvf win31theme-default.tar.gz

This unzips the package in a directory called win31.

Put it somewhere where IceWM finds it
If you want to use the theme only for yourself (or if there are no other users), you should move the theme to the directory ~/.icewm/themes/themename. After this, you should find the just installed theme under the menu item Settings -> Themes

Themes usable by everyone are stored (at least in my system) in /usr/share/icewm/themes/

Tweak the menu
I don't like the default menu offered by the distribution I use. Probably you won't be perfectly happy with your menu either. This is where the going gets tough, as we will actually edit a text file to configure IceWM's menu.

Fortunately, it uses syntax that is simple to understand. First copy the default menu from /etc/icewm/menu to ~/.icewm/menu. If you absolutely do not want to configure any text files, you can try the programs IceMC or MenuMaker to edit the menu. I find it easier to configure the menu with Emacs (or some other editor).

The items in menu file start with a keyword, either prog or separator. Programs are defined using the syntax:

prog Program Icon app -and -options

We can, for example, add Firefox by adding the following line to menu:

prog Firefox firefox firefox

The first Firefox is the entry added to the menu, the second firefox is the name of the icon and the third firefox is the name of the binary.

If you want to insert a sub menu, it can be done by adding:

menu SubMenu folder _icon {
prog ...
prog ...

It is a good idea to think twice about programs one adds to the start menu and toolbar as the choice of lightweight software is as important for the user experience as the chosen window manager. I usually try to use lightweight alternatives to better known applications, for example, Abiword instead of OpenOffice.Org and PCManFM instead of Nautlilus, Konqueror or Dolphin. But you are of course free to do whatever you want!

You can add start buttons to toolbar using the same syntax as for adding applications to start menu. Use ~/.icewm/toolbar for your personal toolbar.

The preferences are read from file preferences. Copy the default preferences from /etc/icewm/preferences to ~/.icewem/preferences. Use this copy of preferences file for storing your personal preferences.

The preference file is well documented. Just browse through the options presented in the file.

Icons on the Desktop
I am not sure whether having icons on the desktop is a good habit or if they just make the desktop more cumbersome to use. Most people, however, seem to want icons on their desktop where they are hidden behind windows and difficult to find.

IceWM does not support icons out of the box but there are several applications that can provide the desired result. One of them is idesk. I decided to use PCManFM for icons and wallpaper (Edit, Preferences, Manage the desktop and show file icons).

Startup script

It is not especially practical to set the wallpaper by hand using the command line every time one starts IceWM. If you want to execute certain applications every time you start IceWM, you can write a startup script (~/.icewm/startup). Here is a simple sample script:

---------------- ---------------- ----------------
xterm -geometry 100x20+10+600 & # start a terminal
pcmanfm & # start the file manager
---------------- ---------------- ----------------

Remember to make your startup script executable with:
chmod a+x startup

As the result of these steps, you have a simple and strong lightweight desktop that is tailored to your needs. Later you can add even more lightweight functionality to your customised desktop and make it truly unique. If you already now have some ideas just drop a line in the comment box!


KenJackson said...

I love IceWM. It's what I use on most of my Linux computers by default.

But there was one annoying detail which took me a while to solve. Many software packages run 'update-menus' or similar when installed to include themselves into my desktop menu. This would wipe out my edits.

To solve this, I wrote a script which I put in $HOME/bin/fixicemenu (not shown here--write your own).

But here's the trick to cause that script to be called every time menus are updated. Add a second script in /etc/menu.d/. I named that one 'zken' so it will be called last. Here is my '/etc/menu.d/zken' script:

# This calls the user's "fixicemenu" to fix the menu under icewm.

FIX="/home/$(/bin/id -un)/bin/fixicemenu"
if [ -x "$FIX" -a "$(type -t $FIX)" = "file" ]; then
$FIX -q

Bhaskar said...


I am new to icewm. I want to have more than 4 workspaces in my toolbar. Is there someway I can do that in icewm?


Anonymous said...

I realize Bhaskar's post is over three years old, but here goes.

Yes, you can change the number of workspaces.

Create or edit ~/.icewm/preferences with the following line:

WorkspaceNames=" 1 ", " 2 ", " 3 ", " 4 ", " 5 "

Add or remove entries as needed/desired.