icewm window manager


As part of my exploration into light weight window managers with a default Windows user interface, I also took a look at icewm - Version 1.3.7 is in the repos; I downloaded 1.3.8 from their site and built from source. There is also a theme package in the repos (I dodn't bother with it) and a package named icewm-lite - don't know why it's "lite". If installing from the repos, you may get a /usr/share/xsessions/icewm.desktop file; I had to make my own.

Once everything is installed and you log in for the first time, you're greeted with a fully functional Win95 looking desktop. The default configuration files ( ) are located in /usr/local/share/icewm; if you want to change anything, copy the contents of that directory to $HOME/.icewm and fire up your favorite text editor.

The main configuration file is the preferences file. If you have configured fvwm before, the syntax of this file will look very familiar - I get the feeling that icewm is a fork of fvwm written with "sane" defaults. If you have never configured fvwm before, this file will look a bit intimidating; but it's well commented and the configuration options are pretty self-explanatory. Most of the configuration is a matter of uncomenting the desired option and answering yes or no (0 or 1). The default key bindings and theme are also in this file.

The other configuration files to be concerned with are keys (key bindings), menu (the default menu), and toolbar (launcher buttons for the taskbar). All are pretty straight forward to edit, and the IceWm Manual page on the home page is well documented - however, the FAQ page on that site looks to be a little depricated. For some reaason, icewm did not install a man page (or installed to some odd location) - hopefully, if you install from the repos there is a man page as well.

In addition to the main icewm (and icewm-session) programs, there is icewmtray - a system tray; and icewmbg for setting the background on the desktop and provide some transparency support. Both those apps need to be started before icewm in order to work - my starticewm file:


xset s off &
xset b 33 &
xsetroot -solid "#140C0B"
xmodmap "$HOME/.Xmodmap"
xrdb -l "$HOME/.Xresources"
urxvtd -q -o -f &
(sleep 2s && icewmbg) &
(sleep 2s && icewmtray) &
(sleep 2s && nitrogen --restore) &
(sleep 2s && wicd-gtk --tray) &
(sleep 2s && "$HOME/bin/") &

# And last but not least we start the window manager.
# Because it is the last app you have to run it with ''exec'' before it.

exec icewm-session

Not sure what the difference is if you go with icewm or icewm-session - both worked fine so I didn't search for an explanation.

Edit - found it in the icewm FAQ - if icewm-session is used, then icewm will use a startup file when you log in. Create the file "startup" in $HOME/.icewm and edit it like you would the openbox autostart file. Remember to make it executable.

There are a bunch of themes for icewm on - simply download one to $HOME/.icewm/themes and extract the contents. The icewm menu auto updates so the new theme will appear in the theme entry. The default theme defined in the preferenes file is color based; the included themes and thmes on are pixmap based. If you have good skills with gimp, you can make a pretty decent theme; otherwise you're kind of stuck with a retro Win95/98 or Fvwm look. The home page for icewm has a detailed page explaining how to create a theme, and each theme has a default.theme file that can be edited to tweak any contributed theme you decide to go with.

The boxy fvwm look is fine with me, but one thing I didn't like is that the size, padding, and relief of the taskbar is hard coded - a lot of the pixmap themes appear to be using gradients to hide this little annoyance. The height of the taskbar is, in part, determined by the width of the pixmaps used and setting the IconSize options in the preference file.

IceWm is pretty light on resources - comparable to jwm, fluxbox, fvwm, and has it's own taskbar, toolbar (launchers), systemtray, clock, and a few taskbar plugins to monitor memory usage, cpu usage, battery, and network.  If you don't want to go that route, icewm plays pretty well with tint2 and conky; however, the internal logout command for icewm treats tint2 and conky as open windows and prompts you to save their contents before exiting. You can work around this by making a key binding and menu entry for the vsido-exit command.

You can also edit the preferences file and change -

#  Command to start logout
# LogoutCommand=""


#  Command to start logout

but that work around still shows a prompt asking if you want to exit before running vsido-exit.

So, even though icewm is light on resources,  fully functional on it's own, and fairly straight forward to set up, after going through all the steps to get it configured the way I wanted, my personal preference is just go with jwm, or fvwm to get a Windows-like user interface.

Icewm ,      fluxbox and fvwm for comparison -


I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo


Thanks for this PackRat...  I plan on digging into it this weekend

I appreciate it!
VSIDO      VSIDO Change Blog    

    I dev VSIDO