Troubleshooters.Com Presents

Linux Productivity Magazine

Volume 1 Issue 2, September 2002
Using IceWM

Copyright (C) 2002 by Steve Litt. All rights reserved. Materials from guest authors copyrighted by them and licensed for perpetual use to Linux Productivity Magazine. All rights reserved to the copyright holder, except for items specifically marked otherwise (certain free software source code, GNU/GPL, etc.). All material herein provided "As-Is". User assumes all risk and responsibility for any outcome.

See also Troubleshooting Techniques of the Successful Technologist
and Rapid Learning: Secret Weapon of the Successful Technologist
by Steve Litt

[ Troubleshooters.Com | Back Issues ]

Eternal vigilance is the price of liberty. -- Wendel Phillips


Editor's Desk

By Steve Litt
Do you use KDE or Gnome? The question is ubiquitous.

Gnome folks will tell you all day long why their desktop manager is better than KDE. And the KDE folks are equally assertive.

But if you listen carefully, somewhere in the shouting of KDE and Gnome advocates, you'll hear the voices of the few using other window managers. Window managers not sacrificing memory and speed for features. Window managers simple enough to learn in a day. Window managers that can be used on everything from a Pentium 75 to a 2.2 Gig Pentium IV. Window managers optimized by their users to achieve maximum workflow.

Their names are many. Sawfish, Blackbox, Windowmaker, Xfce, twm, Enlightenment and fvwm2. And of course, IceWM. IceWM is light weight, keyboard friendly, Windows reminiscent, configurable, and very, very productive.

So kick back, put your feet up, and read how you can use this efficient window manager. And remember, if you use Linux or other free software, this is your magazine. Enjoy!

Steve Litt is the author of "Troubleshooting Techniques of the Successful Technologist".  Steve can be reached at Steve Litt's email address .

IceWM Overview

By Steve Litt
IceWM is a lightweight window manger for Linux. Equipped with IceWM, my son's 150Mhz Pentium runs quite reasonably. If he ran KDE or Gnome, his box would take 5 to 10 minutes just to boot, and would experience all sorts of slowdowns, crashes and hangs. But he uses IceWM, so performance is reasonable.

My experimental 333 Mhz Celeron with 64MB of RAM couldn't run default Mandrake Linux in GUI mode. It took over 5 minutes to boot, slowed and stopped constantly, and would hang solid within 5 minutes of use. Switching to IceWM from the Mandrake default KDE solved the problem. Sure, it was still slow, but it plodded along and if you worked right you could be productive.

The light weight is handy even on my monster dual Celeron 450 with 512MB of RAM and dual 7200RPM drives. IceWM saves 30-45 seconds when restarting X, and it even improves overall performance slightly. But my dual Celeron can run KDE or Gnome quite well. On that box I run IceWM for reasons beyond performance.

IceWM is keyboard friendly. If you're a touch typist, this is your window manager. The system menu is accessible without a mouse, and easy to navigate with the keyboard. All the right hotkeys are enabled, and just in case you need an additional hotkey, you can assign any arbitrary hotkey to any arbitrary window command or shell command.

Arbitrary keystroke<->shell command assignment skyrockets productivity. At the very least you can use it to pull up your favorite shell without reaching for the mouse. Set a hotkey for any program you use many times per day, or any program you must access instantly (a contact manager comes to mind). Ability to assign arbitrary keystroke<->shell command pairs is relatively rare in the world of Linux window managers.

Being such a keyboard fanatic I went one step further, setting a hotkey for the keystroke-only UMENU menuing program. UMENU isn't any more keyboard friendly than the default IceWM menu, but it's a little easier to configure, it's more likely to survive an upgrade or reinstall, and it 's easier to copy to other computers.


In researching this months magazine I found out that IceWM menus are much easier to configure than I thought. Better yet, the exact same EMDL (Easy Menu Definition Language) I use to configure UMENU can be used with IceWM menus if I write an IceWM specific writer object for my EMDL converter. Therefore, I might switch from UMENU to the IceWM menu system in the future.

The lesson for you is to learn the IceWM configuration language, and DO NOT depend on a tool like Menudrake for menu configuration. You can learn more about IceWM menu configuration in the  Configuring IceWM article.

IceWM has a very Windows like user interface. That's an advantage because Bill Gates spent untold millions researching and observing the way people use computers. Based on that research, Gates created the ultimately productive OS user interface known as the Windows 95 User Interface. It's a great interface, and the fact that hundreds of millions of people know that interface make it a great choice.

Beyond the basic interface, IceWM gives you all sorts of themes so you can work in an environment that's emotionally and ergonomically suited to you. Most of the themes look like mad colorings of a third grader, but ten or so are productive. Several good-looking Windows 95-like themes include the "nice" themes, the "warp 3" theme, the "Win95" theme, and the "William3" theme (not the purple one). At least on Mandrake boxes, IceWM's shipping default theme is a very aesthetic one called "Blue Plastic". I'd call this theme a "knock off" of Windows XP, except I was using it a year before ever seeing XP. Once you've chosen a theme, you can further customize for the desired look and feel.

IceWM is completely compatible with both Gnome and KDE apps, as long as you install the full IceWM, and not "IceWM-Light". Naturally KDE and Gnome apps increase the footprint, but only while you're using them. At other times your footprint retreats that to IceWM.

The Taskbar CPU Monitor

None of the preceding benefits are unique to IceWM. In fact, the day I switched to UMENU, the benefit of keyboard-friendliness became redundant, and lightweight managers Enlightenment, Sawfish, and fvwm2 could have all fit the bill. But they didn't have THE TASKBAR CPU MONITOR.

Remember the handy hourglass in Windows? Sure, it often lied, but it gave you some idea as to whether your last click had been "heard". You could kinda-sorta deduce whether a process was gobbling CPU, or whether you had completely hung the machine. This all assumes the app's programmer had adequately coordinated the hourglass cursor with program events, and often they didn't -- especially with vertical market apps and homegrown programs.

For years Linux user interfaces could not duplicate the hourglass. Now they can, but Linux hourglasses aren't much better than those from Windows.

IceWM has a CPU monitor always visible on the end of its taskbar. So when you click and nothing happens, or you select a menu item and nothing happens, you glance at the CPU monitor. If it shows a sudden uptick of activity, you know the computer "heard" your click or menu selection. Once in awhile there's no uptick, so you investigate.

Having used a Taskbar mounted CPU monitor, I would never go back to the hourglass, and certainly never go back to the total lack of feedback like early Linux user interfaces. As time goes on you get to "read" the CPU monitor signatures of the various programs, and you develop a "sixth sense" for whether everything's functioning properly.

As if the CPU monitor isn't enough, IceWM also gives you a taskbar mounted network monitor, so you can see the level of internet and LAN activity.

The taskbar mounted CPU monitor is the single reason I stick with IceWM now that my use of UMENU makes IceWM's keyboard friendliness irrelevant. But that single reason is a powerful one.

IceWM Isn't Perfect

Everything has flaws. IceWM's most serious flaw is a focus problem. You'll know you have that focus problem if your keystrokes aren't recognized. The workaround is to click the app's taskbar button twice -- once to put it in the background and once to put it back in the foreground. Your keystrokes should now be recognized. This focus problem occurred frequently in Mandrake 8.0, less frequently in Mandrake 8.1, and seldom in Mandrake 8.2. If you use a different distro, you're probably seeing a similar decrease as time goes on. One expects this will be a non-issue in the near future.

IceWM's cut and paste handling isn't as good as with other  window managers such as KDE and Gnome. If that becomes a problem for you, just run a clipboard program such as klipper to add advanced cut and paste functionality.


IceWM is light weight, keyboard friendly, Gnome and KDE compatibile, with a look and feel similar to Windows 95. It gives you the ability to match arbitrary hotkeys with arbitrary shell commands -- a rare and important facility. It's compatible with UMENU or any other menu system you might want to run. If you choose IceWM's menu system, it's keyboard friendly, easy to configure, and it's quite easy to create a front end for the menu file. IceWM's taskbar based CPU monitor yields the feedback you need when clicking many windows and running many processes. Icewm is extremely configurable. These benefits add up to huge productivity on a wide variety of Linux hardware.

IceWM has a couple flaws such as the focus problem (which happens less and less on modern versions), and less than stellar cut and paste, which can be enhanced with a clipboard program such as klipper.

All told, you might find that IceWM contributes mightily to your productivity.

Steve Litt is the author of "Troubleshooting Techniques of the Successful Technologist".  Steve can be reached at Steve Litt's email address .

Installing IceWM

By Steve Litt
Most distributions come with IceWM. When installing your distribution, make sure to go down through the "other desktop managers" or "other window managers" or similarly named tree, and enable IceWM for installation. Be sure to select the full blown IceWM, as opposed to "IceWM Light". The distinction is that full blown IceWM enables Gnome and KDE apps to reveal their full functionality -- a must in today's Linux world.

But what happens if you didn't check IceWM at install time? Simply go back to your installation CD's and install it. On a Redhat (rpm) type system, it's simply the following command:

rpm -Uvh icewm-1.0.9-10mdk.i586.rpm
In addition, make sure install the IceWM configuration tool:
rpm -Uvh icepref-1.1-5mdk.noarch.rpm
Naturally, the preceding commands are an example. You'll need to adjust the filenames to what comes on your Linux installation CD's, name the specific directories containing the file, and do all of this while logged in as root. Be aware also that on some distros (Mandrake is one example), icewm-light*.rpm comes on install CD 1, while the full blown IceWM is relegated to disk 2.
When would I use IceWM Light?
Use IceWM light for "Linux appliances" not needing full Gnome/KDE application functionality, but needing an extremely small footprint. One example that comes to mind is as a window manager for a "chess appliance" to be used in a school. The chess appliance is typically an ancient Pentium 75 with 16MB of RAM. You install the gnuchess engine, xboard, X, and IceWM-light. For man against machine chess, the command is xboard. For man against man it's xboard -ncp.

If you have a Debian based distro, use the Debian upgrade methods to install IceWM. If you have Linux from Scratch or Gentoo, you don't need me to tell you how to install IceWM.

If for some reason the IceWM that came on your your Linux installation CD's doesn't work, you can compile the source. Visit to find the latest source code location.

Steve Litt is the author of Rapid Learning: Secret Weapon of the Successful Technologist . He can be reached at Steve Litt's email address .

Starting IceWM

By Steve Litt
By far the easiest way to start IceWM is to make a command to start it. This assumes, of course, that you boot to runlevel 3 (command line). Here's my command, called ice, that runs IceWM:
xinit /usr/X11R6/bin/icewm -- :0

You could also use the startx command with the same syntax as the xinit command, e.g:

startx /usr/X11R6/bin/icewm -- :0
If you don't like the preceding solutions, or if you boot to runlevel 5 (GUI), then you need to tell the system that your default desktop is IceWM. How you do this varies on a distro by distro basis, and having only Mandrake 8.2 machines on hand, I can tell you only the Mandrake 8.2 way of doing it.

If my Mandrake-centric way doesn't work for you, your alternative is patiently going through script code. Start with the startx command. It calls the following other scripts:

The startx command also contains this telltale command:
xinit $clientargs -- $serverargs -deferglyphs 16
From your knowledge of the xinit command, it's safe to say the $clientargs variable must contain the desktop to be run. The $clientargs variable is obtained (oversimplified explanation) by appending arg1 of startx to the return of either $HOME/.xinitrc  or /etc/X11/xinit/xinitrc, with $HOME/.xinitrc taking priority if it exists. Looking at $HOME/.xinitrc, you might see an empty file or no file at all. If so, look at /etc/X11/xinit/xinitrc. On my box it contains this single command:
exec /etc/X11/Xsession $*
So now you look at /etc/X11/Xsession  and you see the following code, which determines the desktop manager:
# now, we see if xdm/gdm/kdm has asked for a specific environment
if [ $# = 1 ]; then
    # use default DESKTOP from config file
    # users may want to choose their own desktop
    # even when x-session is started by startx command.
    # -- Jaegeum --
    if [ -f $HOME/.desktop ]; then
        . $HOME/.desktop >/dev/null 2>&1
    elif [ -f /etc/sysconfig/desktop ]; then
        . /etc/sysconfig/desktop >/dev/null 2>&1

So whatever gets executed in  HOME/.desktop or /etc/sysconfig/desktop  determines the desktop. But how does it do so? A clue is the line:

It seems to indicate that the $DESKTOP environment variable controls. Indeed, later on in this script we see the following rather cryptic code:
if [ -n "$DESKTOP" ]; then
    case $DESKTOP in
        exec $SSH_AGENT xvt -geometry 80x24-0-0
        exec $SSH_AGENT xterm -geometry 80x24-0-0
        exec $SSH_AGENT /bin/sh -c "$(/usr/sbin/chksession -x=$DESKTOP)"

Looking up the manpage for chksession, we see that chksession -x prints the startup script corresponding to the -x argument value to stdout. Given that the default exec statement above puts that output in a backtick substitute ($()), it becomes clear that the value of the $DESKTOP variable, which was set by either $HOME/.desktop  or /etc/sysconfig/desktop, determines which desktop is used. So if you want to use KDE, your $HOME/.desktop would look like this:

The preceding command simply sets the $DESKTOP environment variable to the string "KDE".

But how do you know the string to use to invoke KDE? For one thing, it's case sensitive. Don't use trial and error. Instead, look at the manpage for chksession and see that the -l option prints out the possible values:
[slitt@mydesk slitt]$ /usr/sbin/chksession -l
BlackBox KDE Gnome Enlightenment WindowMaker XFce IceWM Sawfish default failsafe
[slitt@mydesk slitt]$

Use any one of those, and it will work. The chksession command also has ways to insert, change and delete string<->desktop mappings, but that's beyond the scope of this article. So in this particular case, to force the startx command to start IceWM, you'd have the following $HOME/.desktop :

Remember, case is crucial, so get the right string from the /usr/sbin/chksession -l command.

The Point of this Exercise

Why did I bother writing all this when I already knew how to change the desktop? The answer is simple enough. Different distros implement all this in different ways. Your distro might not use $HOME/.desktop  or /etc/sysconfig/desktop. Knowing how to follow the scripts guarantees you a method of finding out how to change the desktop.

For instance, f you have Debian, or many other distros, the  $HOME/.desktop  and /etc/sysconfig/desktop  files will do nothing. You'll need to figure out how to specify your preferred desktop. To do that you must trace scripts. It's not easy, but it can be done. Start at startx. Or, if you're looking for a way to specify your preferred desktop for runlevel 5 (direct to GUI), trace your boot startup scripts. Given the state of documentation on the subject of desktop managers, there's probably no quicker way.

Specifying Your runlevel 5 Desktop

After reading what I did to trace my preference, I think you understand why I simply created an ice command that runs IceWM, thereby avoiding startx alltogether. Unfortunately, that won't work for runlevel 5. In runlevel 5, you need to trace, and do the right thing. Start with your boot scripts, highest level first. In my case, I start with /etc/inittab, which is the data for everybody's granddaddy, the init command. My /etc/inittab contains the following code near the bottom:
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
# FaxGetty Entry
#t0:23:respawn:/usr/sbin/faxgetty ttyS0

Looking at the /etc/X11/prefdm script, you can see that besides the $DESKTOP environment variable, it's controlled by the $DISPLAYMANAGER environment variable, which is set by the /etc/sysconfig/desktop. This environment variable refers to the program that logs you into X at runlevel 5. Your choices are kdm (provided by the KDE people), gdm (provided by the Gnome people), or xdm (plain old X). So if your /etc/sysconfig/desktop is set to run xdm with a default desktop of IceWM, it would look like this:

How did I know that the $DISPLAYMANAGER environment variable is set in  /etc/sysconfig/desktop? Elementary, my dear Watson -- I traced from the /etc/X11/prefdm script. Specifically, observe the following code in /etc/X11/prefdm script:
# we have to assume that /etc/sysconfig/desktop has two variables, DESKTOP
# and DISPLAYMANAGER because administors may prefer a specific DM regardless
# of desktops.
# DISPLAYMANAGER is referenced by this script, and DESKTOP is referenced
# as system-wide default by /etc/X11/Xsession script only when X-session
# is opened by "startx" command. 
# when DMs open an X-session, they send DESKTOP, which is in this case
# directly selected by users, as a commandline argument of /etc/X11/Xsession.
# actually Xsession script is only able to know by existance of its first
# argument whether it is called by DM or "startx". see the logic
# in /etc/X11/Xsession.
# If DISPLAYMANAGER is not defined, then assume that it is the same as DESKTOP
if [ -f /etc/sysconfig/desktop ]; then
        . /etc/sysconfig/desktop >/dev/null 2>&1
        if [ "$DISPLAYMANAGER" = "GDM" -o "$DISPLAYMANAGER" = "gdm" -o "$DISPLAYMANAGER" = "GNOME" -o "$DISPLAYMANAGER" = "gnome" -o "$DISPLAYMANAGER" = "Gnome" ]; then
        elif [ "$DISPLAYMANAGER" = "KDM" -o "$DISPLAYMANAGER" = "kdm" -o "$DISPLAYMANAGER" = "KDE" -o "$DISPLAYMANAGER" = "kde" ]; then
        elif [ "$DISPLAYMANAGER" = "XDM" -o "$DISPLAYMANAGER" = "xdm" ] ; then

Note that both gdm and kdm allow the user to change his or her desktop manager during the login process, so in those cases you usually needn't change the default user desktop. I say usually because I've seen cases where you couldn't configure the desktop from kdm or gdm, and other cases where when you chose a desktop, your choice didn't persist to the next session.

And of course, if you log in with xdm, you cannot choose your desktop -- it must be configured.


If you're using a Red-Hat derived distro such as Red Hat or Mandrake, chances are you can control your default desktop manager by inserting code, in either the system-wide /etc/sysconfig/desktop or the user specific $HOME/.desktop, in order to change the $DESKTOP environment variable. Naturally the user specific setting takes precidence. If you are using a distro not derived from Red Hat, you'll need to find your own method. Probably the easiest way of finding the way to specify the desktop is to trace scripts, starting with the startx script if you boot to runlevel 3, or starting with /etc/inittab or /etc/rc.d/rc or /etc/rc.d/rc.sysinit, or with whatever script initiates boot in your distro.

Personally, I skip all this hassle, booting to runlevel 3 and then running my ice command, which looks like this:
xinit /usr/X11R6/bin/icewm -- :0

No matter how you run IceWM, it's worth it. Because on machines slow and fast, IceWM boosts your productivity massively.

Steve Litt is the author of Rapid Learning: Secret Weapon of the Successful Technologist . He can be reached at Steve Litt's email address .

Configuring IceWM

By Steve Litt
You can use any one of three basic tools to configure IceWM:
  1. The icepref program
  2. The IceWM Control Center
  3. An editor such as VI
The icepref program is a Python front end for the $HOME/.icewm/preferences file. It comes with most distributions, and you can also get it at various web locations -- do a google search for "icepref". The IceWM Control Center is one of a group of IceWM configuration programs by Vadim A. Kholov, and is available at And of course, you know where to obtain VI.

For most things, icepref is easy and fast. Configuring your taslbar, focus model, desktops, fonts, keybindings (except for shell commands), and general look and feel are all easy with icepref.

At the lowest level, IceWM is configured via various config files in the .icewm directory below your home directory. The files involved are named menu, programs, toolbar, winoptions, keys and preferences, as explained in the following table:
File Purpose Syntax
menu Menu configuration
menu foldername folder {
   prog programname icon command
   menu foldername2 folder {
      prog programname2 icon2 command2
Italics are keywords. See the "About the Menu File" section below!!!
programs "Programs" tree of menu Same syntax as menu file
toolbar Taskbar configuration prog icon command
This file defines the "quickbuttons" appearing to the right of your startbutton.
winoptions What goes where on windows <programname>.<winoption>: 0/1 (false/true)
keys Hotkey<->shell command mappings Key <"combination-of-keys"> <program>
preferences Everything not handled by the others check documentation and shipping file

About the Menu File

The basic syntax is simple enough. In the syntax table above, all italicized words are keywords. So menu, folder, prog and separator are keywords. Keyword prog signifies an executable program, followed by the name to be printed on the menu, the icon filename (path and extension optional, assumes .xpm extension and the master .xpm directory), and the command to execute. Note that the icon file can be any existing .xpm file. You can append the .xpm if you wish. You can also include the full path to the .xpm file if you're using one in a non-standard directory. Your selection of .xpm files is probably in your /usr/share/icons/mini directory. If not, use the locate command to find them.

The menu keyword signifies a menu containing commands, separators and submenus. The menu keyword is followed by the name given the menu, and the word "folder". The word "folder" isn't actually a keyword. It's an icon filename. But I labeled it a keyword because any icon but a folder icon would make little sense for submenu.

The menu file can be uuuuugly if you don't understand the ground rules. It's a shame IceWM doesn't ship with an example menuto help you understand. Basically, the IceWM menu file (and also the programs file) is EXTREMELY space and indentation dependent. It will fail without complaint with the wrong spacing or indentation, and you'll be left thinking you made a syntax error.

In this section I'll give you the tips that worked for me. If your method also works, that's great, but the spacing and indentation tips given in this section have been tested and work.

One picture is worth a thousand words. Right click, then download this sample menu file. Rename it menu, place it in your the $HOME/.icewm directory under your home directory, and watch how it defines your menu in IceWM. Then experiment.

If you've seen EMDL (Easy Menu Definition Language), you'll probably realize that by adding an icon EMDL line (should begin with I:), and a separator EMDL line (should start with L:), you can rewrite the Writer object of the emdl2umenu program to produce an IceWM menu file instead of UMENU menu definition files. That way you can build your IceWM menus with a lightning fast outliner, and convert them to either UMENU or IceWM, or both.


IceWM configuration is easy. The icepref program is easiest for most configuration. For configuring the menu system and hotkey mappings to shell commands it's best to use an editor and the proper files, as explained in this article and its examples.
Steve Litt is the author of " Troubleshooting Techniques of the Successful Technologist".  Steve can be reached at Steve Litt's email address .

Installing an IceWM Theme

By Steve Litt
IceWM is a happy window manager. It comes with about 20 themes, and many more are available on the net. There's a theme creation howto, and it's not all that difficult to create a theme. It's even easier to download and install a theme. I'm using Deus X. Machina's fake95 theme -- a dead ringer for a default Win9x interface. I'll use this theme as a conversation piece at my next installfest.

I just switched to Deus X. Machina's dxm theme. It's built for visibility, and seems to be the flagship of his theme fleet. It's visible alright, but I might switch back to bluePlastic or William3, or maybe I'll stick with dxm, which kind of grows on you.

Anyway, there are a few tricks to installing a new theme, and they're not obvious. Themes usually come bundled in a .tar.gz file that unzip into a director with the name of the theme. That directory has a file called default.theme, and if the theme has subthemes each subtheme is a .theme file. As root, go to your system-wide icewm directory. On Mandrake 8.2 that directory is /usr/X11R6/lib/X11/icewm/. An ls command will reveal a themes subdirectory in the system-wide icewm directory. Navigate to the themes directory. Now, as root, perform the following command (assuming the theme tarball is at /home/myuid/mytheme.tar.gz):

tar xzvf /home/myuid/mytheme.tar.gz
This will create a directory called mytheme, which contains one or more .theme files, several .xpm graphics, and several directories (typically mailbox, ledclock and taskbar). Your next step is to make sure that the files in the tree defined by mytheme all have the right ownership and permissions. As root, from the themes directory, issue the following command:
chown -R root.root mytheme
The preceding command gives root ownership to all the files. Next, navigate to the mytheme directory and fix the permissions with the following commands, assuming contained subdirectories of  mailbox, ledclock and taskbar:
chmod -R 644 *
chmod 755 mailbox, ledclock and taskbar
If your ownerships and permissions are wrong, the theme might not appear on the theme list, or if it does, it might have wrong graphics or missing graphics or other problems.

Now you're ready to activate your new theme. Click the startbutton->themes, and note that the new theme is NOT listed. That's normal. Click a theme other than what you're now using. Changing themes causes IceWM to reregister all the themes. Now click startbutton->themes, and you should see the new theme. Click the new theme, and you should see the new theme.

Setting Your Preferred Theme

You can switch themes on with startbutton->themes, but your choice won't survive a reboot. To permanently set your choice you must either edit your $HOME/.icewm/preferences file, placing a line like Theme="mytheme/default.theme" in the file, or within the icepref program, which edits the $HOME/.icewm/preferences file for you. Naturally, in the configuration line, replace mytheme with the theme of your choice.


If the theme doesn't show up after following the preceding directions, start by verifying that all its files and directories are properly owned and permissioned. This is usually the problem. If it still doesn't show up, back up the .theme file and copy one from a working theme directory. If that works, exploit the differences. Otherwise you'll need to devise your own diagnostic tests.

If the theme doesn't look like it should, troubleshoot. If you have a problem with fonts or colors, look in the .theme file, which defines colors and fonts for all objects. The .theme file also defines which buttons should appear on the titlebar, the titlebar height, and border and corner sizes.

If your problem is with the appearance of buttons, those are controlled by the .xpm files. Pull them all up in Gimp, and see if they look the same as on your screen. If not, find out why.

Building Your Own Theme

The easiest way is to start with a working theme that's close to what you want. Copy its directory to a new name and install it. Now start changing it. You change fonts, which titlebar buttons show up, titlebar size, colors, border and corner sizes in the .theme file (probably default.theme). Change to your preference. Change buttons by changing the .xpm files (without changing their names). You can change them in Gimp. BE SURE NOT TO CHANGE ANY .xpm FILES NOT IN THE TREE FOR THIS THEME, OR YOUR CHANGE WILL BE GLOBAL!!!!!

There's a very nice theme building howto at Read it.

Steve Litt is the author of " Troubleshooting Techniques of the Successful Technologist".  Steve can be reached at Steve Litt's email address .

Lindows Needs Your Help!

By Steve Litt
The following copyright applies only to the article titled "Lindows Needs Your Help" by Steve Litt, originally published in the September 2002 Linux Productivity Magazine at, and does not apply to other articles in that magazine. 

Copyright (c) 2002 by Steve Litt. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, version  Draft v1.0, 8 June 1999 (available at (wordwrapped for readability at The latest version is presently available at 

No options are elected, so this document may be modified and/or commercially distributed, subject to the terms and conditions of the Open Publication License.

Much of this article is adapted from an earlier email post by Steve Litt to the email list of Linux Enthusiasts and Professionals.

The 39 employee firm of Lindows.Com is being sued by the world's biggest software company. Microsoft alleges that Lindows infringes on Microsoft's "Windows" trademark. Unbelievably, Lindows is holding their own, even bringing into question whether "Windows" is a valid trademark! Lindows.Com seems more of a problem for Microsoft than the Justice Department. But Microsoft literally has billions for lawyers, and Lindows.Com is a 39 employee company. Bluntly, Lindows needs our help.

When hassled by Microsoft, the easy thing for Lindows to have done would have been to quietly change their name. But they hung tough, and now the very Windows trademark is in question.

They need our help. As reported in ExtremeTech (,3973,468924,00.asp), Lindows.Com chief executive Michael Robertson is warning people that even though the judicial system blocked Microsoft's request to shut down Lindows.Com, congratulations are premature at this point, as there's a trial looming in 2003 to determine whether the "Windows" trademark is valid, and whether the "Lindows" designation causes confusion in the marketplace. Robertson points out that the legal war with Microsoft is costly and exhausting for his small company.

Robertson contends the word "Windows" was in general usage before Microsoft's trademark, and needs help proving it. If you have any type of paperwork showing this word before Microsoft, send it. If you have memories of pre-Windows times in the computer industry -- CPM, Apple Lisa, UNIX, etc, contact

Microsoft is demanding Lindows.Com's business plan and partner company list as part of discovery. I think we all have an idea what Microsoft will do with Lindows' business plan and partner list, and I doubt it has anything to do with this lawsuit.

Lindows.Com is courageously fighting the Microsoft monster. They're doing my dirty work. They're doing all our dirty work. They're doing what the Justice Department didn't have the spine to do. If you can get help Lindows.Com in any way, please let Lindows know about it. They have a special email address for legal stuff:

Lindows.Com might have only 39 employees, but they have the heart of a giant.

Steve Litt is the author of " Troubleshooting Techniques of the Successful Technologist".  Steve can be reached at Steve Litt's email address .

Life After Windows: Leaving Windows Behind

Life After Windows is a regular Linux Productivity Magazine column, by Steve Litt, bringing you observations and tips subsequent to Troubleshooters.Com's Windows to Linux conversion.
By Steve Litt
When transitioning from Windows to Linux, I recommend that a business convert their email, web browsing, and other easy stuff, but keep a Windows box in the corner for those apps without Windows substitutes. To throw Windows out of the shop cold turkey is just too scary for most would-be converts.

As time goes on, you discover Linux ways to  perform many of those remaining Windows tasks, and that corner Windows box sees less and less action. So when is it time to finally pull the plug?

In an ideal world the answer would be "never". You'd keep the Windows box around forever to access legacy data and interact with folks using Windows-only data formats. That obsoleting box costs you nothing -- you continue using it for the same work you used it for in 1998, and you upgrade no software.

Unfortunately, in the real world, depending on that Windows box could put you and your data in jeopardy. For any one of a number of reasons, some time in the future you will no longer be able to use the Windows 98, Office 97 and other proprietary software you have today. This could happen because new hardware doesn't run the older software, or because your installation disks become lost, stolen or damaged, or because you've forgotten the product key on the back of your Jewel Case (you have placed that number in a data file on your Linux box, haven't you?).

You might think you could just back up your installation disks, but read this out of the license from my Win98 First Edition CD:

After installation of one copy of the SOFTWARE PRODUCT pursuant to this EULA, you may keep the original media on which the SOFTWARE PRODUCT was provided by Microsoft solely for backup or archival purposes. If the original media is required to use the SOFTWARE PRODUCT on the COMPUTER, you may make one copy of the SOFTWARE PRODUCT solely for backup or archival purposes. Except as expressly provided in this EULA, you may not otherwise make copies of the SOFTWARE PRODUCT or the printed materials accompanying the SOFTWARE PRODUCT.

It's not very clear to me. Is the originally purchased Win98 CD the backup copy, or can one make another one because the original media is required to do things like configuration changes? Even if you're allowed to make one additional backup, copying iso9660 CD's to ISO images is fraught with problems. It's best to copy it to an iso, and then record that ISO, AS A FILE, onto another CD. But then you'd need to make an additional copy every time you did an install, because you sure don't want to handle that purchased copy any more than you have to. As a matter of fact, you might want to place the purchased install CD's in a safety deposit box, so you can prove your ownership and protect against theft and fire.

You might think I'm getting picky in the preceding paragraph, but wouldn't it be awful if just as you made that second archival copy, the Software Business Alliance knocked on your door?

Over the long haul, the more you separate yourself from proprietary software, the safer you and your business become.


The preceding few paragraphs discuss creating archival copies of your installation media. That is MUCH different from installing one copy on multiple machines. Unauthorized installation will definitely get you in trouble if you're caught -- no ifs, ands or buts. If someone reports you to the Software Business Alliance it could cost you $150,000.00 per software title.

Moreover, in my opinion, unauthorized installation is immoral. It's stealing the hard work of others. Granted, I believe that Microsoft steals from their customers and therefore I have no ethical problem with your stealing from Microsoft. But the trouble with stealing is it's a slippery slope -- once one steals from Microsoft it's all to easy to steal from others, and the next thing you know, people are copying my $39.00 books instead of paying me, my hard work in making those books goes for waste, and my kids go hungry.

For a good life, install only what you purchased. For an even better life, use Open Source so it's perfectly legal and ethical to take one copy and install it on the machines of 100 of your closest friends.

If you choose to make archival copies of installation media, the best way I know right now is to mount the media, then cat the device to a file:

mount /dev/cdrom /mnt/cdrom
cat /dev/cdrom win98backup.iso
The mounting looks unnecessary, but my experience is that it helps get the right endpoint of the CD.

In the case of Win98, don't forget to keep an image of a bootable floppy with CDROM enabled. Floppies wear out. Also, if you're archiving installation media, remember in the case of upgrade media, archive the entire chain of upgrades, possibly back as far as DOS if necessary. For practical purposes, when installing Win98, temporarily placing a Win95 upgrade CD in the drive will convince the Win98 install program that you own Win95.

Be sure to keep any paperwork you might have. Yes, I know back in the early and mid 1990's nobody thought about proving ownership of what they'd already bought, but do your best. If you don't have licenses, at least have receipts for computers preloaded with Windows. Find whatever paperwork you can.

The Long Term Answer

All this is nice, but the long term answer is to cleanse all proprietary software from your business or household. Sure, it's not easy, but when it's finally done you'll sleep better at night. You must perform three tasks to escape the proprietary world:
  1. Find Open Source program substitutes
  2. Convert data to Open Source readable formats
  3. Find ways to continue to interact with the world at large
#1 is pretty straightforward. For new work, start using Dia, Gimp, Xfig etc instead of Photoshop, Corel Draw, and Paintshop Pro. Use OpenOffice instead of Word for short documents, and LyX instead of Word for booklength docs. Use Mozilla Composer, Quanta, Screem, or Bluefish instead of Frontpage, Dreamweaver, or Netobjects Fusion.

Converting data is tougher. I have 642 .drw files created by the Micrografx Windows Draw vector drawing program over the period 1990-2001. The only program I've found that imports them is Corel Draw, and it does a lousy job. Right now about all I can do with them is use Windows Draw to convert them to .gif, which eliminates all vector objects and makes them difficult to manipulate.

I have some WordPerfect 5.1 files which, when push comes to shove, I can import into Microsoft Word and save as .doc, and then open those in Open Office. Quite a bit will be lost in terms of styles and formatting, but WordPerfect 5.1 is pretty much an orphan. And then there are my Microsoft Office files, which can be imported into Open Office, once again with some loss or change of formatting. For the most part that isn't important, although one file is my book, "Rapid Learning: Secret Weapon of the Successful Technologist". I might make a macro to put tags around its styles, export it to text, and then run a script to convert the tags to LyX code, after which I can clean the book up in LyX.

Then there are various other file formats used throughout the years that I can't read today. For the most part it doesn't matter, because if they were important I would have converted them long ago. The point is that although difficult, data conversion is doable, and except in the case of my Micrografx Windows Draw files, I can export without losing much meta-information.

Then there's the challenge of interacting with the world at large. The day when I can send my customers an OpenOffice document is far in the future. Right now I format outbound docs on my Windows machine in Office97. I'm starting to ship outbound docs as .pdf files. Unless the customer has a need to change my content, the .pdf is ideal because he can simply run it through his printer. The tough part is collaboration. Sure, I can make a document in OpenOffice, convert it to .doc format, and email it to the customer. But when that customer marks it up and sends it back as an Office 2000 document with all sorts of macros, viruses and oddball fonts, there's no way I'll be able to carry on in OpenOffice.

I might be able to specify to my customers that they return everything in Office97 format, but of course customers aren't too pleased when vendors specify the interaction. This is perhaps the greatest challenge to a proprietary free shop.

I've heard OpenOffice will soon support DocBook XML. Perhaps that will contribute to the solution.


Pre-conversion or immediately after a Windows to Linux conversion is not the time to think about a Microsoft-free office. Just like the conversion itself, purging proprietary software from your business and your life is a process, not an event. This process typically starts pre-conversion, when you ban proprietary upgrades. It continues post-conversion, as you find alternatives for the proprietary software you've used so long.

Some alternatives are easier than others. For typical documents, trading OpenOffice for MS Office is trivial. Trading GNUCash for Quicken is a much greater challenge requiring much more work. When contemplating this work, it's important to remember the reasons you're working toward elimination of proprietary software is because eventually your proprietary software will break, either by hardware incompatibility or loss of installation media. At that point you don't want to be tempted by proprietary upgrades, because proprietary upgrades will lock you in and undo years of work.

The three challenges to a proprietary free office are finding replacement programs, converting proprietary formats, and interaction with the world at large. Finding replacement programs is easy and happens naturally. Converting proprietary formats is usually easy, but certain formats require manual file by file export by the proprietary program, and such exports often lose metadata (styles, vector objects and the like).

Perhaps the greatest challenge is interaction with the world at large. This is best accomplished by insisting on portable formats with all but your most important business associates, using .pdf where you can, and trying to find a common ground with the rest.

A proprietary-free office isn't easy, but in the long run it's worth it. You'll never again type in a key or get an authorization during an install. You'll never again be tempted to break the law to save a few bucks. You'll always know you're legal. Your days of losing sleep wondering whether your data formats will be obsolete, or will contribute to vendor lock in, will be gone. And best of all, when the Software Business Alliance runs their ads promising draconian punishments for unauthorized installation, you'll know for sure that doesn't apply to you.

Steve Litt is the author of the course on the Universal Troubleshooting Process.  He can be reached at Steve Litt's email address .

Letters to the Editor

All letters become the property of the publisher (Steve Litt), and may be edited for clarity or brevity. We especially welcome additions, clarifications, corrections or flames from vendors whose products have been reviewed in this magazine. We reserve the right to not publish letters we deem in bad taste (bad language, obscenity, hate, lewd, violence, etc.).
Submit letters to the editor to Steve Litt's email address, and be sure the subject reads "Letter to the Editor". We regret that we cannot return your letter, so please make a copy of it for future reference.

How to Submit an Article

We anticipate two to five articles per issue, with issues coming out monthly. We look for articles that pertain to the Linux or Open Source. This can be done as an essay, with humor, with a case study, or some other literary device. A Troubleshooting poem would be nice. Submissions may mention a specific product, but must be useful without the purchase of that product. Content must greatly overpower advertising. Submissions should be between 250 and 2000 words long.

Any article submitted to Linux Productivity Magazine must be licensed with the Open Publication License, which you can view at At your option you may elect the option to prohibit substantive modifications. However, in order to publish your article in Linux Productivity Magazine, you must decline the option to prohibit commercial use, because Linux Productivity Magazine is a commercial publication.

Obviously, you must be the copyright holder and must be legally able to so license the article. We do not currently pay for articles.

Troubleshooters.Com reserves the right to edit any submission for clarity or brevity, within the scope of the Open Publication License. If you elect to prohibit substantive modifications, we may elect to place editors notes outside of your material, or reject the submission, or send it back for modification. Any published article will include a two sentence description of the author, a hypertext link to his or her email, and a phone number if desired. Upon request, we will include a hypertext link, at the end of the magazine issue, to the author's website, providing that website meets the Troubleshooters.Com criteria for links and that the author's website first links to Troubleshooters.Com. Authors: please understand we can't place hyperlinks inside articles. If we did, only the first article would be read, and we can't place every article first.

Submissions should be emailed to Steve Litt's email address, with subject line Article Submission. The first paragraph of your message should read as follows (unless other arrangements are previously made in writing):

Copyright (c) 2001 by <your name>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, version  Draft v1.0, 8 June 1999 (Available at (wordwrapped for readability at The latest version is presently available at

Open Publication License Option A [ is | is not] elected, so this document [may | may not] be modified. Option B is not elected, so this material may be published for commercial purposes.

After that paragraph, write the title, text of the article, and a two sentence description of the author.

Why not Draft v1.0, 8 June 1999 OR LATER

The Open Publication License recommends using the word "or later" to describe the version of the license. That is unacceptable for Troubleshooting Professional Magazine because we do not know the provisions of that newer version, so it makes no sense to commit to it. We all hope later versions will be better, but there's always a chance that leadership will change. We cannot take the chance that the disclaimer of warranty will be dropped in a later version.


All trademarks are the property of their respective owners. Troubleshooters.Com (R) is a registered trademark of Steve Litt.

URLs Mentioned in this Issue