xfreecd(1) GTK2 based CD player for X


xfreecd [ -geometry value ]


xfreecd is (c) 1998 by Brian C. Lane <URL:http://www.brianlane.com>


XfreeCD is a X(7) windows program that looks like the front panel of a CD player. You can play CDs, move between tracks, adjust volume -- clicking the left button on the speaker icon increases the volume. Clicking the right button will decrease the volume. Right-clicking on the "play/pause" button will STOP the playback. You can display 4 different times on the display:

Time elapsed on the track (icon has a plus and a 1/4 CD ROM on it)
Time remaining on the track (icon has a minus and 1/4 CD ROM on it)
Time elapsed on CD ROM (icon has a plus and a full CD ROM)
Time remaining on CD ROM (icon has a minus and a full CD ROM)

The repeat key causes the CD ROM to keep playing when it reaches the end of the CD ROM. The question mark key opens a setup dialog box with 3 tabs for the different setup screens. The 'Setup' tab allows you to set the CD device to use and 3 other buttons:

When this is selected XfreeCD will start playing the CD if there is one in the drive. If a CD is already playing it doesn't disturb it.
Eject when done
When selected this will eject the CD when it is done playing it if the repeat button on the front panel is not selected.
Eject on exit
When this is selected and you exit XfreeCD with the CD stopped or paused it will eject the CD.
Hide WM Decorations
When checked, this will try to make the main window borderless (undecorated) next time the program is run.

XfreeCD supports the Internet CD database CDDB created by Ti Kan and Steve Scherf (Thanks Guys!). Select the 'CDDB' tab from the setup menu to setup this option. The local CDDB path is where it will store the CD info when it is downloaded from the Internet or entered locally. A number of directories are created under this directory for the different categories of CDs (this is handles automatically, you don't need to create any directories yourself, just make sure you have the right permissions for the location you select).

The CDDB server is the Internet site that you want to use to retrieve CD track names from. This should probably be geographically near you for the best performance. Initially only cddb.cddb.com (freedb.freedb.org on Debian/GNU Linux) is selected. A list of the current sites can be downloaded by pressing the Refresh Servers button.

The CDDB Submit email address is the email address of the CDDB server to submit new CDs to. The default is <[email protected]> (<[email protected]> on Debian GNU/Linux) and the test address is <[email protected]> -- The test address will tell you if the submission would have been accepted or not. You can submit CD info from the Track Edit window by pressing the 'Send to Server' button. This uses the cat(1) and mail(1) programs, and they should be in your current PATH for it to work.

As of version 0.7.6 XfreeCD submissions to the CDDB database are accepted! Now you can add that obscure CD of yours to the worldwide database.

If the CDDB support button is selected XfreeCD will first search the local database (it does this even if CDDB is not selected) for the current CDs unique disc id. If that fails then it will attempt to connect to the CDDB server that you have selected and download the CD info. It will then store that data locally. CDDB submission is available even when CDDB download support is turned off.

To use the CDDB download feature you will need to have your Internet connection online or be using a program like diald(1) to automatically connect to the Internet.

The track names are displayed by doing a left click in the main display window (the one showing the time and track #). Doing a right click in this window allows you to drag the XfreeCD window anywhere on your desktop.

At the bottom of the track list window is a button labeled 'edit tracks' Click on it and another window similar to the first will be opened. Here you can edit the track names and save the changes to the local database. You don't need to have the Internet CDDB support enabled.

XfreeCD now recognizes the -geometry command for x/y placement on the screen. Use the standard X(7) geometry placement parameters. Width and Height are ignored. I use

xfreecd -geometry +580-80

to place it at the end of my AfterStep(1) Wharf bar.

The only small glitch with this is if you have titlebars on and use geometry the placement will be relative to the main XfreeCD window, without respect to the size of the titlebars.


xfreecd does not work with SCSI CD-ROM drives.

Some people requested track seeking (skipping forward a few seconds within the track). I tried to implement this, but it seems that the low level CD device drivers don't implement this function very well and I removed the option (It would crash often and leave the cd_control process with no way to kill it since it was frozen waiting for a kernel call to finish). I have tested other players and none of them implement this feature any better. If you want to add it yourself and can get it to work, I'd be happy to integrate it into the next release of XfreeCD.

This is beta software and it may have memory leaks and other problems. Please report any problems or ideas to the sourceforge bugs page:


The program initially uses /dev/cdrom to access the CD device. This can be changed in the setup dialog box (click on the question mark).

You also have to make sure you have read permission for the CD device. You can do this by executing chmod ugo+r /dev/hdc (or whatever your device is). Make sure you change the device itself, not a symlink like /dev/cdrom since that won't work.

If you want to modify the way the XfreeCD windows look, you need to know the types of these windows. There are 5 types of windows associated with XfreeCD.

is the main window.
is the Track List window.
is the Edit Track list window.
is the progress window while connecting to the Internet CDDB server.
is the setup window.

If you run ps(1) while running xfreecd you will notice 3 processes running. This is perfectly normal. One process handles the GTK+ user interface, another handles the low-level CD control and the third is the CDDB Internet interface.


Fist of all - the original author, Brian C. Lane (http://www.brianlane.com <URL:http://www.brianlane.com>. Most of this program (including all the README's and manpages) is written by him (so, in deed, almost everywhere in this file, "I" stands for Brian). He made this small cute app, and all I did was a few fixes for it compile with GTK2. Thanks, Brian!

I would like to thank all of the beta testers for their help, bug reports, and suggestions. If I have forgotten anyone, please let me know and I'll add you to the list.

Vincent Cautaerts (<[email protected]>) did the RPM package for RedHat users for v0.7.5 (I have taken over the RPM generation as of v0.7.6, so send any errors to me).

The guys at www.cddb.com for their strict requirements for submission to the database. They revealed several bug that have now been squashed.

Users of v0.7.6 for reporting the error 500 problem and forcing me to look over the code once again. I found the bug and squashed it!

Users of v0.7.7 who kept insisting that it was segfaulting after a CDDB retrieval. I believed you! Really!

I stole the images from the win95 freeCD program. My thanks to Nate Smith for making his code freely available.


This man page was written by Helge Kreutzmann <[email protected]> for the Debian GNU/Linux project but may be used by others. It was slightly modified by Rimas Kudelis <[email protected]> to reflect the changes in v0.9.