Pardon My Icons for Unix Requirements ------------ This package contains Jeffrey Zeldman's famous Pardon My Icons (http://www.zeldman.com) converted to .xpm (X Pixel Map) format. As such, they work with the fvwm window manager for X11. They probably work with other window managers, too, but I haven't tried any. It's pretty easy to make these icons stand for whatever you want by modifying your .fvwmrc / .fvwm2rc. Also included are some scripts for assigning the icons randomly to whatever windows you are using. They currently require the GNU tools bash, GNU awk, and GNU make, though with minor modification, they should work on any unix-like system. They also require certain features of fvwm, which may be present in older versions but with a different syntax. I have only tested the randomization scripts with fvwm 2.0.46. Unpacking --------- Download zeldman-icons.tar.gz and unpack with gunzip zeldman-icons.tar.gz tar xf zeldman-icons.tar or, if you have GNU tar (try `tar --version'), tar zxf zeldman-icons.tar.gz This produces a directory called zeldman-icons/ in the current directory. The examples below assume you've done this in your $HOME directory. Basic FVWM configuration ------------------------ Note: I've only tested this with fvwm2. Pixmap support is a compile-time option for fvwm2, so it's possible your copy doesn't support this. If not, it will probably be obvious. Make sure your .fvwm2rc has something like PixmapPath $HOME/zeldman-icons telling fvwm2 where to find the icons. (Note that the actual icons are in the icons/ subdirectory.) In order to have the reduced-size buttons appear on each of your windows, you should include a line like ButtonStyle 1 MiniIcon changing the number as necessary to put the miniicon where you want it. If you use the FvwmIconMan icon manager, you should also try *FvwmIconMan*drawicons true and, if necessary, something like *FvwmIconMan*buttongeometry 100x20 to make sure that the miniicons are fully visible in the manager. FVWM Icon Assignment -------------------- Approach #1. Assign icons to windows yourself. This approach just involves adding a line to your .fvwm2rc for each kind of window. Here are some examples: Style "*" Icon icons/ecila.xpm,MiniIcon miniicons/ecila.xpm Style "xemacs" Icon icons/profile.xpm,MiniIcon miniicons/profile.xpm Style "Netscape" Icon icons/pup.xpm,MiniIcon miniicons/pup.xpm Style "XMathematica" Icon icons/goboy.xpm,MiniIcon miniicons/goboy.xpm Style "hairytorus" Icon icons/abe.xpm,MiniIcon miniicons/abe.xpm Style "funston" Icon icons/93kr73.xpm,MiniIcon miniicons/93kr73.xpm Style "zerbina" Icon icons/scream1.xpm,MiniIcon miniicons/scream1.xpm Note that the "*" style gives default values, and that it should be listed first. Approach #2. Assign the icons randomly. I don't know a way to assign the icons *dynamically*, that is, while fvwm2 is running. But scripts are included for assisting you to make random assignments. You make the assignments with an awk script, then start or restart fvwm2 to make the assignments take effect. The scripts have only been tested on Linux with bash and GNU awk. Step 1: Make a list of window identifiers. An example list is given in the file `wid'. What are these identifiers? Basically, they're initial substrings of either the name, class, or resource of a window. (The FvwmIdent module can let you point at a window and will tell you the various names of the window. I'm sure there are other ways to get this information, too.) If the first entry in your `wid' file is an asterisk `*', then an icon will be assigned the job of default icon for unlisted windows. A quick way to generate a `wid' file is to start up one copy of everything you usually run, then type: (echo "*"; xlsclients -l | awk '($1=="Name:"){print $2}' | sort -u) > wid Step 2: Run the randomizer script by typing `make' or, if that doesn't work, sh -e shuffle wid > iconstyle.fvwm2 Step 3: Put something in your .fvwm2rc like Read $HOME/zeldman-icons/iconstyle.fvwm2 Also, on one of your menus, add a line like + "Shuffle Zeldman icons" Function shuffleZeldmanIcons and include a function definition like AddToFunc shuffleZeldmanIcons "I" Exec make -C $HOME/zeldman-icons + "I" Read icons/iconstyle.fvwm2 + "I" Recapture The script just considers all files in the icons/ subdirectory, so you can actually put whatever .xpm files you like in there, or delete the ones that you don't like. If you arrive at a particularly good bunch of icons and you want to re-use them after changing the `wid' file, you can save the seed number printed at the beginning of the output file `iconstyle.fvwm2', and run (for instance) sh -e shuffle wid 930766927 > iconstyle.fvwm2 which will assign the same sequence of icons, whatever the contents of `wid'. Bugs ---- If you have problems with getting the icons on the screen under fvwm2, or you have trouble with the randomization stuff under Linux, let me know at . Please start by reading the fvwm2 man page to make sure your configuration makes sense, upgrading to a newer version if necessary (I use 2.0.46), and verifying that the XPM support was built into your copy of fvwm2. On the other hand, if you have problems with a window manager other than fvwm2, on a system other than Linux, please *don't* email me with your problem because I probably won't be able to help. In these cases, you can probably get all the help you need from the appropriate newsgroup for your window manager. Then, fix the problem and let me know how what you did! Extensions ---------- If you extend this stuff, for instance * making it work with other window managers (I don't even know if they all use the xpm format, for instance) * making the scripts work under standard UNIX tools sh/awk/make instead of the special GNU tools bash/gawk/gmake * coming up with a way of dynamically assigning random icons to new windows (this may require a smarter window manager, like scwm) please send me email at and I'll include directions here. Tim Culver