Icon themes are conceptually quite simple. Like dialogs, almost all system icons are binary resources. Resources can be replaced without any need to modify the programs that use them, and the means for doing this are provided already.
Icon themes work by replacing specific icon resources in the following DLLs:
PMWP.DLL | IBM DLL containing the 'core' icons for the OS/2 desktop. | |
ECSWP.DLL | Additional eCS-specific DLL containing icons for most remaining desktop objects. | |
WPINET.DLL | IBM DLL containing icons for Internet object classes. | |
MMPTMRI.DLL | IBM DLL containing icons for Multimedia object classes. | |
CWMM.DLL | Additional DLL containing Multimedia icons if the CW-MM classes are installed. |
Creating an icon theme involves the following basic steps:
These steps are described below.
(These instructions require at least version 1.04 of the Icon Themes applet, running under eCS version 1.1 or later.)
The theme identifier is a short (one-word) string which will be used as the filenames (minus extension) of the theme resource files. The identifier must be unique for each theme, may contain only letters and/or digits, and should be a maximum of eight characters in length.
This identifier will be used throughout the remaining steps.
Creating the icons is generally the most time-intensive part of designing a new icon theme. There are 213 icons in an icon theme, all of which are required.
The icons must be in OS/2 Icon format. An OS/2 Icon consists of a number of images (called 'devices'), each of which may have its own dimensions and colour depth. Each icon should have at least one device at each of the following dimensions: 16x16, 20x20, 32x32 and 40x40. You can also create icons of different colour depths at each size; the WPS will automatically use the icon which best matches the current video mode. (For instance, if an icon has both 16- and 256-colour devices, the 16-colour version would be displayed in when the screen is in a 16-colour mode, and the 256-colour version would be displayed instead at higher colour resolutions.
Each of the five system DLLs modified by the Icon Themes applet has its own set of icons. These are described below, along with pictures showing the default 'eComStation' theme.
You should use the filenames shown in the table for each icon. The provided resource templates assume that these specific filenames will be used. (The numbers refer to the resource ID within the DLL; not all available IDs are defined, hence the occasional gap in the numbering.)
Icons marked as UNKNOWN have functions which I have been unable to identify; they do not seem to be used on the desktop. In general, you can just copy the icons from the 'default' directory for these items.
Sample | Filename | Function | Sample | Filename | Function | |
![]() | 001.ICO | DOS prompt (full screen) | ![]() | 056.ICO | Desktop | |
![]() | 002.ICO | CMD prompt (window) | ![]() | 057.ICO | Found objects folder (closed) | |
![]() | 003.ICO | Default PM program 1 | ![]() | 058.ICO | Minimized window viewer (closed) | |
![]() | 004.ICO | CMD prompt (full screen) | ![]() | 059.ICO | System Setup folder (closed) | |
![]() | 006.ICO | Default folder (open) | ![]() | 060.ICO | Information folder (closed) | |
![]() | 008.ICO | Startup folder (open) | ![]() | 061.ICO | Local System (closed) | |
![]() | 009.ICO | Local Network folder (open) | ![]() | 062.ICO | LAN resource browser (closed) | |
![]() | 010.ICO | Templates folder (open) | ![]() | 063.ICO | Remote LAN server or peer | |
![]() | 012.ICO | Found objects folder (open) | ![]() | 064.ICO | Remote LAN folder (closed) | |
![]() | 013.ICO | Hard drive volume | ![]() | 065.ICO | Remote LAN printer | |
![]() | 015.ICO | Setup folder (open) | ![]() | 066.ICO | LAN resource browser (disconnected) | |
![]() | 016.ICO | Remote LAN drive | ![]() | 067.ICO | Remote LAN server or peer (disconnected) | |
![]() | 017.ICO | VDISK RAM disk | ![]() | 068.ICO | Remote LAN folder (disconnected) | |
![]() | 018.ICO | Tape drive | ![]() | 069.ICO | Remote LAN printer (disconnected) | |
![]() | 019.ICO | CD/DVD drive | ![]() | 070.ICO | Remote LAN drive (disconnected) | |
![]() | 020.ICO | Template object | ![]() | 071.ICO | Drag & drop objects | |
![]() | 022.ICO | Default WPS class icon | ![]() | 072.ICO | Win16 session (window) | |
![]() | 023.ICO | LAN resource browser (open) | ![]() | 073.ICO | Novell NetWare folder | |
![]() | 024.ICO | Default file | ![]() | 074.ICO | LaunchPad (a.k.a. Toolbar) | |
![]() | 025.ICO | Default PM program 2 | ![]() | 075.ICO | UNKNOWN | |
![]() | 026.ICO | Default folder (closed) | ![]() | 076.ICO | Removeable media drive 1 | |
![]() | 027.ICO | Drives folder (closed) | ![]() | 077.ICO | Window List (LaunchPad) | |
![]() | 028.ICO | Shredder | ![]() | 078.ICO | Lockup (LaunchPad/eCenter) | |
![]() | 029.ICO | Startup folder (closed) | ![]() | 079.ICO | Find Objects (LaunchPad/eCenter) | |
![]() | 032.ICO | Floppy drive | ![]() | 080.ICO | Shutdown (LaunchPad/eCenter) | |
![]() | 033.ICO | Network folder (closed) | ![]() | 081.ICO | UNKNOWN | |
![]() | 034.ICO | Remote LAN folder (open) | ![]() | 082.ICO | Help Center (closed) | |
![]() | 035.ICO | Local System (open) | ![]() | 083.ICO | Help Center (open) | |
![]() | 037.ICO | Command prompts folder (closed) | ![]() | 084.ICO | UNKNOWN | |
![]() | 038.ICO | Command prompts folder (open) | ![]() | 085.ICO | UNKNOWN | |
![]() | 039.ICO | UNKNOWN | ![]() | 086.ICO | Bitmap file | |
![]() | 040.ICO | UNKNOWN | ![]() | 087.ICO | Connections folder (deprecated) | |
![]() | 041.ICO | UNKNOWN | ![]() | 088.ICO | Games folder (closed) | |
![]() | 042.ICO | UNKNOWN | ![]() | 089.ICO | Games folder (open) | |
![]() | 043.ICO | UNKNOWN | ![]() | 090.ICO | Install/Remove folder (closed) | |
![]() | 044.ICO | Broken shadow | ![]() | 091.ICO | Install/Remove folder (open) | |
![]() | 046.ICO | DOS prompt (window) | ![]() | 092.ICO | Programs folder (closed) | |
![]() | 047.ICO | DOS prompt from floppy drive | ![]() | 093.ICO | Printers folder (closed) | |
![]() | 048.ICO | Templates folder (closed) | ![]() | 094.ICO | Printers folder (open) | |
![]() | 049.ICO | DOS dual-boot | ![]() | 095.ICO | Removeable media drive 2 | |
![]() | 052.ICO | Win16 session (full screen) | ![]() | 2146.ICO | Lockup (on lockup screen) | |
![]() | 053.ICO | OS/2 v1.x program group | ![]() | 2147.ICO | Lockup (on lockup screen) |
In addition to eCS-specific icons, this library also contains updated versions of several icons which under OS/2 were set from standalone icon files (such as the Peer and Multimedia folders). Not all of the icons in this library are used in the current version of eCS; some of them are for backwards compatibility purposes, and others are for potential use in the future.
Sample | Filename | Function | Sample | Filename | Function | |
![]() | 100.ICO | Information folder (open) | ![]() | 125.ICO | Appearance folder (closed) | |
![]() | 101.ICO | Programs folder (open) | ![]() | 126.ICO | Appearance folder (open) | |
![]() | 102.ICO | Minimized Window Viewer (open) | ![]() | 127.ICO | Logical Volume Manager GUI | |
![]() | 103.ICO | Internet folder (open) | ![]() | 128.ICO | Refresh Removeable Media | |
![]() | 104.ICO | Upload folder (open) | ![]() | 130.ICO | Network config folder (closed) | |
![]() | 105.ICO | Upload folder (closed) | ![]() | 131.ICO | Network config folder (open) | |
![]() | 106.ICO | Java folder (open) | ![]() | 132.ICO | Network Interfaces folder (closed) | |
![]() | 107.ICO | Java folder (closed) | ![]() | 133.ICO | Network Interfaces folder (open) | |
![]() | 108.ICO | Download folder (open) | ![]() | 134.ICO | Network Interface object | |
![]() | 109.ICO | Download folder (closed) | ![]() | 135.ICO | Network Protocols folder (closed) | |
![]() | 110.ICO | Personal/data folder (closed) | ![]() | 136.ICO | Network Protocols folder (open) | |
![]() | 111.ICO | Personal/data folder (open) | ![]() | 137.ICO | Firewall folder (closed) | |
![]() | 112.ICO | Drives folder (open) | ![]() | 138.ICO | Firewall folder (open) | |
![]() | 113.ICO | TCP/IP folder (closed) | ![]() | 140.ICO | Font folder (closed) | |
![]() | 114.ICO | TCP/IP folder (open) | ![]() | 141.ICO | Font folder (open) | |
![]() | 115.ICO | Internet Tools folder (open) | ![]() | 200.ICO | Multimedia folder (closed) | |
![]() | 116.ICO | Internet Tools folder (closed) | ![]() | 201.ICO | Multimedia folder (open) | |
![]() | 117.ICO | Dialup folder (closed) | ![]() | 202.ICO | Sound folder (closed) | |
![]() | 118.ICO | Dialup folder (open) | ![]() | 203.ICO | Sound folder (open) | |
![]() | 119.ICO | Internet folder (closed) | ![]() | 204.ICO | Movies folder (closed) | |
![]() | 120.ICO | LAN Server/Peer folder (closed) | ![]() | 205.ICO | Movies folder (open) | |
![]() | 121.ICO | LAN Server/Peer folder (open) | ![]() | 206.ICO | VoiceType folder (closed) | |
![]() | 122.ICO | UPM folder (closed) | ![]() | 207.ICO | VoiceType folder (open) | |
![]() | 123.ICO | UPM folder (open) |
The default file and folder icons are duplicates of the same icons from PMWP; you can just copy them.
Sample | Filename | Function | Sample | Filename | Function | |
![]() | I029.ICO | URL object | ![]() | I034.ICO | Default file | |
![]() | I030.ICO | URL folder (closed) | ![]() | I035.ICO | Default folder (closed) | |
![]() | I031.ICO | URL folder (open) | ![]() | I036.ICO | Default folder (open) | |
![]() | I032.ICO | FTP folder object 1 | ![]() | I037.ICO | Internet Templates folder (closed) | |
![]() | I033.ICO | FTP folder object 2 |
Many of these icons are duplicated several times. For instance, M34000.ICO, M48002.ICO, and M50003.ICO are identical. You can simply copy the file as needed.
Sample | Filename | Function | Sample | Filename | Function | |
![]() | M32200.ICO | Synthesized (MIDI) audio file | ![]() | M48019.ICO | Digital audio file: *._AU | |
![]() | M34000.ICO | Image file (generic) | ![]() | M48020.ICO | Digital audio file: *.AIF | |
![]() | M36000.ICO | Video file (generic) | ![]() | M48021.ICO | Digital audio file: *.IFF | |
![]() | M38961.ICO | CD device | ![]() | M48022.ICO | Digital audio file: *.SND | |
![]() | M40000.ICO | Digital audio file (generic) | ![]() | M48023.ICO | Video file: *.AVI | |
![]() | M42030.ICO | Default file | ![]() | M48024.ICO | Video file: *.FLI | |
![]() | M48001.ICO | Digital audio file (generic) | ![]() | M48025.ICO | Video file: *.MPG | |
![]() | M48002.ICO | Image file (generic) | ![]() | M48026.ICO | Image file: *.BMP | |
![]() | M48003.ICO | Video file (generic) | ![]() | M48031.ICO | Image file: *.JPG | |
![]() | M48004.ICO | Synthesized (MIDI) audio file | ![]() | M48032.ICO | Digital audio file: *.WAV | |
![]() | M48005.ICO | Image file: *.TGA | ![]() | M48033.ICO | Light Table folder (closed) | |
![]() | M48006.ICO | Image file: *.TIF | ![]() | M48034.ICO | Light Table folder (open) | |
![]() | M48007.ICO | Image file: *.GIF | ![]() | M48035.ICO | Broken shadow | |
![]() | M48008.ICO | Image file: *.PCX | ![]() | M48038.ICO | Digital audio file: *.AU | |
![]() | M48009.ICO | Image file: *.PCD | ![]() | M48039.ICO | Video file: *.MOV | |
![]() | M48011.ICO | Image file: *.AVC | ![]() | M50000.ICO | Default file | |
![]() | M48012.ICO | Image file: *._IM | ![]() | M50001.ICO | Digital audio file (generic) | |
![]() | M48013.ICO | Image file: *.DIB | ![]() | M50002.ICO | Video file (generic) | |
![]() | M48017.ICO | Digital audio file: *.VOC | ![]() | M50003.ICO | Image file (generic) | |
![]() | M48018.ICO | Digital audio file: *.MOD | ![]() | M50004.ICO | Synthesized (MIDI) audio file |
CWMM.DLL is (approximately speaking) an alternative to MMPTMRI.DLL on some systems. The two files therefore have many icons in common. Most of these icons (CWMM.DLL) can be copied from those in MMPTMRI.DLL, above.
Sample | Filename | Function | Sample | Filename | Function | |
![]() | C02.ICO | Digital audio file (generic) | ![]() | C17.ICO | Video file: *.AVI | |
![]() | C03.ICO | Digital audio file: *.MP3 | ![]() | C18.ICO | Image file (generic) | |
![]() | C04.ICO | Digital audio file: *.OGG | ![]() | C19.ICO | Image file: *.AVC | |
![]() | C05.ICO | Digital audio file: *.WAV | ![]() | C20.ICO | Image file: *.DIB | |
![]() | C06.ICO | Digital audio file: *.AIF | ![]() | C21.ICO | Image file: *.GIF | |
![]() | C07.ICO | Digital audio file: *.AU | ![]() | C22.ICO | Image file: *.JPG | |
![]() | C08.ICO | Digital audio file: *._AU | ![]() | C23.ICO | Image file: *.PCD | |
![]() | C09.ICO | Digital audio file: *.IFF | ![]() | C24.ICO | Image file: *.PCX | |
![]() | C10.ICO | Digital audio file: *.SND | ![]() | C25.ICO | Image file: *.TGA | |
![]() | C11.ICO | Digital audio file: *.VOC | ![]() | C26.ICO | Image file: *.TIF | |
![]() | C12.ICO | Synthesized (MIDI) audio file | ![]() | C27.ICO | Image file: *._IM | |
![]() | C13.ICO | Video file (generic) | ![]() | C28.ICO | Image file: *.BMP | |
![]() | C14.ICO | Video file: *.MPG | ![]() | C29.ICO | Light Table folder (closed) | |
![]() | C15.ICO | Video file: *.MOV | ![]() | C30.ICO | Light Table folder (open) | |
![]() | C16.ICO | Video file: *.FLI |
The icons for each DLL must be compiled into separate binary resource files. These instructions require you to have the IBM Resource Compiler (RC.EXE) installed.
PMWP.RC ECSWP.RC WPINET.RC MMPTMRI.RC CWMM.RC
rc -r pmwp.rc identifier.pmr rc -r ecswp.rc identifier.ecr rc -r wpinet.rc identifier.inr rc -r mmptmri.rc identifier.mmr rc -r cwmm.rc identifier.cmrwhere identifier is your theme identifier.
You should now have five resource files, named as follows:
identifier.PMR (Icons for PMWP.DLL) identifier.ECR (Icons for ECSWP.DLL) identifier.INR (Icons for WPINET.DLL) identifier.MMR (Icons for MMPTMRI.DLL) identifier.CMR (Icons for CWMM.DLL)
Every theme may provide a 'preview' DLL which contains the ten icons shown in the Preview display of the Icon Themes applet. This is optional; if such a DLL does not exist, the Icon Themes applet can also use the icon files themselves to populate the preview display (see below).
The command file DLL_ICC.CMD automates the creation of this DLL for you. It requires that you have the IBM C Compiler (ICC.EXE) installed on your system (and on your PATH). You may use another compiler to create this DLL, but you will have to perform the necessary actions yourself. Consult your compiler's documentation.
The DLL_ICC.CMD REXX script takes two arguments, the theme identifier and the path to the directory containing the icon files. The directory name may be omitted if it is located under the current directory and has the same name as the theme identifier.
To install the new theme into the Icon Themes applet, do the following:
identifier.PMR identifier.ECR identifier.INR identifier.MMR identifier.CMR
002.ICO 003.ICO 013.ICO 024.ICO 026.ICO 033.ICO 048.ICO 061.ICO 092.ICO 119.ICO
identifier;descriptionwhere identifier is your theme identifier, and description is a one-sentence description of the theme (which will appear in the Icon Themes applet).
Icon Themes applet and this toolkit © 2002 - 2003 Alex Taylor.
Original 'eComStation' icons designed by Alessandro Cantatore. Additional icons by Alex Taylor. These icons are reserved for use with the eComStation operating system.
Original 'OS/2' icons are presumably property of IBM Corp.
Other icon sets may have their own terms and copyrights.
This toolkit last updated on 15 October 2003.