###################################################################
##                          GQmpeg 0.4.6                         ##
##   This software is Copyright (C) 1998, 1999 by John Ellis.    ##
##  Use this software at your own risk. I am not responsible for ##
##        anything this software may do to your computer.        ##
## This software falls under the GNU Public License. Please read ##
##              the COPYING file for more information            ##
###################################################################

code written by: John Ellis
e-mail: gqview@geocities.com
homepage: www.geocities.com/SiliconValley/Haven/5235/

Additions/patches submitted by:
     Sampo Niskanen <sampo@compart.fi>
     [more] (I know, there are more, I don't have time right now to update this)

GQmpeg is a frontend to mpg123.  It requires mpg123 0.59o to play
and gtk 1.0.6 and imlib 1.6 to compile.

=== library locations ===
GTK+-1.0.6: ftp://ftp.gtk.org/pub/gtk
imlib 1.6: ftp://ftp.labs.redhat.com/pub/imlib
        or ftp://ftp.enlightenment.org/pub/enlightenment
--------------------------
freeamp also works with GQmpeg when used in mpg123 emulation mode,
see freeamp.org for details and download.
==========================

Features:
 - Extensive mpg123 option support.
 - Shuffle, repeat.
 - Shuffle and repeat preferences can be saved in each playlist.
 - Customizable skins, including winamp skin support.
 - A skin can contain an alternative face (shade mode for instance)
 - ID3 tag reading/writing support (v1)
 - Volume controls (can be connected to any available device)
 - Basic file management (move/copy/rename/delete)
 - Tab completion in most dialogs.
 - Presets for playlists.

Installation:
 - to compile run make

 - to install copy the gqmpeg binary to /usr/local/bin/gqmpeg (or somewhere
   in the path)
 - make sure mpg123 0.59o is in the path as well (so GQmpeg can find it)

   Make options:
     make install         compile and install binary
     make static          compile static binary as gqmpeg.static
     make gnome-install   compile, install binary, and install gnome link/icon
     make uninstall       remove binary
     make gnome-uninstall remove binary and gnome link/icon
     make clean           remove object *.o and binaries from source dir

Command Line options:

     -debug          enable debug mode (spews lots of wierd junk :)
     -skinhelp       shows the mouse coordinates as you move the mouse to help
                     position items when designing skins
     -skin:skinfile  tells GQmpeg to use the skin in the directory named
                     skinfile, GQmpeg searches for skinfile in the current and
                     HOME/.gqmpeg/skins/ directories.

   The following commands send a command to another running gqmpeg and exit.
   (requires 'allow command parsing' to be enabled)

     option:           function:
     -p  | --play      play
     -s  | --stop      stop
     -ps | --pause     pause
     -n  | --next      next
     -b  | --back      prev

     Note: also echoing the functions above to ~/.gqmpeg/command will work
     example: `echo next > ~/.gqmpeg/command` will tell gqmpeg to skip to
              the next song.

Skins:
 To specify a skin use the -skin:skinfile command line parameter (see above).
 When specifying a default skin in the config dialog, the skin must reside
 in HOME/.gqmpeg/skins 
 If valid, a new default skin is loaded when 'ok' or 'apply' is pressed.

 A skin is a directory which contains a file named skindata and xpm files for
 the skin. Creating a skin is explained in the SKIN-SPECS file, you can
 download sample skins to use as a template from the GQmpeg web site:

     http://www.geocities.com/SiliconValley/Haven/5235/

Users of GTK+ 1.1.x:
 GQmpeg should compile on all versions through 1.1.13 (currently the latest)
 Versions >= 1.1.3 : drag and drop is currently disabled with these versions.

Gnome users:
 A pixmap and desktop file have been provided to install this program in gnome.
 Assuming gnome is installed in /usr, copy gqmpeg.png into /usr/share/pixmaps
 and gqmpeg.desktop into /usr/share/apps/Audio

 If compiling from source, 'make gnome-install' will create a link to gqmpeg in
 the gnome menu in the audio section.

Other info:
 Use this filename for gtk themes: HOME/.gqmpeg/gtkrc (depreciated)

Shoutcast support: (unsupported, very buggy) (not available in binary packages)
 Shoutcast support _requires_ mpg123 0.59pre-p ... mpg123 0.59o WILL NOT WORK!
 The shoutcast directory of the source code includes a script and instructions
 to use GQmpeg as a netscape plugin for shoutcast(.com) pls files.

Known issues:
 - On FreeBSD, SGI IRIX 5.3, Linux/PPC, and most other non-x86 linux platforms
   mpg123 needs to have -DREAD_MMAP added to the Makefile before compiling.
   (required to get the progress reports from mpg123 that GQmpeg uses)

 - The window decorations fail to be removed under some Window Managers. This is
   probably GQmpeg's fault.
   WM's effected: TWM, AfterStep 1.5.4.3, FVWM?.

 - Double mode may increase CPU use dramatically, the screen redraw code will
   be improved soon.

Winamp skin support:
 All files must be lowercase.
 Support is an added bonus. Most skins will work, however a few will not. Please
 do not request support to get a particular skin to work.

Keyboard controls:
       p, [SPACE]     play/pause
       s              stop
       n              next
       b              back
       l              playlist
       m              run mixer
       w              switch skin mode
       i              song information
       -              volume down
       +, =           volume up
       [CTRL] -       balance left
       [CTRL] +, =    balance right
       1 .. 0         presets 1 through 10, respectively

       [CTRL] s       shuffle
       [CTRL] r       repeat
       [CTRL] t       time display
       [CTRL] o       options/preferences
       [CTRL] i       iconify
       [CTRL] a       about
       [CTRL] q       quit

Version history:

0.4.6 (02-01-99)
  - Updated to work with mpg123 0.59q release (o and p still supported)
  - more work on ~/.gqmpeg/command, it is now a pipe, only exists when gqmpeg
    is running. Still work in progress.
  * fix possible SIGPIPE errors caused in playerio.c

0.4.5 (01-22-99)
  > Add simple command line options to control an already running process,
    commands include play, stop, pause, next, and prev.
  > Add mixer support for SPARC Ultra 1 machines (tested on solaris 2.5.1).
    Patch submitted by Marcos Ramirez.
  - Increase mpg123 buffer limit to 8192 (from 3000).
  * Fix problems with changing shaped skins.
  * Fix crash when using up/down playlist buttons in gtk 1.1.x

0.4.4 (12-15-98)
  > Final fix for mpg123 buffer stop problems, the solution is to set mpg123
    to it's own group id and kill the entire group. whew! :)
  - Add option to show all files in the playlist window filelist.
  - Increase mpg123 piped data timeout to 10 seconds.
  - Disable id3 tag editing for invalid files.
  - Beginnings of a FAQ.

0.4.3 (12-8-98)
  > Add append playlist button in playlist window.
  > Add option to display playlist length in the playlist window.
  - Add optional workaround for mpg123 buffer playback problems when seeking
    and skipping songs. (pause during error, then retry playback).
  - Add WM hints for icon and class.
  - Editing the Makefile is no longer necessary for any version of GTK.
    (tested to work through gtk+-1.1.5)
  * Applied helpful patch to fix a file descriptor leak in playerio.c

0.4.2 (11-25-98)
  > Add shaped skin support. (use the Mask: option in the skindata file)
  > Updated the default skin to include volume/position slider and presets.
  * Fixes for the latest GTK+-1.1.5

0.4.1 (11-13-98)
  > Add path entry to playlist with tab completion.
  > Add tab completion all over, including file dialogs and config window.
  > Add better slider capabilities (vertical, reverse direction options).
  - Basic translation for iso_8859 characters when drawing skin fonts.
  * Fixes for FreeBSD, mixer should work now.

0.4.0 (11-9-98)
  > Add double size mode
  > Add option to display cpu/frame info in the visualization window of winamp
    skins.
  - Add support for the winamp balance bitmap.
  * Fix Mixer routines to compile on non-linux systems. Note that on such
    systems, the mixers controls do nothing.
  * Fix loading of playlists to work when the current playlist is empty.

0.3.7 (11-5-98)
  > Add ability to edit/save Id3 tags.
  > Add move/copy/rename/delete options in playlist editor.
  > Add keyboard support, see key chart (above).
  > Allow time display to show song time remaining.
  - Playlist locations default to the ~/.gqmpeg/playlists directory.
  - Search the HOME env var first, allowing custom config dir location.
  - Skin directories can now contain spaces.
  * Fix crash when viewing song info for files beginning with junk.
  * Fix 'small_digit undefined' error report when it really was defined.
  * Fix -debug mode from causing mouse release functions from being ignored.
  * Fix segfault when closeing warning/songinfo windows using WM controls.
0.3.6 (10-25-98)
  > Added basic volume controls, only tested on Linux x86. There will surely
    be problems on other platforms. (patches accepted/wanted). The controlled
    mixer device is specified in the options dialog.
  > Volume/Balance buttons, sliders, and status items added to skindata format.
  > winamp skin compatibility includes the new volume controls.
  > Added preset button capability (max 10), playlists can be bound to these.
  > Added support for mpg123's --8bit option.
  > Added option to enable window manager decorations.
  > Song information window now contains mpg specific details including song
    length, file size, bit rates, etc.
  - Added install and gnome-install options to the Makefile.
0.3.5 (9-1-98)
  > Moved to imlib to load images, now any filetype can be used for skin
    images. Skin loading is faster now too. (recommended file format is png)
  > Added slider for song positioning, it is not in the default skin, however.
  > Added Status_Item for display of play/stop/pause condition.
  > Added ability for shuffle/repeat buttons to have a status light.
  > Added loader for w!n@mp skins, this loader is attempted if the skin is not
    found to be GQmpeg native.
  - Skins listed in the config dialog have (amp) beside them if they are w!n@mp.
  - The new skindata features are Position_Slider, Status_Item and
    Shuffle/Repeat_Button now has a status light option.
  * Fixed a serious bug causing segfault when GQmpeg is run on a system for the
    first time and a valid session-playlist.gqmpeg file is not found. 0.3.4
    would only work for those that upgraded because of this.
  * Fixed bugs in button display when buttons have no prelight or status light
    specified in the skindata file.
0.3.4 (8-29-98)
  > Added right click context menus to the main window and playlist lists.
  > Added ID3 tag reading, by default this option is off. When a tag is
    available the title of the song is set to the tag's title. Songs with
    no tag revert to the filename. Tag support is read-only.
  > Added a 'smart window placement' option. When enabled (default) the window
    will snap to the edges of the screen when within 8 pixels. Also when
    enabled, the small mode always moves closest to the nearest edge, but
    within the area of the normal mode.
  > Option to save the window position and the window mode (normal/small).
  > Ability to add entire directories to the playlist by right clicking on a
    directory in the directory list. Directories can be added recursively too.
  - Middle clicking on a file adds it to the playlist, middle clicking on the
    playlist plays that song. (Double left click was and is there, but this is
    for those that hate double clicking)
  - Song info available on most right click menus, only shows ID3 info for now.
  - Available skins are now listed on the skin tab of the config dialog.
  - Now when 'save playlist bettween sessions' and 'play on startup' are
    enabled GQmpeg continues with the song that was playing on the last exit.
  - Added another file type, .mp2 to the filter.
  - Now when clicking on an area with no button, but not dragging to move the
    window, the window is raised.
  - Some major rewrites of some code, hoping no new bugs were introduced.
0.3.3  (8-22-98)
  > Removed window decorations, new Iconify_Button type for added to iconify
    the window.
  > To move the window, just click and drag anywhere there is no button.
  > New Mixer_Button type, the mixer can be changed under config->General.
  > Skins can have an alternate mode (can be a smaller version, for example),
    and added a Alt_Skin_Button type to switch skins, the alternate skin is
    defined with the same file format as the normal one, however it's data file
    is named skindata_alt. If there is no skindata_alt file, alternate skin mode
    is disabled.
  > Updated the default skin for no window decorations and added a smaller
    alternate skin.
  - GQmpeg now attempts to read the HOME environment variable as a last chance
    effort to figure out the home directory. If it still can not find a valid
    home directory, it gracefully exits with an error message.
  - The rc file themes renamed to HOME/.gqmpeg/gtkrc, was gtkrc-gqmpeg.
  - New tab in config window called startup, all relevent options moved there.
  * Reformatted this file (README) to fit within 80 character wide terminals.
  * skindata files: changed Mpegplayer_Item to Mpeglayer_Item (typo)
                    changed Mpegver_Item to Mpegversion_Item
0.3.2  (8-20-98)
  > SKIN support! (why only a minor version change? Because skin support could
    be buggy and I want 0.4.0 to be stable.
  > New skin tab on config dialog. It contains an entry to specify the default
    skin. the default skin must reside in HOME/.gqmpeg/skins
  - The gqmpeg config files are now all under HOME/.gqmpeg/*
  - Added patch provided by Jeff Glover which adds #ifdef's for cpu utilization
    display to work on SGI IRIX 5.3 and 6.5
  * Fixed bug where when first starting GQmpeg and opening the playlist window,
    the files were not being sorted.
0.3.1  (8-18-98)
  > Added option to specify a custom output sampling rate.
  > Added option to show hidden files (those that begin with a dot).
  > Added buttons in playlist to move a song to the top or end (words
   'beginning' and 'bottom' too many letters) of a list.
  - Added .mpg and .mpeg types to the file list.
  - Home directory code fixed.
  - Added patch provided by Heiner Schepers which adds #ifdef's for cpu
    utilization display to work on Sun Solaris 2.5.1
  * Fixed bug where GQmpeg would sigsegv if you pressed move down in the
    playlist and had not selected a song in the playlist.
  * Fixed bugs when removing songs from a playlist when playing or paused.

0.3.0  (8-16-98)
  > Added option of saving shuffle and repeat modes in a playlist, and the
    option of disabling reading these modes from a playlist.
  > Shuffle is now sane, and respects repeat mode. Prev and Next buttons now
    go through the shuffled songs instead of regenerating a random song on
    each press.
  > Added a go to home directory button in the playlist dialog.
0.2.2  (7-30-98)
  > Fixed config dialog problems.
0.2.1  (6-24-98)
  > These additions/fixes supplied by Sampo Niskanen <sampo@compart.fi>:
   * - next/prev song with empty playlist doesn't crash program
   * - next/prev song while shuffle on selects random song
   * - when loading playlist, if shuffle on, selects random song
0.2.0  (6-06-98)
  > New feature, drag and drop support. Works with other gtk apps. Just drag a
    file or playlist onto the main window or playlist window to start playing
    that song.
  > Rewrote file lists.
  > Removed lengthy delay at the end of a song when using buffered play, the
    time should be more accurate too (less 'second skipping').
  > Added apply button to configuration dialog.
  > Big code reorganization.
0.1.1  (5-04-98)
  > Fixed missing definitions by moving tham all to gqmpeg.h, now compiling
    should work on more systems.
  > Changed playlist code (GLists are now implemented properly)
0.1.0  (4-06-98)
  > No history, first release!

=== enjoy! ===
