# Known problems and plans

Contents:

1. Known bugs
2. Future plans

## Bugs

The PID file is mode 666.

-ee shouldn't check for CD presence even once.

Split doesn't continue to the next track in shuffle mode.

WorkMan should handle errors in a more elegant way. Most of the time, if a system call fails unexpectedly, the program will print an error and exit. It should pop up a notice and let the user figure out what to do. (For example, the return value of save() is never examined.)

WorkMan should grab info from the CD Info popup when it's unpinned.

WorkMan shouldn't make assumptions about the sizes of characters in its font. Right now, digits are assumed to all be the same width, twice as wide as spaces and periods. That's true for the Sun-supplied XView fonts, but isn't very flexible.

Volume control is kind of funky on the Toshiba 3401 -- unfortunately, it has a bizarre volume scale, much more sensitive on the low end than the high. But there are a couple things I can do to improve the situation.

The -background option should silently set the OpenWindows.windowColor resource so it does what users expect; currently -background basically does nothing at all.

## Plans

Here are the major things people have asked for or I have thought of. The first section lists what you can expect to find in the next release; after that the entries are in no particular order.

### Planned for 1.4

Digital audio over SCSI. This will initially be supported on Solaris only; in fact, Sun motivated me to do it by giving me a machine to work on! This will be the major feature of the next release -- it's a big enough nut to crack, to be sure.

### Planned for 1.5

The build process needs to be a lot more automatic. For instance, there should really be just one Makefile for all the systems that don't use imake, and ideally there should be a script to configure and build everything for you.

Change default play mode in CD Info popup so it selects Normal or Shuffle, and also selects a playlist, with "All" as the default. Change the main window so you select normal/shuffle and a playlist -- that is, you can say, "Shuffle through just these few tracks."

There should be an option to output the current track name to stdout when the program switches tracks. (Requested by C.C.Boucher@southampton.ac.uk) And other info, too, maybe with a printf-style format string. A similar option should determine which info is placed in the icon title.

Support for near matches in the database file, as described in the FAQ.

The buttons on the bottom of the main window shouldn't overlap when the -b flag is used.

The first WorkMan invoked on a device should be a master; subsequent ones should talk to it, rather than directly to the drive, and when it changes a setting (either on its own or because of a slave's request) it should notify all the slaves.

### Eventually...

A way to read track titles from an external file so people who don't have the jewel box handy can read the titles from the CD while it's out of the drive.

A resource to turn on use of the SoundBlaster mixer on BSD/386 systems.

There should be a workman.geometry resource.

The track-selection popup menu should have a dismiss button. Or better still, playlists should be built with a less kludgy interface (maybe as simple as selecting tracks on the main window or the CD Info popup.)

The default volume for unknown CDs should be settable on the command line.

The database access functions should do the appropriate uid twiddling to allow the program to be run setuid root on systems that require root access to fiddle with the CD drive, or that (like Solaris 2.2) automatically start the program as root.

You should be able to default to shuffle mode for unknown CDs.

The user should be able to attach arbitrary data to a CD or track. The simple stuff, like text fields (publisher, recording date, etc.) and larger pieces of text (liner notes) can be input and displayed internally by WorkMan. For more complex data (GIF pictures, music videos) the user will tell WorkMan the data type; WorkMan will have a separate database of display methods, so it will know "run 'xv' with the filename as an argument to display images of types X, Y, and Z". The user, naturally, will be able to add data types and display methods.

Check for changes in the play mode or the current playlist (if a playlist is being used) as each track finishes. The user should be able to play half the disc in Normal mode, then switch to Shuffle and get the remaining tracks in random order.

The HPUX version should use notify_set_input_func() to wait for a response from the drive; that way the program won't freeze up when there's no CD.

Hidden/private sections. A user should be able to split a track but ask that the split not be saved to the main database.

The program should be able to collapse to a tiny base frame with just the mode selector. Or better still, with whatever controls the user wants.

Check the user's tty; if the idle time is more than X minutes, pause the CD (and stop it eventually as above.)

Allow the main window to be resized.

Show the total running time of a playlist as it's being built.

Use gettext() for all labels and messages so the program can easily be localized.

Optionally display the current CD or artist name in window title bar, to save screen space.

If the user changes the volume and there's a default volume, the program should interpret the change as a percentage volume change -- e.g. if the volume is cut in half, other tracks should play at half their default volumes. Perhaps this should be selectable from Goodies, as it might surprise people.

A "mute" tool or hot-key. This can already be built with the signal interface, so it's pretty low-priority.

Optionally lose the track selection buttons in favor of a scrolling list. This will allow the window to remain a constant size no matter how many tracks there are.

Optionally spawn off a background process when the user quits the tool; this process will continue playing the CD according to the playlist, stopping or ejecting the CD when it's done.

You should be able to double-click on track title to select that track for playing.

There needs to be a better indication of tracks played already and tracks remaining to play. A Possibility might be crossing out already-played tracks' buttons with Xs (which would mean replacing the button labels with dynamically-generated images.)

We need a database broswing tool. This should probably be separate from WorkMan, though WorkMan might be able to invoke it.

An interface to Radio Free Ethernet or even the MBONE would be neat.

WorkMan should accept keyboard focus, and you should be able to hit keys to pause/play/stop/eject the CD.

Holding down the mouse button to the left or right of the track-position slider should cause WorkMan to simulate the fast-forward and reverse modes found on standalone CD players.