IceWM Guide

IceWM is a delightful little window manager, which aims to be must faster than the standard desktop environments like Gnome or KDE, without being as sparse as, for example, Openbox. Default IceWM is perfectly usable, but ugly, and changing the look and feel can take some time.

I’ve installed and configured IceWM on Arch and on Ubuntu. This step-by-step guide will assume you have Ubuntu installed. In your distribution, installation can be a bit different, or maybe not all third party configuration utilities are available, but I think this guide can help anyone who tries to install, configure and use IceWM.

Sources

Everything in here I tried myself, but most of it I found somewhere else. This is where I got my inspiration:

Installation

Personally, I think the best way to install Ubuntu + IceWM, is to use the alternate install CD, install a console system, and then grab and configure xorg. That way, you’ll get the best/fastest results. Of course, if you want things a bit easier, you can always install plain (K)Ubuntu first, and IceWM later. It works both ways. I’ll go over them both.

    Console Ubuntu

First of all, this is not the easiest way. If you have no idea how to edit xorg.conf, or if you don’t know what graphics card you have, I’d skip this way and go straight to “Regular Ubuntu”. Otherwise, after the minimal install has completed, let’s do a system upgrade:

    sudo aptitude update
    sudo aptitude full-upgrade

After that’s done, install xorg:

    sudo aptitude install xorg

If you have an Nvidia or ATI card, you can install their drivers now. There are multiple possibilities, and the easiest way is to install Envy and let it do the dirty work for you.

    sudo aptitude install envyng-core

While we’re at it, let’s install some stuff that might come in handy later:

    sudo aptitude install build-essential

After that, type:

    sudo aptitude install icewm icewm-themes

The latest iceWM in the Hardy repos is 1.2.33. 1.2.35 is out and provides a couple of bugfixes, but nothing major as far as I can see.
The icewm-themes package is optional. It provides you with some extra themes, but in my opinion, each one is as ugly as the default. You’ll be better off downloading a good-looking one later.
Now, login to icewm:

    startx
    Regular Ubuntu

If you have Ubuntu already installed, simply type:

    sudo aptitude install icewm icewm-themes

Then, logout. In gdm, click Options > Sessions and choose IceWM. Log back in.

Configuration

Various guides around the web, and even the Ubuntu Wiki, recommend using tools like iceme, iceconf, icewmconf, and icepref, but I won’t mention them in this guide, simply because they’re not maintained. They’re not even in the Hardy repositories anymore. Editing the various configuration files by hand isn’t that hard anyway.
That means we’ll have to use the terminal a lot, but unfortunately, only xterm is available in the IceWM menu/toolbar. I’m not a fan of xterm…it’s to sparse. My favorite terminal is Sakura, unfortunately I can’t get it to work in Ubuntu. It keeps telling me I don’t have the gtk > 2.6 development libraries installed…any help with this would be welcome, by the way 😉
If you have Gnome or KDE already installed, you can open xterm, type “gnome-terminal &”, or “konsole &” and then minimize xterm. Another possibility is to install xfce4-terminal, which doesn’t have many dependencies. Otherwise, we’ll just use xterm. (hint: xterm lacks a scrollbar, so if you want to scroll up or down, use Shift+PageUp/Shift+PageDown)

IceWM has a lot of configuration files. It fact, it has a configuration directory, but it’s not in your /home by default. An example directory is hidden in /usr/share, so let’s copy it to your /home:

    cp -R /usr/share/icewm ~/.icewm

The most important files in this directory are keys, menu, preferences, toolbar and winoptions. Let’s go over them one by one. After you change something and you want to see the results, be sure to restart IceWM (Logout > Restart IceWM in the menu).

    Keys

As you may suspect, this is where your keyboard shortcuts go. There are some examples in the file. The syntax is as following:

    key "key combination"  <command>

For example, if you want Firefox to be opened with Windows-key + F:

    key "Super+F" firefox

An interesting shortcut, which isn’t listed in the file, is Windows+Spacebar, which provides the same functionality as Alt+F2 in Gnome: it opens a “run command” dialog in the toolbar.
Keep in mind there are a lot of preconfigured key shortcuts in ~/.icewm/preferences, a file I’ll mention later.

    Menu

This is where you edit the menu. If you had Ubuntu already installed, all your applications we’ll be already in a very crowded menu. If not, it’s pretty sparse. In any case, you’ll probably want to clean it up/expand it.
This is how it works:

    menu "<menuname>" folder {
    prog "<application_name>" /path/to/application_icon <application>
    prog "<application2_name>" /path/to/application_icon2 <application2>
    }

For example:

    menu "Internet" folder {
    prog "Emesene" /home/celettu/.icons/Linsta/msn_2.png emesene
    prog "Firefox" /home/celettu/.icons/Linsta/firefox.png firefox
    }

Of course, by this time it’s possible you don’t have any icons yet installed. In that case, just put a “-” there (without the inverted commas), and worry about it later.

Another possibility is to install icemc, which is in the repos. There’s not much difference with editing the files by hand, but if you need a gui, it’s there (hint for Arch users: icemc is included in the icewm-utils package).

    sudo aptitude install icemc

Yet another possibility is to install menumaker, which automatically searches all installed software, and puts them in the menu according to the standards of freedesktop.org. If you’re not completely satisfied with the results, you can always edit them by hand later.
In Ubuntu, menumaker is not in the repos, so you’ll have to download and compile it yourself. It’s not that hard. You can download the latest version here. Then, cd into the directory to saved the tarball and type:

    tar xzvf menumaker-0.99.7.tar.gz
    cd menumaker-0.99.7
    ./configure
    make
    sudo make install

For Arch users, menumaker is available in the AUR.
After you’ve installed menumaker, run:

    mmaker icewm

Or, if you want to overwrite the menu you already have:

    mmaker -f icewm
    Preferences

Ah, the big one. Here you can edit pretty much anything, but there’s not much you have to do here. I suggest browing through it, checking out what’s what, and see if you want to make any changes. All lines are commented out by default, so if you change one, make sure to uncomment them.

There’s one thing though. By now you’ve probably noticed that, unlike in other DEs or WMs, you have to keep clicking the mouse button to get through the menu. It’s enough to drive a grown man crazy. To change that, find this one:

    # Menus track mouse even with no mouse buttons held
    #MenuMouseTracking=0

And change it to:

    # Menus track mouse even with no mouse buttons held
    MenuMouseTracking=1

Adjust the other settings to your liking.

    Toolbar

Very easy, since the syntax is exactly the same as in the “menu” file.

    prog "<application_name>" /path/to/application_icon <application>
    Winoptions

This one is more interesting. Here you can configure the behavior of your application windows, like always open Firefox on the third desktop, or lose the window decorations on some apps. There are examples already present in the file, and some of the options (but not all, since the documentation is a bit outdated) can be found on the IceWM homepage. The syntax of the lines here is:

    window-class.window-name.window-role.option argument

I’ll explain things with an example. Suppose you have Thunar installed, and you always want to be maximized when you start it. You’ll have to find out the window-name of Thunar. xprop is your friend here.

    xprop | grep "CLASS"

Then simply click on the Thunar window. The result will be something like this: WM_CLASS(STRING) = "thunar", "Thunar". The first part is the name, the second one is the class. Unsurprisingly, they’re both “Thunar”. You’d think that adding the following in your winoptions would be enough:

    thunar.Thunar.startMaximized: 1

Indeed, when you open Thunar now, it’s maximized. The problem is, every other Thunar window is too, like the “Rename” or “File Properties” dialogs, and they’re supposed to be small. To fix this, you have to know the role of the main window too:

    xprop | grep "ROLE"

You get a line that looks like this: Thunar-<lotsandlotsofnumbers>. Fortunately, you don’t have to copy those numbers, simply change the line in winoptions to the following:

    thunar.Thunar.thunar*.startMaximized: 1

Presto. Everything behaves like it should be. Now, you can probably figure out the other options.

    Startup

There’s actually a sixth file (which doesn’t exist by default, so you have to create it), which provides a limited form of session support for IceWM. It’s a bash script, so make it start with #!/bin/sh, and make it executable:

    chmod +x ~/.icewm/startup

In it, you simply list the programs you want to start when you boot into your desktop, like feh (image viewer that provides the background, more on this one later), xscreensaver, or xpad (think tomboy, only lighter). Here’s mine, as an example:

    mpd &
    feh --bg-scale "waterfire.jpg" &
    xcompmgr -cC -t-5 -l-5 -r10 -o.33 &
    xscreensaver -no-splash &
    xpad &
    sleep 2 && conky &

Make sure you add a “&” after ever command, to ensure that the next command gets executed too.

    Taskbar applets

Finally, in the taskbar, IceWM has three rather nice applets by default: a network monitor, a process monitor, and a mail applet. All of them can be configured in ~/.icewm/preferences. The mail applet is especially interesting, because you can make it launch your preferred mail, application (look at “MailCommand“), or check remote mailboxes (MailBoxPath="imap://username:password@remote.host").

Looks (Themes, backgrounds and icons)

Okay, now we have an IceWM which behaves pretty much the way we want it to behave, but it’s still ugly as sin. It’s a shame it looks this bad in the default configuration, because it can be absolutely beautiful. To pretty things up, we need to do two things: use some prettier themes, and manage the desktop (provide a wallpaper and desktop icons).

    Themes

In this case, “themeing” can be divided into three parts: the IceWM theme (window decorations and toolbar), the GTK-theme, and the icons. As an example, I’ll make Ubuntu look like…well, Ubuntu. If you hate the brown look, you can of course make it look different.

    IceWM theme

This part is easy enough. Simply download a theme, unzip it into the ~/.icewm/themes directory, and choose it using the menu (Settings > Themes > <yourtheme>). There are some nice themes available on box-look.org and Freshmeat…along with some really bad ones 🙂
The one that looks like the default Ubuntu “Human” theme, is Icebuntu from box-look. After you’ve downloaded it, untar it, then move it to the right directory:

    tar xzvf 62935-icebuntu-default-feisty.tar.gz
    cp -R IceBuntu ~/.icewm/themes/

Select it using the menu, and voila, you have some pretty ‘Buntu-ish window decorations.

    GTK-theme

Your GTK-theme is specified in the .gtkrc-2.0 file in your home directory, and if you know how, you can edit it by hand. Otherwise, the easiest way to switch between GTK-themes is using a program like gtk-chtheme, or LXAppearance. gtk-chtheme is in the Ubuntu and Arch repos. LXAppearance isn’t, but has the advantage of providing not only a preview of the gtk-theme, but also of the icons. If you don’t like compiling, just do:

    sudo aptitude install gtk-chtheme

If you want to use LXAppearance, you’ll have to download and compile it (and install libgtk2.0-dev along the way, it’s needed):

    wget http://downloads.sourceforge.net/lxde/lxappearance-0.2.tar.gz
    tar xzvf lxappearance-0.2.tar.gz
    cd lxappearance-0.2/
    sudo aptitude install libgtk2.0-dev
    ./configure
    make
    sudo make install

Now, people who already have the normal Ubuntu installed have it easy, as Human, Human-Clearlooks and Human-Murrine will already be listed. If they’re not (and you’re stuck with Raleigh), you can install them.

    sudo aptitude install human-theme human-icon-theme

Other GTK-themes are available at gnome-look.org. Create a directory in your /home called .themes, and unzip them there. They’ll show up in gtk-chtheme or LXAppearance.

    Icons

If you installed LXAppearance, the Human icon theme will be available. Otherwise, you’ll have to specify the icon-theme manually. Make sure your .gtkrc-2.0 file contains the line

    include "/home/<yourusername>/.gtkrc.mine"

Then, create that file, open it, and specify your icon theme, like this:

    gtk-icon-theme-name ="Human"

Other icon themes are available at gnome-look.org. Create a directory in your home called .icons, and unzip them there. Then, change the line in your .gtkrc.mine, or use LXAppearance.

    Background and icons
    PCManFM

By far the easiest way to have a wallpaper image and icons on the desktop is to install PCManFM, a nice, fast File Manager. It’s in the Ubuntu and Arch repos, and should be in any other distro’s repositories too. It doesn’t manage the desktop by default, so open it, go to Edit > Preferences > Desktop and check “Show Desktop Icons” and “Wallpaper”. The downside is, it doesn’t really look that great. It’s easy though.
Keep in mind that, if you want the background to appear every time you boot the pc (as you probably will), you have to add “pcmanfm &” to your ~/.icewm/startup.

    Icewmbg

IceWM actually has background support, but it has to be configure manually. In your .xinitrc, put this line as the first one:

    icewmbg &

Then, open ~/.icewm/preferences and edit these lines:

    ### Support for semitransparent terminals like Eterm or gnome-terminal
    SupportSemitransparency=1 # 0/1

    ### Desktop background scaled to full screen
    DesktopBackgroundScaled=1 # 0/1

    ### Desktop background color
    DesktopBackgroundColor = “<whateveryouwant>”

    ### Desktop background image
    DesktopBackgroundImage = /path/to/your/wallpaper.png

    ### Color to announce for semi-transparent windows
    DesktopTransparencyColor=”<whateveryouwant”

    Feh

My favorite way to handle desktop wallpapers is to let feh do it, because it’s so simple. Feh’s a command-line image viewer, and should be in every repo.

    sudo aptitude install feh

Just add a line like this in your ~/.icewm/startup:

    feh --bg-scale /path/to/your/wallpaper.png &

Don’t forget to add the &, otherwise every command after this one won’t run.
Other possible arguments include --bg-tile, --bg-seamless, and --bg-center

    iDesk

Of course, if you use icewmbg or feh, you still don’t have icons on your desktop. iDesk is your friend here, but it only supports launchers, not file shortcuts, so that’s a drawback if you compare it to PCmanFM. iDesk can make icons look much, much better though.

    sudo aptitude install idesk

The first thing you’ll have to do is to create the directory containing your icons:

    mkdir .idesktop

Then, in that directory, create a *.lnk file, which will contain the description of your icon/launcher. This is a simple example:

    table Icon
    Caption: Firefox
    ToolTip.Caption: Totally cool browser
    Icon: /usr/share/pixmaps/firefox-3.0.png
    Width: 72
    Height: 72
    X: 31
    Y: 21
    Command[0]: firefox
    end

Save, and run “idesk” if you want to see the results. Don’t forget to add add “idesk &” to your ~/.icewm/startup.

Have a look at the excellent iDesk configuration webpage for further help.

Login, reboot, shutdown

Up until now we’ve been logging into our system with “startx” (unless you had ubuntu installed already, then you’ve just been using gdm). It works just fine, but it’s not very nice on the eyes.
Another thing is that a WM, unlike a DE, needs you to login as root before you can shutdown or reboot the system. There are ways around this.

Login

To boot straight into X you need to create a .xinitrc file in your /home directory, and put this line into it:

    exec icewm-session &

Then, install slim, which is a lightweight login manager that reads your .xinitrc.

    sudo aptitude install slim

Slim doesn’t look like much by default, and Ubuntu doesn’t have any slim themes in it’s repositories. Lucky for us, lots of good-looking ones are available on the official website. Installing, and previewing them is very easy. Put the themes in /usr/share/slim/themes, and preview them with:

    slim -p /usr/share/slim/themes/

Editing the themes isn’t very hard either. For example, just put your wallpaper in the directory of the theme you’re using, rename it to background.jpg, and enjoy a seamless login!

Shutdown and reboot as a normal user

Even if you’ve been using gdm, this won’t work out of the box in IceWM. To give a detailed explanation of how you can achieve this without opening a terminal and logging in as root would be too much overlap with one of my previous posts, or this part of urukrama’s excellent openbox guide.

Everything else

There’s not much left to do, except installing your favorite applications, and start using your system! After all, IceWM was designed “not not get in your way”, so now that we’ve configured it, we can forget about it…and just enjoy the speed of your system compared to Gnome or KDE 🙂

Temporary warning

I’ve just written this guide, and it’s probably riddled with errors. As long as they’re just spelling mistakes, no harm done, but if I wrote down something that’s simply wrong (“Aaargh, I did rm -rf * just as you said, and now all my porn is gone!”), please let me know at celettu at gmail dot com.

20 Responses to IceWM Guide

  1. xlax says:

    Nice guide, pity though how you’re trying to convert an ubuntu box to arch-like environments… Installing slim etc… It’s not the ubuntu way ^^
    Nonetheless, if I were an IceWM user, I’d most certainly take this under a loop 🙂

    Keep up the work.

  2. celettu says:

    xlax:

    Well, there are some projects which think Ubuntu combined with a light window manager is a nice idea (Fluxbuntu, Ubuntu Lite, the one with Enlightenment…)…

    Unfortunately, they’re not very active, so this is another way to achieve that.

    And a minimal console install leaves you without a login manager. Gdm seems a bit heavy for an IceWM system, so why not use Slim? 🙂

  3. cae says:

    Hmm,

    looking forward for your fluxbox guide, with recommendations on apps to go along !

    😀

  4. celettu says:

    cae:

    I’m actually thinking about writing a couple more of these…starting with fluxbox and pekwm 😉

  5. tallman says:

    Great guide, thanks for your work!

  6. nongeekboy says:

    Great guide! I was thinking to install a minimal Ubuntu on my old pc (I already have Arch with IceWm installed on it) so I will use IceWm with it. Another post from your blog that will help me a lot. Thx

  7. celettu says:

    tallman:

    thanks! Spent quite a few evenings on it, and I still feel it can be improved a lot 🙂

    nongeekboy:

    No problem. Glad to be of help 🙂

  8. Jude Pierre says:

    My son kept on login me out (Application–>logout–>logout) from time to time. How do I password protect logout using something like gksudo?

    Thanks

  9. macondo says:

    Good article, congrats!

    I’m an IceWM user for the last 4 yrs, nothing better in my opinion. FWIW, here is my configuration:

    KEYS
    macondo@debian:~$ cat .icewm/keys
    key “F1” aterm
    key “F2” xfe -m
    key “F3” iceweasel
    key “F4” opera
    key “Ctrl+Alt+Print” aterm -e scrot -cd 10
    key “Ctrl+Alt+u” aterm -e weechat-curses
    key “Ctrl+Alt+m” sylpheed

    key “Alt+Ctrl+KP_Divide” aumix -v -5 # lower volume
    key “Alt+Ctrl+KP_Multiply” aumix -v +5 # raise volume

    PREFERENCES
    macondo@debian:~$ cat .icewm/preferences
    OpaqueMove=0
    OpaqueResize=0
    SmartPlacement=1
    MenuMouseTracking=1
    ModSuperIsCtrlAlt=1
    UseMouseWheel=1
    QuickSwitch=1
    AutoReloadMenus=1
    ShowProgramsMenu=1
    ShowThemesMenu=1
    ShowHelp=1
    TerminalCommand=”aterm”
    ShutdownCommand=”sudo halt”
    RebootCommand=”sudo reboot”
    WorkspaceNames=” 1 “, ” 2 ”

    ShowTaskBar=1
    TaskBarAutoHide=1
    TaskBarShowClock=1
    TaskBarShowAPMStatus=0
    TaskBarAtTop=1
    TaskBarShowAPMStatus=0
    TaskBarShowAPMTime=0
    TaskBarShowMailboxStatus=1
    TaskBarShowWindows=1
    TaskBarShowShowDesktopButton=0
    TaskBarShowTray=1
    TaskBarShowWindowIcons=0
    TaskBarShowCPUStatus=0
    TaskBarShowNetStatus=0
    TaskBarShowCollapseButton=0
    TaskBarWorkspacesLeft=1
    TimeFormat=”%a %d.%m.%y %R”
    DateFormat=”%a %d.%m.%y”
    TaskBarShowShowDesktopButton=0
    TaskBarShowWindowListMenu=0
    TaskBarShowMailboxStatus=0
    NormalTaskBarFontName=”-*-sans-medium-r-*-*-*-100-*-*-*-*-*-*”
    NormalTaskBarFontNameXft=”sans-serif:size=10″
    ActiveTaskBarFontName=”-*-sans-r-*-*-*-100-*-*-*-*-*-*”
    ActiveTaskBarFontNameXft=”sans-serif:size=10″

    WINOPTIONS
    macondo@debian:~$ cat .icewm/winoptions
    aterm.startMaximized: 1
    sylpheed.startMaximized: 1
    xchat.startMaximized: 1
    xzgv.startMaximized: 1
    iceweasel.startMaximized: 1
    xfe.startMaximized: 1

    PREFOVERRIDE
    macondo@debian:~$ cat .icewm/prefoverride
    KeyWinClose=”F6″
    KeyWinMaximize=”F12″

    I eliminated the title bar, moved the taskbar to the top and put it in auto-hide, i launch my apps with the keyboard, close apps with F6 and maximize with F12, pretty simple and fast, here’s my .xinitrc to launch icewm when i enter the X system:

    #!/bin/sh

    export LANG=es_ES@euro
    unclutter &
    numlockx &
    icewm

    Here’s a screenshot:

    it gives me a maximum space.

  10. Jude Pierre says:

    My son kept on login me out (Application–>logout–>logout) from time to time. How do I password protect logout using something like gksudo?

    Thanks

  11. Gigi says:

    Cool guide.. Makes my hands literally twitch to go hack icewm…

  12. Doug says:

    The background controller icewmbg will start automatically if you start icewm this way in .xinitrc/.xession …

    if [ -f /usr/bin/icewm-session ]; then
    /usr/bin/icewm-session
    fi

  13. pfyearwood says:

    I have two computers. A new Shuttle with Celeron 1.6 Ghz and 2 Gig RAM with Ubu 8.10 and a 10 y/o Compaq PII 400Mhz and 312 Meg RAM with Ubu 8.04. I put IceWM on both. Got an interesting result. The 8.10 loaded the existing Ubuntu programs into the menu. The 8.04 did not. Found I could run the programs not listed by using the CLI. I found your site with the intent to install the programs onto the menu. Call me lazy but I decided to stick with the CLI for my apps. I do agree that IceWM makes the old Compaq fly using Ubuntu. I appreciate the work you put into your webpage. I have it bookmarked and someday, I’ll attempt some of your tips. I find ICEWM more intuitive than KDE. My heavy hitter is Gnome.
    Thank you and happy new year.

    PFYearwood

  14. Tobias says:

    I just installed Ubuntu’s minimal installation and then IceWM. This was the perfect guide for setting up some of the basic tweaks that I so desperately wanted, thanks a ton!

  15. Jesus Arocho says:

    I installed icewm over a kubuntu install. I’ve been tweaking it for the last two evenings. using a couple of themes I have tried to change the window borders, but to no avail. Changing the border thickness or the status bar height in the default.theme file does not seem to work at all.

    • Ben says:

      You need to edit the individual theme files, not the default theme. All default does is act as the IceWm’s main opener. Lou, er … macondo will probably point out you can also edit the ~/.icewm/winoptions file to override all themes to function according to your tastes or desires. You may also want to check out another guide on the Debian User Forums for more help.

      Apologies, I’m not trying to hijack the OP’s excellent guide here. But Lou/macondo has quite a good IceWm guide as well. It got me hooked on using IceWm. Just passing along help in good faith.

  16. Donald says:

    Hey! This was very helpful! I googled for IceWM window decoration settings and somewhere down the list I could see that you had actual and precise info! I like that!

    I also modify my “Ubuntu-Mint” system because I really want to have fast and personal settings, so I do not care about whether there is an “Ubuntu way”.

    I have been running TWM which I can see that Keith Packard (X11 maintainer) also uses but I also run IceWM on some machines. I like it very much and would like to transfer (I mean re-configure so that I get) the features I have on TWM, among which are fast keyboard functions and many desktop-menu functions and program-starts (easily changeable and easy to reconfigure) and I can see that with just a little work I can achieve all of the same with IceWM (which looks better, of course).

    Thank you very much! /Donald Axel

  17. […] IceWM Guide « Celettu’s Weblog This entry was posted in Uncategorized by Rebecca Clayton. Bookmark the permalink. […]

  18. […] IceWM Guide « Celettu’s Weblog This entry was posted in Uncategorized by Rebecca Clayton. Bookmark the permalink. […]

  19. Rico says:

    xterm neither is too sparse nor lacks a scrollbar. just an old school program that requires to read the man page. or skim it at least. more than 4000 lines prove it is rather elaborate. and it is fast. and it is robust in remote context. a real terminal.

    … you don’t even need to use -sb command line option, or set the appropriate X resources (you may even set style and layout of the scrollbar that way). just use one of the settings menus by pressing ctrl+(left|middle|right)mouseButton.

    the only things xterm “lacks” compared to other terminal applications, is semi-transparent wallpapered background and tabbing. haha. I consider those being the issues of a good window manager, to switch between instances as you like, including window thumbnails and/or active icons (great feature supported by xterm btw) freely configurable key navigation and so on …

Leave a comment