workman 1 "12/30/92"

Table of contents


workman - play audio compact discs on a SCSI CD player


workman [ generic-tool-arguments ] [ -bdoeXnh ] [ -p ] [ -c ] [ -s ] [ -l ] [ -V ]


workman is a graphical tool for playing audio compact discs on a SunCD drive or other compatible unit. It has most of the features available on standalone CD players, such as a shuffle mode, programmable playlists, and elapsed/remaining timers. But it also has extra features, foremost of which is the ability to store information about CDs in a database, then automatically extract that information when the CD is inserted later. Workman stores the artist's name, the disc title, the names of individual tracks, and even remembers which tracks you don't want to hear! All in an easy-to-use, attractive OPEN LOOK graphical interface.

Its only weakness, in fact, is that this is the end of the Description section of the manpage.


WorkMan should accept the generic tool arguments described in xview(1). The exception is the -Ws argument, which can cause problems such as the CD Info/About/Goodies buttons being whited out. Note that olwm's "Save Workspace" menu option puts a -Ws argument in your .openwin-init file; you should edit it and remove -Ws and the two numbers following it.
Set WorkMan's position on the screen. Do not try to use -geometry to resize the window; it won't work and can mess up the display. If the Y coordinate is negative (e.g. -geometry +100-50) the window will be positioned that many pixels from the bottom of the screen and will grow and shrink from the top, rather than the bottom; this prevents the controls from moving around when multiline track titles are displayed, and is frequently used with the -l option. Note that the window manager will add its title bar and push the window down. Use something like -geometry to position the window at the bottom of the screen. 38 is the height of the olwm border; use other values for other window managers.
Don't display any title information in the main window. This results in a smaller main window. The title information can still be seen and edited using the CD Info popup. If -d is used twice, title information will be displayed only if it is available; the default is to display "Unknown CD name", "Unknown artist", and "Unknown track name" when the corresponding information is unavailable.
Display a summary of options.
Toggle the use of Dismiss buttons on all popups and a Quit button on the main window. Useful for users of window managers other than olwm. On Sun and DEC systems, Dismiss buttons are missing by default; on HP systems, they are shown by default.
Use a device other than the default (/dev/rdsk/c0t6d0s2 or /vol/dev/aliases/cdrom0 under Solaris 2, /dev/sr0 under Solaris 1, /dev/rsr0 under Linux, and /dev/rscsi under HPUX). This is useful if the CD drive is on a second SCSI controller, or more than one drive is present on the system.
Send a command to a running workman process. Valid values are stop, play, pause, back, forward, and eject. Only the first character is examined, except in the case of play and pause (which require at least two characters). mute and go are aliases for pause and play, respectively.
This option prevents the Solaris 2.1 version of workman from spawning a background job to keep the CD device open. There is a bug in Solaris 2.1 that causes the CD player to stop when its device is opened, unless some other process on the system already has the device open. When this option is specified, the CD will stop playing if workman is exited then restarted. When the background job is present (-o is absent) the eject button on the CD player does not work even after quitting from workman. The background job isn't started under Solaris 2.2 if the volume manager is running.
Reserve some lines for track titles in the main window. If n is a positive number, that many lines of track title will always be displayed, even if some are blank. If n is zero, the main window will grow and shrink to accomodate multiline titles. If n is negative (the default), the main window will grow when necessary, but will never shrink, even when a shorter title is subsequently displayed.
Check once for the presence of a CD at startup. If no CD is present, wait for the user to select the square (stop) icon from the main window. The default is to check for a CD every 5 seconds; on some SunOS versions, the CD-ROM driver prints a message to the console every time the tool checks for a CD. After a CD has been detected once, workman will revert to its default behavior (since the driver message only occurs if workman has not yet found a CD in the drive.) Specify -e more than once to disable checking for CD insertion permanently.
Exit automatically when the CD is ejected.
Write the program's process ID to a different file. By default, the PID is written to "/tmp/.wm_pid" to allow signals to be sent more easily (see the SIGNALS section below.)
No file locking. On some systems, workman's use of file locking is a significant performance hit (and on older systems, file locking didn't work too well; on those machines, workman can freeze up when it tries to lock the database file.) Use of this option is not recommended when several people share a database via NFS; if two people save CD entries to the database at the same time and one of them is not using file locking, one or both of the new entries may be erased or stored incorrectly.

Apply Sun patch 100075 to your system (and your fileserver, if you're NFS-mounting the database files) and you probably won't need to use the -n flag at all.

Set minimum volume. CD-ROM drives made by different manufacturers have different volume-setting methods. On the Sun and DEC CD-ROM drives, the volume settings range from 0 to 255, but only values of 128 or greater produce any sound. On some third-party drives, though, the full range of volumes is available, in which case running with -V is desirable. The default is 128.


The location of the personal preferences file. This file contains information such as the default volumes of CDs, playlists, and the numbers of tracks to avoid playing. It is usually not shared among several users of workman, since it does not contain any information about the CDs themselves.
Specifies the location of the CD database file or files. Several files may be specified by separating them with colons a la the PATH shell variable. For example, setting WORKMANDB to "$HOME/.workmandb:/home/user2/.workmandb" would cause workman to look first in $HOME/.workmandb, then in /home/user2/.workmandb. New entries are saved to the first database in the list; modified entries are saved to the database in which they were originally found, or the first database if that one is not writable.


WorkMan reacts to the following signals:
Jump to the next track.
Jump to the previous track.
Pause the CD (if it's playing).
Play the CD (if it's paused or stopped).
Stop the CD if it's playing.
Eject the CD.

These signals, in combination with the pidfile (see the -p option description above), allow simple control of the CD player from programs or scripts, and are used by the -s option.


Most controls have spot help; hit the Help key (F1 on type-3 keyboards) over a control to find out what it does. The following is a quick rundown of the controls; for the most part, they're pretty self-explanatory.

The main window

The main window contains the basic display and most commonly-used controls. Moving from top to bottom and reading left to right, you'll see:

The artist's name.

The name of the CD or the title of the currently-playing piece of music, if it takes up more than one track.

The title of the current track. This may occupy more than one row on the screen.

The track selection buttons. Click on these buttons to select a starting track, or to change to a new track if the CD is playing.

The track-position slider. This is updated once every 5 seconds while the CD is playing; you can also use it as a sort of jog dial to move around in a track.

The volume slider. Up is louder; down is quiet.

The main controls (for lack of a better term.) The buttons on the top row move to the previous track, start playing, and move to the next track, respectively. The bottom buttons pause, stop, or eject the CD. When the CD is paused, playing may be resumed by clicking on either the pause button or the play button.

The "stop mode" selector. When workman is done playing a CD, it can stop, play the CD over again (the Repeat setting), or eject it. Click the MENU mouse button to select a stop mode; or click SELECT on the pull-down item to cycle through the available choices.

The "play mode" selector. This determines the playing order of the tracks. Two selections are always available: Normal, which plays the CD from start to end, and Shuffle, which plays the tracks in random order. In addition, if any playlists have been defined, they'll appear here as well.

A gauge indicating how long the CD has been playing and how much longer is left.

Three buttons that bring up the About, CD Info, and Goodies popups.

The "About" popup

There's not much to say about this; it's the credits with a couple of dumb pictures.

The "CD Info" popup

This popup is used to enter information about a CD. Again, from the top:

The artist's name.

The title of the CD as a whole.

A scrolling list of tracks and their titles. This can be used to view the tracks on a CD, or to select tracks for editing using the controls below.

The name of the track that's selected on the scrolling list. As a shortcut, if RETURN is typed after entering a track name, the scrolling list selection will automatically advance to the next track. This allows you to type in all the track titles without using the mouse. The track title can contain several special symbols that alter the main window's display. "//" forces a line break; the text after the "//" will be displayed below the text before it. WorkMan will automatically split lines that are too big for the main window. If a line begins with "+", the main window's disc title display is replaced with the text after the "+" (useful for classical CDs, with several tracks that are part of the same work.) If a line begins with "@", the main window's artist display is replaced with the text after the "@" (useful for compilation CDs with tracks by several artists.) Both "+" and "@" may be used alone on a line, in which case the program uses the title or artist from the previous track. If a line is empty, the corresponding line from the previous track is used. For example, a track title "@Orff//+Carmina Burana////Stetit Puella" will replace the artist's name with "Orff", the CD name with "Carmina Burana", and display two lines of track title, the second "Stetit Puella" and the first copied from the first line of title from the previous track. (If this sounds confusing, don't worry -- play with it for a few minutes and you'll see how it works.)

The "Continuation" selector. If this is selected, the current track is a continuation of the previous one. This is taken into account when the CD is played in shuffle mode; if, for example, three tracks are part of the same piece of music (indicated by setting "Continuation" on the second and third tracks), they will be played together in shuffle mode.

The "Don't play" selector. If this is selected, the program will avoid the track when playing the CD (though you can still play the track by selecting it directly using the main window's track selection buttons.)

The default volume setting. Use this if a particular disc or track should be played especially loudly or quietly. If the slider is all the way to the left, there is no default setting and the current volume will be used.

The default play mode setting. When the CD is inserted, the main window's play mode selector will be set according to this item. "From List" will select the first playlist.

The auto-play setting. If this is selected, the CD will start playing automatically when it's inserted (even if the main window is closed to an icon!)

Apply and Reset buttons. Apply will save the CD information to disk. Reset undoes any changes you've made.

A button to bring up the "Playlists" popup.

The "Playlists" popup

This contains the controls for creating user-defined playlists. Any number of playlists may be created, and they can be as long as you like (until your workstation runs out of memory, anyway.) The controls:

A scrolling list, from which you can select a playlist to edit or maim.

The name of a scrolling list to create, or the new name for the current list.

A button which creates a new list, using the name above or a boring system-generated one if no name has been entered.

A button to rename the current list to whatever is in the Name field.

A button to delete the current list.

The tracks in the current playlist. To add tracks, use the popup menu (which appears when you hit the MENU mouse button over the scrolling list.) The popup menu is pinnable, so you can keep it on the screen and select tracks quickly.

A button to delete the currently-selected track from the playlist.

The "Goodies" popup

This popup contains some infrequently-used, perhaps frivolous, controls:

The balance setting.

The time display settings. The running times to the left of the slider and gauge in the main window can display either elapsed time (the default) or remaining time; use these to choose.

The auto-play setting for unknown CDs (CDs which you haven't seen before, or which you saw before but didn't Apply to your database file from the CD Info window.) If this is selected, unknown CDs will be played when they're inserted.

The controls for the A-B repeat function. While the CD is playing, click the Start button to mark the start of a passage to be repeated; then click the End button when the CD reaches the end of the passage. Click on the "Repeat section of CD" item to start repeating the passage (and to stop, once you've started.)

The Split button. This button allows you to split any track in two. Select a track from the main window, and use the track-position slider to choose the split point. Then hit the Split button and the track will be divided. You can do everything with the new section that you can with a regular track, including choosing a name. Tracks may be split while the CD is stopped or paused, or while it's playing. This is useful if you wish to mark a section of a song, for instance; you can listen for the start of the section, and hit Split as soon as you hear it beginning.

The Delete button. Use this to put a split-up track back together. You can't delete the first section of a track.

A button to scan for index marks. If a CD already has sections marked via index marks (usually indicated in the liner notes), hit this button to search for them. Searching for marks can take a while depending on the particular CD. Every time an index mark is encountered, its track will be split as if you'd used the Split button.


Default location of personal preferences file. See \s-2WORKMANRC\s+2 under "Environment" as well as workmandb (4).
Default location of CD database file. See \s-2WORKMANDB\s+2 under "Environment" and workmandb (4).


The program leaks memory with XView 3.0 (but not 3.0.1 or higher) due to a library bug. The leak only occurs while the About popup is displayed.

Due to another library bug, the program will dump core when the default volume slider is wiggled back and forth under Solaris 2. (The Sun bug ID is 1097908.)

There is no way to choose a playlist other than the first one as the default.

Some of the options and environment variables should be done with X resources or a properties sheet.

The database should have an index of some sort for quickly looking up CDs, since the current linear search can get a little slow on big databases.

Interaction with data CDs, especially ones that are mounted as filesystems, is spotty at best. The program should unmount a CD before ejecting it.

The CD Info popup's interaction with mouseless mode is annoying.

If the volume manager (Solaris 2.2) is running and the "eject" program is used to eject the CD, a message about loading an unnamed CD will appear on the console. There's nothing WorkMan can do to avoid that.

The program's name is a pretty moronic pun.


Steven Grimm ( Feel free to send comments, criticisms, suggestions, or unadulterated praise.

ULTRIX port by Chris Ross (

HPUX port by John Brezak ( Note: Hewlett Packard supplies this without warranty or support of any kind.

Linux port by Chris Newbold (

Please report bugs in the HPUX and ULTRIX versions to, as well as non-Linux-specific bugs in that version.