[Pkg-wmaker-commits] [wmrack] 31/97: Imported Upstream version 0.9

Doug Torrance dtorrance-guest at moszumanska.debian.org
Sat Aug 22 02:42:01 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch master
in repository wmrack.

commit 374cddf20f68db84e2c82fde6103b16c547e0b37
Author: Doug Torrance <dtorrance at monmouthcollege.edu>
Date:   Tue Jan 6 18:32:57 2015 -0600

    Imported Upstream version 0.9
---
 .cvsignore             |    3 +
 Imakefile              |   12 +
 LICENSE                |  339 ++++++++++++++
 Makefile.cdctrl        |   12 +
 README                 |   61 +++
 README.cdctrl          |    8 +
 TODO                   |   14 +
 WARRANTY               |   21 +
 XPM/.cvsignore         |    1 +
 XPM/README             |   22 +
 XPM/big.style          |  705 ++++++++++++++++++++++++++++
 XPM/blue.style         |  327 +++++++++++++
 XPM/bluered.style      | 1213 ++++++++++++++++++++++++++++++++++++++++++++++++
 XPM/cd-mask.xpm        |   57 +++
 XPM/gold.style         |  402 ++++++++++++++++
 XPM/grey.style         |  255 ++++++++++
 XPM/grey/cdnodisc.xpm  |   58 +++
 XPM/grey/cdpaused.xpm  |   58 +++
 XPM/grey/cdplaying.xpm |   58 +++
 XPM/grey/cdstopped.xpm |   58 +++
 XPM/grey/led.xpm       |   18 +
 XPM/led.xpm            |   18 +
 XPM/orange.style       |  327 +++++++++++++
 XPM/smiley.style       |  523 +++++++++++++++++++++
 XPM/standart.style     |    1 +
 cdctrl.c               |  121 +++++
 cdrom.c                |  902 +++++++++++++++++++++++++++++++++++
 cdrom.h                |   96 ++++
 wmrack.c               |  854 ++++++++++++++++++++++++++++++++++
 wmrack.man             |  126 +++++
 xpmicon.c              |  306 ++++++++++++
 xpmicon.h              |   42 ++
 32 files changed, 7018 insertions(+)

diff --git a/.cvsignore b/.cvsignore
new file mode 100644
index 0000000..b8348e3
--- /dev/null
+++ b/.cvsignore
@@ -0,0 +1,3 @@
+wmrack
+cdctrl
+Makefile
diff --git a/Imakefile b/Imakefile
new file mode 100644
index 0000000..a30cd3c
--- /dev/null
+++ b/Imakefile
@@ -0,0 +1,12 @@
+
+XPMLIB = -L/usr/lib/X11 -lXpm
+DEPLIBS = $(DEPXLIB)
+
+LOCAL_LIBRARIES = $(XPMLIB) $(XLIB)
+
+LINTLIBS = $(LINTXLIB)
+
+SRCS = wmrack.c cdrom.c xpmicon.c
+OBJS = wmrack.o cdrom.o xpmicon.o
+
+ComplexProgramTarget(wmrack)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..a43ea21
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,339 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+

+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+

+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+

+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+

+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+

+	Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Makefile.cdctrl b/Makefile.cdctrl
new file mode 100644
index 0000000..f2815ec
--- /dev/null
+++ b/Makefile.cdctrl
@@ -0,0 +1,12 @@
+CC=gcc
+RM=rm -f
+CFLAGS=-ggdb -Wall -DDEBUG
+OBJS=cdrom.o cdctrl.o
+
+all: clean cdctrl
+
+clean: 
+	$(RM) *.o cdctrl
+
+cdctrl: $(OBJS)
+	gcc $(OBJS) -o cdctrl
diff --git a/README b/README
new file mode 100644
index 0000000..82ec1b9
--- /dev/null
+++ b/README
@@ -0,0 +1,61 @@
+				  wmrack 1.0
+				  ==========
+
+		     The WindowMaker Sound Control Panel
+				      by
+	 Oliver Graf <ograf at fga.de> and Heiko Wagner <hwagner at fga.de>
+
+
+DESCRIPTION:
+------------
+WMRack is a Dock/Wharf applet which gives you complete control over
+your CDROM, the Mixer and hopfully in the future to other sound related
+stuff (fell free to send suggestions).
+
+It's main advantage is the high configurability, which will let you specify
+different looks for the window at startup.
+
+CD-Functions:
+ * Display Track and Time (remaining/to-go, track/total)
+ * Play, Pause, Stop, Eject, Load, Track +/-, Fast Fore-/Back-ward
+ * Display of total tracks and length when a new CD is loaded
+ * random play, skip data tracks, play lists
+
+Mixer Functions:
+ * startup options for initial volume
+ * four volume displays at one time
+ * switchable sources at run-time
+
+
+INSTALLATION:
+-------------
+xmkmf
+(make depend -- if you want to)
+make
+make install
+make install.man
+
+
+USAGE:
+------
+Look into the manpage for supported options.
+
+Putting wmrack into AfterStep Wharf:
+*Wharf WMRack nil Swallow "wmrack" wmrack &
+
+Easily swallowed by dock (use the --withdrawn option).
+
+
+BUGS & CONTACT:
+---------------
+  * send bug reports or suggestions to ograf at fga.de
+  * send new styles or style questions to hwagner at fga.de or ograf at fga.de
+
+HISTORY:
+--------
+Basically this thing borrows much from WorkBone, ascd and asmixer. But in
+the progress of work, almost any part that was stolen, has been rewritten,
+restructured, and overworked.
+
+-----
+$Id: README,v 1.4 1997/06/12 17:03:53 ograf Exp $
diff --git a/README.cdctrl b/README.cdctrl
new file mode 100644
index 0000000..caba465
--- /dev/null
+++ b/README.cdctrl
@@ -0,0 +1,8 @@
+cdctrl is a test program for the cdrom.* stuff.
+
+You may compile it (if you want) using the follwing command:
+
+make -f Makefile.cdctrl
+
+Without the DEBUG and gdb stuff it also gives a useful command-line
+interface to your cdrom.
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..401ba52
--- /dev/null
+++ b/TODO
@@ -0,0 +1,14 @@
+For V1.0:
+ * skip data tracks, random play (needed feature: playlists)
+ * mixer support (i.e. press volume button, and the think becomes a mixer -
+   press cd button, and it will be the cdrom player).
+
+And then:
+ * integration of X-Resources for configuration purposes (that will take some
+   time -- I will first need to buy some X-Programming-Manual ;-) )
+ * cddb lookups + scroll text display
+ * better configurability of the display (via XPM-extensions -- until now you
+   can only change the look of the thing, but the positions and sizes must
+   stay fixed).
+ * cd-changer (I can't test this because I don't have such a thing)
+ * sound-file-player
diff --git a/WARRANTY b/WARRANTY
new file mode 100644
index 0000000..741fbcb
--- /dev/null
+++ b/WARRANTY
@@ -0,0 +1,21 @@
+                            NO WARRANTY
+
+      BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+      IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
diff --git a/XPM/.cvsignore b/XPM/.cvsignore
new file mode 100644
index 0000000..a9a5aec
--- /dev/null
+++ b/XPM/.cvsignore
@@ -0,0 +1 @@
+tmp
diff --git a/XPM/README b/XPM/README
new file mode 100644
index 0000000..6d4b714
--- /dev/null
+++ b/XPM/README
@@ -0,0 +1,22 @@
+*.style files can be loaded using the -style option of wmrack
+
+You can define your standart style by linking standart.style to
+the style of your choice before compilation using:
+ln -sf <yourchoice>.style standart.style
+
+cd_mask.xpm is the standart mask of on of the window faces.
+led.xpm     are the digits and signs for the cdplayer.
+
+you need for pixmaps (the names must be the name of the XPM):
+cdnodisc  (please to not any track +/- buttons)
+cdpaused
+cdplaying
+cdstopped
+plus the led.xpm (until now not really needed, the compiletime
+                  default will do).
+
+cat all five into one file using for example:
+  'cat no.xpm pl.xpm pau.xpm sto.xpm led.xpm >a.style'
+
+If you want to submit new styles to the WMRack distribution, send
+them to Heiko Wagner <hwagner at fga.de>.
diff --git a/XPM/big.style b/XPM/big.style
new file mode 100644
index 0000000..b479cb1
--- /dev/null
+++ b/XPM/big.style
@@ -0,0 +1,705 @@
+/*
+ * This is a WMRack style
+ *
+ * Copyright 1997 by Heiko Wagner <hwagner at fga.de>
+ */
+/* XPM */
+static char *cdnodisc[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 163 2",
+"   c Black",
+".  c #0018ff",
+"X  c #001eff",
+"o  c #0023ff",
+"O  c #0025ff",
+"+  c #0027ff",
+"@  c #0029ff",
+"#  c #002bff",
+"$  c #002dff",
+"%  c #002fff",
+"&  c #0031ff",
+"*  c #0033ff",
+"=  c #0035ff",
+"-  c #0037ff",
+";  c #0039ff",
+":  c #003bff",
+">  c #003dff",
+",  c #003fff",
+"<  c #0041fe",
+"1  c #0044ff",
+"2  c #0048ff",
+"3  c #004aff",
+"4  c #004cff",
+"5  c #004eff",
+"6  c #0050ff",
+"7  c #0052ff",
+"8  c #0054ff",
+"9  c #0056ff",
+"0  c #0058ff",
+"q  c #005aff",
+"w  c #005cff",
+"e  c #005eff",
+"r  c #0060ff",
+"t  c #0062ff",
+"y  c #0064ff",
+"u  c #0067ff",
+"i  c #0069ff",
+"p  c #006bff",
+"a  c #006dff",
+"s  c #006fff",
+"d  c #0071ff",
+"f  c #0073ff",
+"g  c #0075ff",
+"h  c #0077ff",
+"j  c #0079ff",
+"k  c #007bff",
+"l  c #007dff",
+"z  c #007fff",
+"x  c #0081fe",
+"c  c #0083ff",
+"v  c #0085ff",
+"b  c #0088ff",
+"n  c #008aff",
+"m  c #008cff",
+"M  c #008eff",
+"N  c #0090ff",
+"B  c #0092ff",
+"V  c #0094ff",
+"C  c #0098ff",
+"Z  c #009aff",
+"A  c #009cff",
+"S  c #009eff",
+"D  c #00a2ff",
+"F  c #00a4ff",
+"G  c #00a8ff",
+"H  c #00adff",
+"J  c Cyan",
+"K  c #fb0f5f",
+"L  c #fb125e",
+"P  c #fa145d",
+"I  c #fa175c",
+"U  c #f9195b",
+"Y  c #f91c5a",
+"T  c #f81e59",
+"R  c #fd0762",
+"E  c #fc0a61",
+"W  c #fc0c60",
+"Q  c #f72457",
+"!  c #f72656",
+"~  c #f62955",
+"^  c #f62b54",
+"/  c #f52e53",
+"(  c #f82158",
+")  c #f3384f",
+"_  c #f33b4e",
+"`  c #f23d4d",
+"'  c #f53052",
+"]  c #f43351",
+"[  c #f43650",
+"{  c #eb5f3f",
+"}  c #eb613e",
+"|  c #ea643d",
+" . c #ea673c",
+".. c #e9693b",
+"X. c #e96c3a",
+"o. c #e86e39",
+"O. c #e77337",
+"+. c #e77636",
+"@. c #e67935",
+"#. c #e67b34",
+"$. c #e57e33",
+"%. c #e87138",
+"&. c #ef4d47",
+"*. c #ef4f46",
+"=. c #ee5245",
+"-. c #ed5742",
+";. c #ee5544",
+":. c #ec5a41",
+">. c #ec5c40",
+",. c #f1424b",
+"<. c #f2404c",
+"1. c #f1454a",
+"2. c #f04849",
+"3. c #f04a48",
+"4. c #df9d27",
+"5. c #df9f26",
+"6. c #dbaf1f",
+"7. c #dbb11e",
+"8. c #dab41d",
+"9. c #dab61c",
+"0. c #d9b91b",
+"q. c #d9bc1a",
+"w. c #d8be19",
+"e. c #dea225",
+"r. c #dda723",
+"t. c #dea424",
+"y. c #ddaa21",
+"u. c #dcac20",
+"i. c #e3882f",
+"p. c #e38b2e",
+"a. c #e28d2d",
+"s. c #e58032",
+"d. c #e48331",
+"f. c #e48530",
+"g. c #e1922b",
+"h. c #e2902c",
+"j. c #e1952a",
+"k. c #e09729",
+"l. c #e09a28",
+"z. c #d7c317",
+"x. c #d7c616",
+"c. c #d6c815",
+"v. c #d6cb14",
+"b. c #d5ce13",
+"n. c #d8c118",
+"m. c #d3d80f",
+"M. c #d3da0e",
+"N. c #d2dd0d",
+"B. c #d5d012",
+"V. c #d4d311",
+"C. c #d4d510",
+"Z. c #cfec07",
+"A. c #cfef06",
+"S. c #cef205",
+"D. c #cdf703",
+"F. c #cef404",
+"G. c #ccfc01",
+"H. c #d1e20b",
+"J. c #d2e00c",
+"K. c #d1e50a",
+"L. c #d0e709",
+"P. c #d0ea08",
+"I. c green",
+/* pixels */
+"G.D.F.S.Z.P.L.H.J.N.M.C.V.B.v.c.x.n.w.q.9.8.7.u.y.r.e.5.4.l.j.g.h.p.i.f.s.$.#.+.O.%.X... .} { >.",
+"F.S.A.P.L.K.H.N.M.m.V.B.b.c.x.z.w.q.0.8.7.6.y.r.t.e.4.l.k.g.h.a.i.f.d.$.#. at .O.%.o... .| } >.:.-.",
+"A.Z.                                                                                        ;.*.",
+"P.L.                                                                                        &.3.",
+"K.J.                                                                                        2.1.",
+"N.M.                                                                                        ,.` ",
+"m.C.                                                                                        ` ) ",
+"V.b.                                                                                        [ ] ",
+"v.c.                                                                                        ' / ",
+"x.z.                                                                                        ^ ! ",
+"n.w.                                                                                        Q ( ",
+"q.9.                                                                                        T Y ",
+"8.7.                                                                                        U I ",
+"6.u.r.t.e.4.l.k.j.h.a.p.f.d.s.#. at .+.%.o.X. .| } >.:.-.;.*.&.3.1.,.<._ ) [ ' / ^ ! Q ( Y U I P K ",
+"y.t.e.5.4.k.j.g.a.p.i.d.s.$. at .+.O.o.X...| } { >.-.;.=.&.3.2.,.<.` ) [ ] / ^ ~ Q ( T Y I P L W E ",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"K.N.m.V.v.x.n.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.8.I.I.I.I.I.I.",
+"M.V.b.c.n.q.9.7.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.7.y.t.I.I.I.I.I.",
+"B.c.z.w.0.7.u.r.5.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.u.r.5.l.j.I.I.I.I.",
+"x.w.0.8.6.r.e.4.k.h.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.r.e.4.k.h.p.f.I.I.I.",
+"q.9.6.y.t.4.k.g.a.f.s.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.t.4.k.g.a.f.s.#.+.I.I.",
+"7.u.t.5.l.g.a.i.d.#.+.%.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.5.l.g.a.i.d.#.+.%.X.| I.",
+"r.e.l.j.h.p.d.$. at .%.X. .} I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.l.j.h.p.d.$. at .%.X. .} :.;.",
+"4.k.h.p.f.s. at .O.o...} >.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.h.p.f.s. at .O.o...} >.-.*.3.",
+"g.a.f.s.#.+.o...| { -.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.f.s.#.+.o...| { -.=.&.1.<.",
+"i.d.$.+.%.X.| { :.;.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.$.+.%.X.| { :.;.&.2.,.` [ ",
+"$. at .O.X. .} >.;.*.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.O.X. .} >.;.*.3.,.` ) ] ^ ",
+"O.o...} >.-.=.3.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I...} >.-.=.3.1.<.) ] / ~ ( ",
+"..| { -.=.&.2.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.{ -.=.&.2.<._ [ ' ~ Q T I ",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.N.m.C.B.v.x.n.q.9.7.u.r.e.4.k.j.h.p.f.s.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.C.B.v.x.n.q.9.8.6.y.t.5.l.j.h.p.f.s.#.+.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.b.c.                                O.o.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.z.w.                                X. .I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.q.9.                                } { I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.8.6.                                :.;.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.y.t.                                =.&.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.e.4.                                2.1.I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.l.j.                                <._ I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.h.p.                                ) ] I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.i.d.                                / ^ I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.s.#.                                ! ( I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.+.%.                                T U I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I.o...| { :.;.=.&.2.,.` ) ] / ~ Q T U P L I.I.I.I.I.I.I.I.I.I.I.I.I.I.",
+"I.I.I.I.I.I.I.I.I.I.I.I.I.I. .} >.-.=.&.2.,.` ) [ ' ^ ! ( Y I L W R I.I.I.I.I.I.I.I.I.I.I.I.I.I."
+};
+/* XPM */
+static char *cdpaused[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 98 2",
+"   c Black",
+".  c Cyan",
+"X  c #fb0f5f",
+"o  c #fb125e",
+"O  c #fa145d",
+"+  c #fa175c",
+"@  c #f9195b",
+"#  c #f91c5a",
+"$  c #f81e59",
+"%  c #fd0762",
+"&  c #fc0a61",
+"*  c #fc0c60",
+"=  c #f72457",
+"-  c #f72656",
+";  c #f62955",
+":  c #f62b54",
+">  c #f52e53",
+",  c #f82158",
+"<  c #f3384f",
+"1  c #f33b4e",
+"2  c #f23d4d",
+"3  c #f53052",
+"4  c #f43351",
+"5  c #f43650",
+"6  c #eb5f3f",
+"7  c #eb613e",
+"8  c #ea643d",
+"9  c #ea673c",
+"0  c #e9693b",
+"q  c #e96c3a",
+"w  c #e86e39",
+"e  c #e77337",
+"r  c #e77636",
+"t  c #e67935",
+"y  c #e67b34",
+"u  c #e57e33",
+"i  c #e87138",
+"p  c #ef4d47",
+"a  c #ef4f46",
+"s  c #ee5245",
+"d  c #ed5742",
+"f  c #ee5544",
+"g  c #ec5a41",
+"h  c #ec5c40",
+"j  c #f1424b",
+"k  c #f2404c",
+"l  c #f1454a",
+"z  c #f04849",
+"x  c #f04a48",
+"c  c #df9d27",
+"v  c #df9f26",
+"b  c #dbaf1f",
+"n  c #dbb11e",
+"m  c #dab41d",
+"M  c #dab61c",
+"N  c #d9b91b",
+"B  c #d9bc1a",
+"V  c #d8be19",
+"C  c #dea225",
+"Z  c #dda723",
+"A  c #dea424",
+"S  c #ddaa21",
+"D  c #dcac20",
+"F  c #e3882f",
+"G  c #e38b2e",
+"H  c #e28d2d",
+"J  c #e58032",
+"K  c #e48331",
+"L  c #e48530",
+"P  c #e1922b",
+"I  c #e2902c",
+"U  c #e1952a",
+"Y  c #e09729",
+"T  c #e09a28",
+"R  c #d7c317",
+"E  c #d7c616",
+"W  c #d6c815",
+"Q  c #d6cb14",
+"!  c #d5ce13",
+"~  c #d8c118",
+"^  c #d3d80f",
+"/  c #d3da0e",
+"(  c #d2dd0d",
+")  c #d5d012",
+"_  c #d4d311",
+"`  c #d4d510",
+"'  c #cfec07",
+"]  c #cfef06",
+"[  c #cef205",
+"{  c #cdf703",
+"}  c #cef404",
+"|  c #ccfc01",
+" . c #d1e20b",
+".. c #d2e00c",
+"X. c #d1e50a",
+"o. c #d0e709",
+"O. c #d0ea08",
+"+. c None",
+/* pixels */
+"| { } ] ' O.X. .( / ^ _ ) ! W E ~ V B M m b D S A C c T Y P I H F L J u y r e w q 0 8 7 h g d s ",
+"} [ ' O.o. .../ ^ ` ) ! Q E R V B N m n D S Z C v T Y U I H G L K u y t e i q 0 9 7 6 g d f a p ",
+"] O.                                                                                        x z ",
+"o.X.                                                                                        j k ",
+" ...                                                                                        2 1 ",
+"( ^                                                                                         < 4 ",
+"` _                                                                                         3 > ",
+") Q                                                                                         : - ",
+"W E                                                                                         = , ",
+"R ~                                                                                         $ # ",
+"V N                                                                                         @ O ",
+"M m                                                                                         o X ",
+"n D                                                                                         * % ",
+"S Z A v c Y U P H G L K J y t e i w 0 9 8 6 h d f s p x l j k 1 < 4 3 > ; - = $ # + O o * & % % ",
+"A C c T U P I G F K J u t r i w q 9 8 7 h g f s a x z j k 2 < 5 3 > : - = , # @ O o X & % % % % ",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"X...^ _ Q E V +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.} ] o...^ ) W ~ N n S C T ",
+"/ _ ! E ~ N m D +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.o.../ _ Q R B m D A c U H ",
+") W R B M b S C c +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+./ _ Q R V M b Z v Y I F J ",
+"R V M n S A c Y I G +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.! E V M b Z C T P G K y e ",
+"N n D A v Y P G L u t +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.~ N n S C T P H L u r w 9 ",
+"b Z C T U H F J y e w 9 +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.m D A c U H L u r i 0 7 g ",
+"C c U I F K y r w 0 7 h f +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.Z v Y I F J t i 0 7 h f p ",
+"Y I G K u r i 0 8 h d a +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.T P G K y e q 8 h f p l k ",
+"H L J t e q 9 6 g s p +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.H L u r w 9 6 d a z k < 3 ",
+"J y e w 9 7 g f p z +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.J t i 0 7 g s x j 1 4 : = ",
+"r w 0 7 h f a z j +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.e q 8 h f p l 2 5 > - $ + ",
+"q 8 6 d s x l 2 +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.8 6 d a z k < 3 ; , @ o & ",
+"6 g s p l k < +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.d a z j 1 4 : = # O * % % ",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.{ [ ' o.../ ` ! W R V M n D Z v T U H F +.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"} ] +.+.+.+.+.+.N n S C T +.' o. .( ` ) Q E V N m D Z C c U I G L u +.} ] o...^ +.+.+.+.+.+.C T ",
+"o...+.+.+.+.+.m D A c U H +.X.(                                 y e +.o.../ _ Q R +.+.+.+.+.U H ",
+"/ _ +.+.+.+.b Z v Y I F J +./ _                                 i 0 +./ _ Q R V M b +.+.+.+.F J ",
+"! E +.+.+.Z C T P G K y e +.) W                                 9 6 +.! E V M b Z C T +.+.+.y e ",
+"~ N +.+.C T P H L u r w 9 +.E V                                 h d +.~ N n S C T P H L +.+.w 9 ",
+"m D +.c U H L u r i 0 7 g +.B M                                 s p +.m D A c U H L u r i +.7 g ",
+"Z v Y I F J t i 0 7 h f p +.n D                                 z j +.Z v Y I F J t i 0 7 h f p ",
+"T P +.K y e q 8 h f p l k +.Z C                                 2 < +.T P G K y e q 8 h f +.l k ",
+"H L +.+.w 9 6 d a z k < 3 +.c Y                                 4 > +.H L u r w 9 6 d a +.+.< 3 ",
+"J t +.+.+.g s x j 1 4 : = +.P H                                 ; = +.J t i 0 7 g s x +.+.+.: = ",
+"e q +.+.+.+.l 2 5 > - $ + +.F K                                 $ @ +.e q 8 h f p l +.+.+.+.$ + ",
+"8 6 +.+.+.+.+.3 ; , @ o & +.u t                                 O X +.8 6 d a z k +.+.+.+.+.o & ",
+"d a +.+.+.+.+.+.# O * % % +.e w 0 7 h d s x l k < 4 > ; , # + o & % +.d a z j 1 +.+.+.+.+.+.% % ",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.0 8 6 d s p z k 1 5 3 ; = $ + o * % % a +.+.+.+.+.+.+.+.+.+.+.+.+.+."
+};
+/* XPM */
+static char *cdplaying[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 107 2",
+"   c Black",
+".  c #001eff",
+"X  c #002fff",
+"o  c #0041fe",
+"O  c #0054ff",
+"+  c #0064ff",
+"@  c #0077ff",
+"#  c #008aff",
+"$  c #009aff",
+"%  c #00adff",
+"&  c Cyan",
+"*  c #fb0f5f",
+"=  c #fb125e",
+"-  c #fa145d",
+";  c #fa175c",
+":  c #f9195b",
+">  c #f91c5a",
+",  c #f81e59",
+"<  c #fd0762",
+"1  c #fc0a61",
+"2  c #fc0c60",
+"3  c #f72457",
+"4  c #f72656",
+"5  c #f62955",
+"6  c #f62b54",
+"7  c #f52e53",
+"8  c #f82158",
+"9  c #f3384f",
+"0  c #f33b4e",
+"q  c #f23d4d",
+"w  c #f53052",
+"e  c #f43351",
+"r  c #f43650",
+"t  c #eb5f3f",
+"y  c #eb613e",
+"u  c #ea643d",
+"i  c #ea673c",
+"p  c #e9693b",
+"a  c #e96c3a",
+"s  c #e86e39",
+"d  c #e77337",
+"f  c #e77636",
+"g  c #e67935",
+"h  c #e67b34",
+"j  c #e57e33",
+"k  c #e87138",
+"l  c #ef4d47",
+"z  c #ef4f46",
+"x  c #ee5245",
+"c  c #ed5742",
+"v  c #ee5544",
+"b  c #ec5a41",
+"n  c #ec5c40",
+"m  c #f1424b",
+"M  c #f2404c",
+"N  c #f1454a",
+"B  c #f04849",
+"V  c #f04a48",
+"C  c #df9d27",
+"Z  c #df9f26",
+"A  c #dbaf1f",
+"S  c #dbb11e",
+"D  c #dab41d",
+"F  c #dab61c",
+"G  c #d9b91b",
+"H  c #d9bc1a",
+"J  c #d8be19",
+"K  c #dea225",
+"L  c #dda723",
+"P  c #dea424",
+"I  c #ddaa21",
+"U  c #dcac20",
+"Y  c #e3882f",
+"T  c #e38b2e",
+"R  c #e28d2d",
+"E  c #e58032",
+"W  c #e48331",
+"Q  c #e48530",
+"!  c #e1922b",
+"~  c #e2902c",
+"^  c #e1952a",
+"/  c #e09729",
+"(  c #e09a28",
+")  c #d7c317",
+"_  c #d7c616",
+"`  c #d6c815",
+"'  c #d6cb14",
+"]  c #d5ce13",
+"[  c #d8c118",
+"{  c #d3d80f",
+"}  c #d3da0e",
+"|  c #d2dd0d",
+" . c #d5d012",
+".. c #d4d311",
+"X. c #d4d510",
+"o. c #cfec07",
+"O. c #cfef06",
+"+. c #cef205",
+"@. c #cdf703",
+"#. c #cef404",
+"$. c #ccfc01",
+"%. c #d1e20b",
+"&. c #d2e00c",
+"*. c #d1e50a",
+"=. c #d0e709",
+"-. c #d0ea08",
+";. c None",
+/* pixels */
+"$. at .#.O.o.-.*.%.| } { .. .] ` _ [ J H F D A U I P K C ( / ! ~ R Y Q E j h f d s a p u y n b c x ",
+"#.+.o.-.=.%.&.} { X. .] ' _ ) J H G D S U I L K Z ( / ^ ~ R T Q W j h g d k a p i y t b c v z l ",
+"O.-.                                                                                        V B ",
+"=.*.                                                                                        m M ",
+"%.&.                                                                                        q 0 ",
+"| {                                                                                         9 e ",
+"X...                                                                                        w 7 ",
+" .'                                                                                         6 4 ",
+"` _                                                                                         3 8 ",
+") [                                                                                         , > ",
+"J G                                                                                         : - ",
+"F D                                                                                         = * ",
+"S U                                                                                         2 < ",
+"I L P Z C / ^ ! R T Q W E h g d k s p i u t n c v x l V N m M 0 9 e w 7 5 4 3 , > ; - = 2 1 < < ",
+"P K C ( ^ ! ~ T Y W E j g f k s a i u y n b v x z V B m M q 9 r w 7 6 4 3 8 > : - = * 1 < < < < ",
+";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.",
+";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.",
+"#.O.=.&.{  .` [ G S I K ( ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.#.O.=.&.{  .` [ G S I K ( ",
+"=.&.} ..' ) % D U P C ^ R ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.=.&.} ..' ) H D U P C ^ R ",
+"} ..' ) J F % L Z / ~ Y E ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.} ..' ) J F A L Z / ~ Y E ",
+"] _ J F A L $ ( ! T W h d ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.] _ J F A L K ( ! T W h d ",
+"[ G S I K ( # R Q j f s i ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.[ G S I K ( ! R Q j f s i ",
+"D U P C ^ R @ j f k p y b ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.D U P C ^ R Q j f k p y b ",
+"L Z / ~ Y E + k p y n v l ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.L Z / ~ Y E g k p y n v l ",
+"( ! T W h d O u n v l N M ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.( ! T W h d a u n v l N M ",
+"R Q j f s i o c z B M 9 w ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.R Q j f s i t c z B M 9 w ",
+"E g k p y b X V m 0 e 6 3 ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.E g k p y b x V m 0 e 6 3 ",
+"d a u n v l . q r 7 4 , ; ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.d a u n v l N q r 7 4 , ; ",
+"u t c z B M . w 5 8 : = 1 ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.u t c z B M 9 w 5 8 : = 1 ",
+"c z B m 0 e 6 3 > - 2 < < ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.c z B m 0 e 6 3 > - 2 < < ",
+";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.",
+";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.",
+";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.",
+";.;.;.;.;.;.;.;.;.;.;.;.;.;. at .+.o.=.&.} X.] ` ) J F S U L Z ( ^ R Y ;.;.;.;.;.;.;.;.;.;.;.;.;.;.",
+"#.O.;.;.;.;.;.;.G S I K ( ;.o.=.%.| X. .' _ J G D U L K C ^ ~ T Q j ;.#.O.=.&.{ ;.;.;.;.;.;.K ( ",
+"=.&.;.;.;.;.;.D U P C ^ R ;.*.|                                 h d ;.=.&.} ..' ) ;.;.;.;.;.^ R ",
+"} ..;.;.;.;.A L Z / ~ Y E ;.} ..                                k p ;.} ..' ) J F A ;.;.;.;.Y E ",
+"] _ ;.;.;.L K ( ! T W h d ;. .`                                 i t ;.] _ J F A L K ( ;.;.;.h d ",
+"[ G ;.;.K ( ! R Q j f s i ;._ J                                 n c ;.[ G S I K ( ! R Q ;.;.s i ",
+"D U ;.C ^ R Q j f k p y b ;.H F                                 x l ;.D U P C ^ R Q j f k ;.y b ",
+"L Z / ~ Y E g k p y n v l ;.S U                                 B m ;.L Z / ~ Y E g k p y n v l ",
+"( ! ;.W h d a u n v l N M ;.L K                                 q 9 ;.( ! T W h d a u n v ;.N M ",
+"R Q ;.;.s i t c z B M 9 w ;.C /                                 e 7 ;.R Q j f s i t c z ;.;.9 w ",
+"E g ;.;.;.b x V m 0 e 6 3 ;.! R                                 5 3 ;.E g k p y b x V ;.;.;.6 3 ",
+"d a ;.;.;.;.N q r 7 4 , ; ;.Y W                                 , : ;.d a u n v l N ;.;.;.;., ; ",
+"u t ;.;.;.;.;.w 5 8 : = 1 ;.j g                                 - * ;.u t c z B M ;.;.;.;.;.= 1 ",
+"c z ;.;.;.;.;.;.> - 2 < < ;.d s p y n c x V N M 9 e 7 5 8 > ; = 1 < ;.c z B m 0 ;.;.;.;.;.;.< < ",
+";.;.;.;.;.;.;.;.;.;.;.;.;.;.p u t c x l B M 0 r w 5 3 , ; = 2 < < z ;.;.;.;.;.;.;.;.;.;.;.;.;.;."
+};
+/* XPM */
+static char *cdstopped[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 98 2",
+"   c Black",
+".  c Cyan",
+"X  c #fb0f5f",
+"o  c #fb125e",
+"O  c #fa145d",
+"+  c #fa175c",
+"@  c #f9195b",
+"#  c #f91c5a",
+"$  c #f81e59",
+"%  c #fd0762",
+"&  c #fc0a61",
+"*  c #fc0c60",
+"=  c #f72457",
+"-  c #f72656",
+";  c #f62955",
+":  c #f62b54",
+">  c #f52e53",
+",  c #f82158",
+"<  c #f3384f",
+"1  c #f33b4e",
+"2  c #f23d4d",
+"3  c #f53052",
+"4  c #f43351",
+"5  c #f43650",
+"6  c #eb5f3f",
+"7  c #eb613e",
+"8  c #ea643d",
+"9  c #ea673c",
+"0  c #e9693b",
+"q  c #e96c3a",
+"w  c #e86e39",
+"e  c #e77337",
+"r  c #e77636",
+"t  c #e67935",
+"y  c #e67b34",
+"u  c #e57e33",
+"i  c #e87138",
+"p  c #ef4d47",
+"a  c #ef4f46",
+"s  c #ee5245",
+"d  c #ed5742",
+"f  c #ee5544",
+"g  c #ec5a41",
+"h  c #ec5c40",
+"j  c #f1424b",
+"k  c #f2404c",
+"l  c #f1454a",
+"z  c #f04849",
+"x  c #f04a48",
+"c  c #df9d27",
+"v  c #df9f26",
+"b  c #dbaf1f",
+"n  c #dbb11e",
+"m  c #dab41d",
+"M  c #dab61c",
+"N  c #d9b91b",
+"B  c #d9bc1a",
+"V  c #d8be19",
+"C  c #dea225",
+"Z  c #dda723",
+"A  c #dea424",
+"S  c #ddaa21",
+"D  c #dcac20",
+"F  c #e3882f",
+"G  c #e38b2e",
+"H  c #e28d2d",
+"J  c #e58032",
+"K  c #e48331",
+"L  c #e48530",
+"P  c #e1922b",
+"I  c #e2902c",
+"U  c #e1952a",
+"Y  c #e09729",
+"T  c #e09a28",
+"R  c #d7c317",
+"E  c #d7c616",
+"W  c #d6c815",
+"Q  c #d6cb14",
+"!  c #d5ce13",
+"~  c #d8c118",
+"^  c #d3d80f",
+"/  c #d3da0e",
+"(  c #d2dd0d",
+")  c #d5d012",
+"_  c #d4d311",
+"`  c #d4d510",
+"'  c #cfec07",
+"]  c #cfef06",
+"[  c #cef205",
+"{  c #cdf703",
+"}  c #cef404",
+"|  c #ccfc01",
+" . c #d1e20b",
+".. c #d2e00c",
+"X. c #d1e50a",
+"o. c #d0e709",
+"O. c #d0ea08",
+"+. c None",
+/* pixels */
+"| { } ] ' O.X. .( / ^ _ ) ! W E ~ V B M m b D S A C c T Y P I H F L J u y r e w q 0 8 7 h g d s ",
+"} [ ' O.o. .../ ^ ` ) ! Q E R V B N m n D S Z C v T Y U I H G L K u y t e i q 0 9 7 6 g d f a p ",
+"] O.                                                                                        x z ",
+"o.X.                                                                                        j k ",
+" ...                                                                                        2 1 ",
+"( ^                                                                                         < 4 ",
+"` _                                                                                         3 > ",
+") Q                                                                                         : - ",
+"W E                                                                                         = , ",
+"R ~                                                                                         $ # ",
+"V N                                                                                         @ O ",
+"M m                                                                                         o X ",
+"n D                                                                                         * % ",
+"S Z A v c Y U P H G L K J y t e i w 0 9 8 6 h d f s p x l j k 1 < 4 3 > ; - = $ # + O o * & % % ",
+"A C c T U P I G F K J u t r i w q 9 8 7 h g f s a x z j k 2 < 5 3 > : - = , # @ O o X & % % % % ",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"X...^ _ Q E V +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.} ] o...^ ) W ~ N n S C T ",
+"/ _ ! E ~ N m D +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.o.../ _ Q R B m D A c U H ",
+") W R B M b S C c +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+./ _ Q R V M b Z v Y I F J ",
+"R V M n S A c Y I G +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.! E V M b Z C T P G K y e ",
+"N n D A v Y P G L u t +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.~ N n S C T P H L u r w 9 ",
+"b Z C T U H F J y e w 9 +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.m D A c U H L u r i 0 7 g ",
+"C c U I F K y r w 0 7 h f +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.Z v Y I F J t i 0 7 h f p ",
+"Y I G K u r i 0 8 h d a +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.P G K y e q 8 h f p l +.",
+"H L J t e q 9 6 g s p +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.u r w 9 6 d a z k +.+.",
+"J y e w 9 7 g f p z +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.0 7 g s x j 1 +.+.+.",
+"r w 0 7 h f a z j +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.f p l 2 5 +.+.+.+.",
+"q 8 6 d s x l 2 +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.k < 3 +.+.+.+.+.",
+"6 g s p l k < +.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.: +.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.{ [ ' o.../ ` ! W R V M n D Z v T U H F +.+.+.+.+.+.+.+.+.+.+.+.+.+.",
+"} ] +.+.+.+.+.+.N n S C T +.' o. .( ` ) Q E V N m D Z C c U I G L u +.} ] o...^ +.+.+.+.+.+.C T ",
+"o...+.+.+.+.+.m D A c U H +.X.(                                 y e +.o.../ _ Q R +.+.+.+.+.U H ",
+"/ _ +.+.+.+.b Z v Y I F J +./ _                                 i 0 +./ _ Q R V M b +.+.+.+.F J ",
+"! E +.+.+.Z C T P G K y e +.) W                                 9 6 +.! E V M b Z C T +.+.+.y e ",
+"~ N +.+.C T P H L u r w 9 +.E V                                 h d +.~ N n S C T P H L +.+.w 9 ",
+"m D +.c U H L u r i 0 7 g +.B M                                 s p +.m D A c U H L u r i +.7 g ",
+"Z v Y I F J t i 0 7 h f p +.n D                                 z j +.Z v Y I F J t i 0 7 h f p ",
+"T P +.K y e q 8 h f p l k +.Z C                                 2 < +.T P G K y e q 8 h f +.l k ",
+"H L +.+.w 9 6 d a z k < 3 +.c Y                                 4 > +.H L u r w 9 6 d a +.+.< 3 ",
+"J t +.+.+.g s x j 1 4 : = +.P H                                 ; = +.J t i 0 7 g s x +.+.+.: = ",
+"e q +.+.+.+.l 2 5 > - $ + +.F K                                 $ @ +.e q 8 h f p l +.+.+.+.$ + ",
+"8 6 +.+.+.+.+.3 ; , @ o & +.u t                                 O X +.8 6 d a z k +.+.+.+.+.o & ",
+"d a +.+.+.+.+.+.# O * % % +.e w 0 7 h d s x l k < 4 > ; , # + o & % +.d a z j 1 +.+.+.+.+.+.% % ",
+"+.+.+.+.+.+.+.+.+.+.+.+.+.+.0 8 6 d s p z k 1 5 3 ; = $ + o * % % a +.+.+.+.+.+.+.+.+.+.+.+.+.+."
+};
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/blue.style b/XPM/blue.style
new file mode 100644
index 0000000..ec5d677
--- /dev/null
+++ b/XPM/blue.style
@@ -0,0 +1,327 @@
+/*
+ * This is a WMRack style
+ *
+ * Copyright 1997 by Heiko Wagner <hwagner at fga.de>
+ */
+/* XPM */
+static char *cdnodisc[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #0099ff",
+"o c Red",
+"O c #fe8000",
+"+ c #fe8600",
+"@ c #fe8c00",
+"# c #fe9200",
+"$ c #fe9800",
+"% c #fe9e00",
+"& c #fea400",
+"* c #feaa00",
+"= c #feb000",
+"- c #feb600",
+"; c #febc00",
+": c #fec200",
+"> c #fec800",
+", c #fece00",
+"< c #fed400",
+"1 c #feda00",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"X.............................................X.",
+"...............................................X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+".XXXXXXXXXXXX3333333333333333333333.XXXXXXXXXXXX",
+"X.XXXXXXXXXX.3333333333333333333333X.XXXXXXXXXX.",
+"XX21<,>:;-=..3333333333333333333333XX221<,>;-=..",
+"XX1....;-=*..3333333333333333333333XX21<,.;--*..",
+"XX<.22,.=*&..3333333333333333333333XX1<,.,.=*&..",
+"XX,.2,:=.%%..3333333333333333333333XX<,.,:=.&$..",
+"XX>.,:=&#.$..3333333333333333333333XX,.,:=&#.#..",
+"XX:.:=&#.$#..3333333333333333333333XX>.:=&#+. at ..",
+"XX;.-&#.$#@..3333333333333333333333XX;.-&#+O.+..",
+"XX-....$#@+..3333333333333333333333XX-.......O..",
+"XX=*&%$#@+O..3333333333333333333333XX=*&$#@+OO..",
+"X..........X.3333333333333333333333X..........X.",
+"............X3333333333333333333333............X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"33333333333333.XXXXXXXXXXXXXXXXXXX33333333333333",
+"33333333333333X.XXXXXXXXXXXXXXXXX.33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333XX                ..33333333333333",
+"33333333333333X.................X.33333333333333",
+"33333333333333...................X33333333333333"
+};
+/* XPM */
+static char *cdpaused[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #0099ff",
+"o c Red",
+"O c #fe8000",
+"+ c #fe8600",
+"@ c #fe8c00",
+"# c #fe9200",
+"$ c #fe9800",
+"% c #fe9e00",
+"& c #fea400",
+"* c #feaa00",
+"= c #feb000",
+"- c #feb600",
+"; c #febc00",
+": c #fec200",
+"> c #fec800",
+", c #fece00",
+"< c #fed400",
+"1 c #feda00",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"X.............................................X.",
+"...............................................X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+".XXXXXXXXXXXX3333333333333333333333.XXXXXXXXXXXX",
+"X.XXXXXXXXXX.3333333333333333333333X.XXXXXXXXXX.",
+"XX21<,>:;-=..3333333333333333333333XX221<,>;-=..",
+"XX1....;-=*..3333333333333333333333XX2.......*..",
+"XX<.22,.=*&..3333333333333333333333XX1.,>;-=.&..",
+"XX,.2,:=.%%..3333333333333333333333XX<.>;-=*.$..",
+"XX>.,:=&#.$..3333333333333333333333XX,.;-=*&.#..",
+"XX:.:=&#.$#..3333333333333333333333XX>.-=*&$. at ..",
+"XX;.-&#.$#@..3333333333333333333333XX;.=*&$#.+..",
+"XX-....$#@+..3333333333333333333333XX-.......O..",
+"XX=*&%$#@+O..3333333333333333333333XX=*&$#@+OO..",
+"X..........X.3333333333333333333333X..........X.",
+"............X3333333333333333333333............X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"33333333333333.XXXXXXXXXXXXXXXXXXX33333333333333",
+".XXXXXXXXXXXX3X.XXXXXXXXXXXXXXXXX.3.XXXXXXXXXXXX",
+"X.XXXXXXXXXX.3XX                ..3X.XXXXXXXXXX.",
+"XX221<,>;-=..3XX                ..3XX221<,>;-=..",
+"XX2.<,>...*..3XX                ..3XX2...>;-.*..",
+"XX1.,>.-=.&..3XX                ..3XX1.,>.-=.&..",
+"XX<.>.-=*.$..3XX                ..3XX<.>;-.*.$..",
+"XX,..-=*&.#..3XX                ..3XX,.;-=*..#..",
+"XX>.-.*&$. at ..3XX                ..3XX>.-=*.$. at ..",
+"XX;.=*.$#.+..3XX                ..3XX;.=*.$#.+..",
+"XX-.*&$...O..3XX                ..3XX-...$#@.O..",
+"XX=*&$#@+OO..3XX                ..3XX=*&$#@+OO..",
+"X..........X.3XX                ..3X..........X.",
+"............X3X.................X.3............X",
+"33333333333333...................X33333333333333"
+};
+/* XPM */
+static char *cdplaying[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #0099ff",
+"o c Red",
+"O c #fe8000",
+"+ c #fe8600",
+"@ c #fe8c00",
+"# c #fe9200",
+"$ c #fe9800",
+"% c #fe9e00",
+"& c #fea400",
+"* c #feaa00",
+"= c #feb000",
+"- c #feb600",
+"; c #febc00",
+": c #fec200",
+"> c #fec800",
+", c #fece00",
+"< c #fed400",
+"1 c #feda00",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"X.............................................X.",
+"...............................................X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+".XXXXXXXXXXXX3333333333333333333333.XXXXXXXXXXXX",
+"X.XXXXXXXXXX.3333333333333333333333X.XXXXXXXXXX.",
+"XX221<,>;-=..3333333333333333333333XX21<,>:;-=..",
+"XX2...>...*..3333333333333333333333XX1.......*..",
+"XX1.,.;.=.&..3333333333333333333333XX<.>:;-=.&..",
+"XX<.>.-.*.$..3333333333333333333333XX,.:;-=*.%..",
+"XX,.;.=.&.#..3333333333333333333333XX>.;-=*&.$..",
+"XX>.-.*.$. at ..3333333333333333333333XX:.-=*&%.#..",
+"XX;.=.&.#.+..3333333333333333333333XX;.=*&%$. at ..",
+"XX-...$...O..3333333333333333333333XX-.......+..",
+"XX=*&$#@+OO..3333333333333333333333XX=*&%$#@+O..",
+"X..........X.3333333333333333333333X..........X.",
+"............X3333333333333333333333............X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"33333333333333.XXXXXXXXXXXXXXXXXXX33333333333333",
+".XXXXXXXXXXXX3X.XXXXXXXXXXXXXXXXX.3.XXXXXXXXXXXX",
+"X.XXXXXXXXXX.3XX                ..3X.XXXXXXXXXX.",
+"XX221<,>;-=..3XX                ..3XX221<,>;-=..",
+"XX2.<,>...*..3XX                ..3XX2...>;-.*..",
+"XX1.,>.-=.&..3XX                ..3XX1.,>.-=.&..",
+"XX<.>.-=*.$..3XX                ..3XX<.>;-.*.$..",
+"XX,..-=*&.#..3XX                ..3XX,.;-=*..#..",
+"XX>.-.*&$. at ..3XX                ..3XX>.-=*.$. at ..",
+"XX;.=*.$#.+..3XX                ..3XX;.=*.$#.+..",
+"XX-.*&$...O..3XX                ..3XX-...$#@.O..",
+"XX=*&$#@+OO..3XX                ..3XX=*&$#@+OO..",
+"X..........X.3XX                ..3X..........X.",
+"............X3X.................X.3............X",
+"33333333333333...................X33333333333333"
+};
+/* XPM */
+static char *cdstopped[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #0099ff",
+"o c Red",
+"O c #fe8000",
+"+ c #fe8600",
+"@ c #fe8c00",
+"# c #fe9200",
+"$ c #fe9800",
+"% c #fe9e00",
+"& c #fea400",
+"* c #feaa00",
+"= c #feb000",
+"- c #feb600",
+"; c #febc00",
+": c #fec200",
+"> c #fec800",
+", c #fece00",
+"< c #fed400",
+"1 c #feda00",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"XX                                            ..",
+"X.............................................X.",
+"...............................................X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+".XXXXXXXXXXXX3333333333333333333333.XXXXXXXXXXXX",
+"X.XXXXXXXXXX.3333333333333333333333X.XXXXXXXXXX.",
+"XX21<,>:;-=..3333333333333333333333XX21<,>:;-=..",
+"XX1....;-=*..3333333333333333333333XX1.......*..",
+"XX<.22,.=*&..3333333333333333333333XX<.22,:=.&..",
+"XX,.2,:=.%%..3333333333333333333333XX,.2,:=&.%..",
+"XX>.,:=&#.$..3333333333333333333333XX>.,:=&#.$..",
+"XX:.:=&#.$#..3333333333333333333333XX:;.=&#.$#..",
+"XX;.-&#.$#@..3333333333333333333333XX;-=.#.$#@..",
+"XX-....$#@+..3333333333333333333333XX-=*&.$#@+..",
+"XX=*&%$#@+O..3333333333333333333333XX=*&%$#@+O..",
+"X..........X.3333333333333333333333X..........X.",
+"............X3333333333333333333333............X",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"33333333333333.XXXXXXXXXXXXXXXXXXX33333333333333",
+".XXXXXXXXXXXX3X.XXXXXXXXXXXXXXXXX.3.XXXXXXXXXXXX",
+"X.XXXXXXXXXX.3XX                ..3X.XXXXXXXXXX.",
+"XX221<,>;-=..3XX                ..3XX221<,>;-=..",
+"XX2.<,>...*..3XX                ..3XX2...>;-.*..",
+"XX1.,>.-=.&..3XX                ..3XX1.,>.-=.&..",
+"XX<.>.-=*.$..3XX                ..3XX<.>;-.*.$..",
+"XX,..-=*&.#..3XX                ..3XX,.;-=*..#..",
+"XX>.-.*&$. at ..3XX                ..3XX>.-=*.$. at ..",
+"XX;.=*.$#.+..3XX                ..3XX;.=*.$#.+..",
+"XX-.*&$...O..3XX                ..3XX-...$#@.O..",
+"XX=*&$#@+OO..3XX                ..3XX=*&$#@+OO..",
+"X..........X.3XX                ..3X..........X.",
+"............X3X.................X.3............X",
+"33333333333333...................X33333333333333"
+};
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/bluered.style b/XPM/bluered.style
new file mode 100644
index 0000000..8a18f90
--- /dev/null
+++ b/XPM/bluered.style
@@ -0,0 +1,1213 @@
+/*
+ * This is a WMRack style
+ *
+ * Copyright 1997 by Heiko Wagner <hwagner at fga.de>
+ */
+/* XPM */
+static char *cdnodisc[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 257 2",
+"   c #040302",
+".  c #353535",
+"X  c Gray24",
+"o  c #7e007f",
+"O  c #7f007e",
+"+  c Gray27",
+"@  c Gray30",
+"#  c #505050",
+"$  c #555555",
+"%  c #5d5d5d",
+"&  c Gray40",
+"*  c #6c6c6c",
+"=  c Gray43",
+"-  c Gray44",
+";  c #767676",
+":  c #797979",
+">  c Gray",
+",  c #3f00bf",
+"<  c #1f00df",
+"1  c #0f00ef",
+"2  c #0700f7",
+"3  c #0300fb",
+"4  c #0500f9",
+"5  c #0b00f3",
+"6  c #0900f6",
+"7  c #0a00f4",
+"8  c #0c00f2",
+"9  c #0e00f0",
+"0  c #1700e7",
+"q  c #1300eb",
+"w  c #1100ed",
+"e  c #1000ee",
+"r  c #1200ec",
+"t  c #1500e9",
+"y  c #1400ea",
+"u  c #1600e8",
+"i  c #1b00e3",
+"p  c #1800e6",
+"a  c #1a00e4",
+"s  c #1d00e1",
+"d  c #1c00e2",
+"f  c #1e00e0",
+"g  c #2f00cf",
+"h  c #2700d7",
+"j  c #2300db",
+"k  c #2100dd",
+"l  c #2000de",
+"z  c #2200dc",
+"x  c #2500d9",
+"c  c #2400da",
+"v  c #2600d8",
+"b  c #2b00d3",
+"n  c #2900d5",
+"m  c #2800d6",
+"M  c #2a00d4",
+"N  c #2d00d1",
+"B  c #2c00d2",
+"V  c #2e00d0",
+"C  c #3700c7",
+"Z  c #3300cb",
+"A  c #3100cd",
+"S  c #3000ce",
+"D  c #3200cc",
+"F  c #3500c9",
+"G  c #3400ca",
+"H  c #3600c8",
+"J  c #3b00c3",
+"K  c #3900c5",
+"L  c #3800c6",
+"P  c #3a00c4",
+"I  c #3d00c1",
+"U  c #3c00c2",
+"Y  c #3e00c0",
+"T  c #5f009f",
+"R  c #4f00af",
+"E  c #4700b7",
+"W  c #4300bb",
+"Q  c #4100bd",
+"!  c #4000be",
+"~  c #4200bc",
+"^  c #4500b9",
+"/  c #4400ba",
+"(  c #4600b8",
+")  c #4b00b3",
+"_  c #4900b5",
+"`  c #4800b6",
+"'  c #4a00b4",
+"]  c #4d00b1",
+"[  c #4e00b0",
+"{  c #5700a7",
+"}  c #5300ab",
+"|  c #5100ad",
+" . c #5000ae",
+".. c #5200ac",
+"X. c #5500a9",
+"o. c #5400aa",
+"O. c #5600a8",
+"+. c #5b00a3",
+"@. c #5900a5",
+"#. c #5800a6",
+"$. c #5a00a4",
+"%. c #5d00a1",
+"&. c #5c00a3",
+"*. c #5e00a0",
+"=. c #6e008f",
+"-. c #6f008e",
+";. c #670097",
+":. c #63009b",
+">. c #61009d",
+",. c #60009e",
+"<. c #62009c",
+"1. c #650099",
+"2. c #64009a",
+"3. c #660098",
+"4. c #6a0093",
+"5. c #6b0092",
+"6. c #680095",
+"7. c #690094",
+"8. c #680096",
+"9. c #6d0091",
+"0. c #760087",
+"q. c #770086",
+"w. c #72008b",
+"e. c #73008a",
+"r. c #70008d",
+"t. c #71008c",
+"y. c #740089",
+"u. c #750088",
+"i. c #7a0083",
+"p. c #7b0082",
+"a. c #780085",
+"s. c #790084",
+"d. c #7c0081",
+"f. c #7d0080",
+"g. c #33ff66",
+"h. c #be003f",
+"j. c #bf003e",
+"k. c #9e005f",
+"l. c #9f005e",
+"z. c #8e006f",
+"x. c #8f006e",
+"c. c #860077",
+"v. c #870076",
+"b. c #82007b",
+"n. c #83007a",
+"m. c #80007d",
+"M. c #81007c",
+"N. c #840079",
+"B. c #850078",
+"V. c #8a0073",
+"C. c #8b0072",
+"Z. c #880075",
+"A. c #890074",
+"S. c #8c0071",
+"D. c #8d0070",
+"F. c #960067",
+"G. c #970066",
+"H. c #92006b",
+"J. c #93006a",
+"K. c #90006d",
+"L. c #91006c",
+"P. c #940069",
+"I. c #950068",
+"U. c #9a0063",
+"Y. c #9b0062",
+"T. c #980065",
+"R. c #9c0061",
+"E. c #ae004f",
+"W. c #af004e",
+"Q. c #a60057",
+"!. c #a70056",
+"~. c #a2005b",
+"^. c #a3005a",
+"/. c #a0005d",
+"(. c #a1005c",
+"). c #a40059",
+"_. c #a50058",
+"`. c #aa0053",
+"'. c #ab0052",
+"]. c #a80055",
+"[. c #a90054",
+"{. c #ad0050",
+"}. c #ad0052",
+"|. c #b60047",
+" X c #b70046",
+".X c #b2004b",
+"XX c #b3004a",
+"oX c #b0004d",
+"OX c #b1004c",
+"+X c #b40049",
+"@X c #b50048",
+"#X c #ba0043",
+"$X c #bb0042",
+"%X c #b80045",
+"&X c #b90044",
+"*X c #bc0041",
+"=X c #bd0040",
+"-X c #ce002f",
+";X c #cf002e",
+":X c #c60037",
+">X c #c70036",
+",X c #c2003b",
+"<X c #c3003a",
+"1X c #c1003c",
+"2X c #c40039",
+"3X c #c50038",
+"4X c #ca0033",
+"5X c #cb0032",
+"6X c #c80035",
+"7X c #c90034",
+"8X c #cc0031",
+"9X c #cd0030",
+"0X c #d2002b",
+"qX c #d0002d",
+"wX c #d1002c",
+"eX c #d40029",
+"rX c #d50028",
+"tX c #d70028",
+"yX c #d90027",
+"uX c #da0025",
+"iX c #dc0023",
+"pX c #de0021",
+"aX c #df0020",
+"sX c #e0001f",
+"dX c #e1001e",
+"fX c #e3001c",
+"gX c #e5001a",
+"hX c #e70018",
+"jX c #e90016",
+"kX c #eb0014",
+"lX c #ed0012",
+"zX c #ee0011",
+"xX c #f70007",
+"cX c #f1000e",
+"vX c #f3000c",
+"bX c #f50009",
+"nX c #f4000b",
+"mX c #fb0002",
+"MX c #f90004",
+"NX c Gray51",
+"BX c #868686",
+"VX c #8e8e8e",
+"CX c Gray58",
+"ZX c Gray59",
+"AX c Gray62",
+"SX c Gray63",
+"DX c #a5a5a5",
+"FX c Gray65",
+"GX c #aeaeae",
+"HX c #b6b6b6",
+"JX c #bcbcbc",
+"KX c #bebebe",
+"LX c #c6c6c6",
+"PX c #cecece",
+"IX c Gray84",
+"UX c Gray87",
+"YX c None",
+/* pixels */
+"mXxXvXzXjXgXsXuXtXwX8X6X<Xh.#X at XoX}.!.~.k.T.P.K.C.c.b.f.a.e.-.4.3.<.%.#.o.R ' ( Q U L Z V M x l ",
+"MXbXcXkXhXfXpXyXeX;X4X:X1X*X%XXXE.`._./.Y.G.H.D.A.N.O p.0.t.9.6.2.,.+.O...] ` / , P H A B m j f ",
+"xXvX                                                                                        k d ",
+"bXcX                                                                                        < a ",
+"nXzX                                                                                        s p ",
+"cXlX                                                                                        i u ",
+"cXkX                                                                                        p y ",
+"zXjX                                                                                        u r ",
+"kXhX                                                                                        y e ",
+"jXgX                                                                                        r 9 ",
+"hXfX                                                                                        e 5 ",
+"gXdX                                                                                        9 6 ",
+"fXpX                                                                                        8 2 ",
+"dXiXyX0X9X7X2Xj.$X|.OX{.].^.l.U.I.L.S.v.n.o s.y.r.5.;.:.*. at .X. .) E ~ I K G g b v k s p q 1 7 4 ",
+"aXuXrXqX5X>X,X=X&X+XW.'.Q.(.R.T.J.z.V.B.m.d.q.w.=.7.1.>.&.{ } [ _ ^ ! J C D N n c < i u w 8 6 3 ",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"hXaXrX9X3X=X+X}.).R.P.C.n.YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXeX7X=XOX_.U.z.b.q.5.,.X._ ",
+"aXUXIXPXLXKXHX).R.P.C.n.p.YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX;X<X%X}./.I.GXf.t.;.+.R / ",
+"rXIXPXLXKXHXGXFXP.C.n.p.e.YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX4Xh..X!.Y.GXFXAX9.<.O.' , ",
+"9XPXLX+X}.).FXAXZXn.p.e.4.YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX3X&X{.~.GXFXAXZXVX&.| ^ K ",
+"3XLXKX}.).R.P.ZXVXBXe.4.:.YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXj.+X].GXFXAXs.VXBX> ) ! G ",
+"=XKXHX).R.P.C.n.BX> ; :.+.YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX#XW.GXFXAXm.y.6.> ; = J g ",
+"+XHXGXR.P.C.n.p.e.; = & } YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX at XGXFXAXc.p.-.2.#.= & % M ",
+"}.GXFXP.C.n.p.e.; = & } ' YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXoXFXAXD.M.u.4.T } ` % $ c ",
+").FXAXC.n.p.e.; = & } ' ~ YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX'.AXZXZ.d.r.1.$.[ ~ $ @ < ",
+"R.AXZXn.p.e.; = & } ' ~ P YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX_.ZXVXb.q.5.,.X._ I @ + a ",
+"P.ZXVXBX> ; = & } ' ~ P D YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX/.VXBX> ; = & % $ @ + X t ",
+"C.VXBX> ; = & } ' ~ P D M YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXY.BX> ; = & % $ @ + X . e ",
+"n.p.e.4.:.+.} ' ~ P D M k YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXF.V.o e.8.&.| ^ K V z u 7 ",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXdXyXqX>Xj. XE.Q.k.I.D.N.d.y.5.2.&.} ) W YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXpXeX8X2X$XXX`.~.U.L.A.M.a.r.6.,.#. .E , YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXuXwX                                / J YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXrX9X                                ! C YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXwX7X                                U G YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX-X3X                                L S YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX4X,X                                F B YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX:Xh.                                A n YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX<X#X                                N x YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXj. X                                M k YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX$XXX                                v s YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX XW.                                z a YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX+X'.                                f u YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXoX].l.G.x.c.o 0.9.3.%.X.] / U G b j i r YXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYX}.).R.J.C.b.i.w.7.<.$.| _ Q L S m < 0 1 YXYXYXYXYXYXYXYXYXYXYXYXYXYX"
+};
+/* XPM */
+static char *cdpaused[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 241 2",
+"   c #040302",
+".  c #353535",
+"X  c Gray24",
+"o  c #7e007f",
+"O  c #7f007e",
+"+  c Gray27",
+"@  c #555555",
+"#  c #5d5d5d",
+"$  c Gray40",
+"%  c #6c6c6c",
+"&  c Gray43",
+"*  c #767676",
+"=  c Gray",
+"-  c #3f00bf",
+";  c #1f00df",
+":  c #0f00ef",
+">  c #0700f7",
+",  c #0300fb",
+"<  c #0500f9",
+"1  c #0b00f3",
+"2  c #0900f6",
+"3  c #0a00f4",
+"4  c #0c00f2",
+"5  c #0e00f0",
+"6  c #1700e7",
+"7  c #1300eb",
+"8  c #1100ed",
+"9  c #1000ee",
+"0  c #1200ec",
+"q  c #1400ea",
+"w  c #1600e8",
+"e  c #1b00e3",
+"r  c #1800e6",
+"t  c #1a00e4",
+"y  c #1d00e1",
+"u  c #1c00e2",
+"i  c #1e00e0",
+"p  c #2f00cf",
+"a  c #2300db",
+"s  c #2100dd",
+"d  c #2000de",
+"f  c #2200dc",
+"g  c #2500d9",
+"h  c #2400da",
+"j  c #2600d8",
+"k  c #2b00d3",
+"l  c #2900d5",
+"z  c #2800d6",
+"x  c #2a00d4",
+"c  c #2d00d1",
+"v  c #2c00d2",
+"b  c #2e00d0",
+"n  c #3700c7",
+"m  c #3300cb",
+"M  c #3100cd",
+"N  c #3000ce",
+"B  c #3200cc",
+"V  c #3500c9",
+"C  c #3400ca",
+"Z  c #3600c8",
+"A  c #3b00c3",
+"S  c #3900c5",
+"D  c #3800c6",
+"F  c #3a00c4",
+"G  c #3d00c1",
+"H  c #3c00c2",
+"J  c #5f009f",
+"K  c #4f00af",
+"L  c #4700b7",
+"P  c #4300bb",
+"I  c #4100bd",
+"U  c #4000be",
+"Y  c #4200bc",
+"T  c #4500b9",
+"R  c #4400ba",
+"E  c #4600b8",
+"W  c #4b00b3",
+"Q  c #4900b5",
+"!  c #4800b6",
+"~  c #4a00b4",
+"^  c #4d00b1",
+"/  c #4e00b0",
+"(  c #5700a7",
+")  c #5300ab",
+"_  c #5100ad",
+"`  c #5000ae",
+"'  c #5200ac",
+"]  c #5500a9",
+"[  c #5400aa",
+"{  c #5600a8",
+"}  c #5b00a3",
+"|  c #5900a5",
+" . c #5800a6",
+".. c #5a00a4",
+"X. c #5d00a1",
+"o. c #5c00a3",
+"O. c #5e00a0",
+"+. c #6e008f",
+"@. c #6f008e",
+"#. c #670097",
+"$. c #63009b",
+"%. c #61009d",
+"&. c #60009e",
+"*. c #62009c",
+"=. c #650099",
+"-. c #64009a",
+";. c #660098",
+":. c #6a0093",
+">. c #6b0092",
+",. c #680095",
+"<. c #690094",
+"1. c #6d0091",
+"2. c #760087",
+"3. c #770086",
+"4. c #72008b",
+"5. c #73008a",
+"6. c #70008d",
+"7. c #71008c",
+"8. c #740089",
+"9. c #7a0083",
+"0. c #7b0082",
+"q. c #780085",
+"w. c #790084",
+"e. c #7c0081",
+"r. c #7d0080",
+"t. c #33ff66",
+"y. c #be003f",
+"u. c #bf003e",
+"i. c #9e005f",
+"p. c #9f005e",
+"a. c #8e006f",
+"s. c #8f006e",
+"d. c #860077",
+"f. c #870076",
+"g. c #82007b",
+"h. c #83007a",
+"j. c #80007d",
+"k. c #81007c",
+"l. c #840079",
+"z. c #850078",
+"x. c #8a0073",
+"c. c #8b0072",
+"v. c #890074",
+"b. c #8c0071",
+"n. c #8d0070",
+"m. c #970066",
+"M. c #92006b",
+"N. c #93006a",
+"B. c #90006d",
+"V. c #91006c",
+"C. c #940069",
+"Z. c #950068",
+"A. c #9a0063",
+"S. c #9b0062",
+"D. c #980065",
+"F. c #9c0061",
+"G. c #ae004f",
+"H. c #af004e",
+"J. c #a60057",
+"K. c #a70056",
+"L. c #a2005b",
+"P. c #a3005a",
+"I. c #a0005d",
+"U. c #a1005c",
+"Y. c #a40059",
+"T. c #a50058",
+"R. c #aa0053",
+"E. c #ab0052",
+"W. c #a80055",
+"Q. c #ad0050",
+"!. c #ad0052",
+"~. c #b60047",
+"^. c #b70046",
+"/. c #b3004a",
+"(. c #b0004d",
+"). c #b1004c",
+"_. c #b40049",
+"`. c #b50048",
+"'. c #ba0043",
+"]. c #bb0042",
+"[. c #b80045",
+"{. c #b90044",
+"}. c #bc0041",
+"|. c #bd0040",
+" X c #ce002f",
+".X c #cf002e",
+"XX c #c60037",
+"oX c #c70036",
+"OX c #c2003b",
+"+X c #c3003a",
+"@X c #c1003c",
+"#X c #c40039",
+"$X c #c50038",
+"%X c #ca0033",
+"&X c #cb0032",
+"*X c #c80035",
+"=X c #c90034",
+"-X c #cc0031",
+";X c #cd0030",
+":X c #d2002b",
+">X c #d0002d",
+",X c #d1002c",
+"<X c #d40029",
+"1X c #d50028",
+"2X c #d70028",
+"3X c #d90027",
+"4X c #da0025",
+"5X c #dc0023",
+"6X c #de0021",
+"7X c #df0020",
+"8X c #e0001f",
+"9X c #e1001e",
+"0X c #e3001c",
+"qX c #e5001a",
+"wX c #e70018",
+"eX c #e90016",
+"rX c #eb0014",
+"tX c #ed0012",
+"yX c #ee0011",
+"uX c #f70007",
+"iX c #f1000e",
+"pX c #f3000c",
+"aX c #f50009",
+"sX c #f4000b",
+"dX c #fb0002",
+"fX c #f90004",
+"gX c Gray51",
+"hX c #868686",
+"jX c #8e8e8e",
+"kX c Gray58",
+"lX c Gray59",
+"zX c Gray62",
+"xX c Gray65",
+"cX c #aeaeae",
+"vX c #b6b6b6",
+"bX c #bebebe",
+"nX c #c6c6c6",
+"mX c #cecece",
+"MX c Gray84",
+"NX c Gray87",
+"BX c None",
+/* pixels */
+"dXuXpXyXeXqX8X4X2X,X-X*X+Xy.'.`.(.!.K.L.i.D.C.B.c.d.g.r.q.5. at .:.;.*.X. .[ K ~ E I H D m b x g d ",
+"fXaXiXrXwX0X6X3X<X.X%XXX at X}.[./.G.R.T.I.S.m.M.n.v.l.O 0.2.7.1.,.-.&.} { ' ^ ! R - F Z M v z a i ",
+"uXpX                                                                                        s u ",
+"aXiX                                                                                        ; t ",
+"sXyX                                                                                        y r ",
+"iXtX                                                                                        e w ",
+"iXrX                                                                                        r q ",
+"yXeX                                                                                        w 0 ",
+"rXwX                                                                                        q 9 ",
+"eXqX                                                                                        0 5 ",
+"wX0X                                                                                        9 1 ",
+"qX9X                                                                                        5 2 ",
+"0X6X                                                                                        4 > ",
+"9X5X3X:X;X=X#Xu.].~.).Q.W.P.p.A.Z.V.b.f.h.o w.8.6.>.#.$.O.| ] ` W L Y G S C p k j s y r 7 : 3 < ",
+"7X4X1X>X&XoXOX|.{._.H.E.J.U.F.D.N.a.x.z.j.e.3.4.+.<.=.%.o.( ) / Q T U A n B c l h ; e w 8 4 2 , ",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"wX7X1X;X$X|._.!.Y.F.C.c.h.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXaXrX9X2X-XOX[.G.Y.A.B.d.e.",
+"7XNXMXmXnXbXvXY.F.C.c.h.0.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXrXNXNXNXMXnXbXvXxXzXkXhX4.",
+"1XMXmXnXbXvXcXxXC.c.h.0.5.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX9XNXNXMXnXbXvXxXzXkXhX= ,.",
+";XmXnX_.!.Y.xXzXlXh.0.5.:.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX2XNXMX[.G.Y.A.B.d.e.= * J ",
+"$XnXbX!.Y.F.C.lXjXhX5.:.$.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX-XMXnXG.Y.A.B.d.e.4.* % ] ",
+"|.bXvXY.F.C.c.h.hX= * $.} BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXOXnXbXY.A.B.d.e.4.,.% # ~ ",
+"_.vXcXF.C.c.h.0.5.* & $ ) BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX[.bXvXA.B.d.e.4.,.J # @ U ",
+"!.cXxXC.c.h.0.5.* & $ ) ~ BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXG.vXxXB.d.e.4.,.J ] @ + Z ",
+"Y.xXzXc.h.0.5.* & $ ) ~ Y BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXY.xXzXd.e.4.,.J ] ~ + X v ",
+"F.zXlXh.0.5.* & $ ) ~ Y F BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXA.zXkXe.4.,.J ] ~ U X . f ",
+"C.lXjXhX= * & $ ) ~ Y F B BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXB.kXhX= * % # @ + X . . r ",
+"c.jXhX= * & $ ) ~ Y F B x BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXd.gX= * % # @ + X X . . 5 ",
+"h.0.5.:.$.} ) ~ Y F B x s BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXe.4.,.J ] ~ U Z v f r 5 < ",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBX9X3X>XoXu.^.G.J.i.Z.n.l.e.8.>.-.o.) W P BXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"aXrX9X2X-XOX[.G.Y.A.B.d.e.BX6X<X-X#X]./.R.L.A.V.v.k.q.6.,.&. .` L - BXaXrX9X2X-XOX[.G.Y.A.B.d.e.",
+"rXNXNX-XOX[.bXvXxXzXkXhX4.BX4X,X                                R A BXrXNXNXNXMXnXbXY.A.B.kXhX4.",
+"9XNXNXOX[.bXvXxXzXkXhX= ,.BX1X;X                                U n BX9XNXNXMXnXbXvXxXB.d.hX= ,.",
+"2XNXMX[.bXvXxXB.d.e.= * J BX,X=X                                H C BX2XNXMX[.G.Y.xXzXkXe.= * J ",
+"-XMXnXbXvXxXB.d.e.4.* % ] BX X$X                                D N BX-XMXnXG.Y.A.B.kXhX= * % ] ",
+"OXnXbXvXxXB.d.e.4.,.% # ~ BX%XOX                                V v BXOXnXbXY.A.B.d.e.= * % # ~ ",
+"[.bXvXxXB.d.e.4.,.J # @ U BXXXy.                                M l BX[.bXvXA.B.d.e.4.,.% # @ U ",
+"G.vXxXzXkXe.4.,.J ] @ + Z BX+X'.                                c g BXG.vXxXB.d.e.4.,.% # @ + Z ",
+"Y.xXzXkXhX= ,.J ] ~ + X v BXu.^.                                x s BXY.xXzXd.e.4.,.% # @ + X v ",
+"A.zXkXe.= * % ] ~ U X . f BX]./.                                j y BXA.zXkXe.4.,.% # @ U X . f ",
+"B.kXhX4.,.% # @ + X . . r BX^.H.                                f t BXB.kXhX= * % # @ U Z . . r ",
+"d.gX= ,.J ] @ + X X . . 5 BX_.E.                                i w BXd.gX= * % # @ U Z v . . 5 ",
+"e.4.,.J ] ~ U Z v f r 5 < BX(.W.p.m.s.d.o 2.1.;.X.] ^ R H C k a e 0 BXe.4.,.J ] ~ U Z v f r 5 < ",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBX!.Y.F.N.c.g.9.4.<.*..._ Q I D N z ; 6 : BXBXBXBXBXBXBXBXBXBXBXBXBXBX"
+};
+/* XPM */
+static char *cdplaying[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 235 2",
+"   c #040302",
+".  c #353535",
+"X  c Gray24",
+"o  c #7e007f",
+"O  c #7f007e",
+"+  c Gray27",
+"@  c #555555",
+"#  c #5d5d5d",
+"$  c #6c6c6c",
+"%  c #767676",
+"&  c Gray",
+"*  c #3f00bf",
+"=  c #1f00df",
+"-  c #0f00ef",
+";  c #0700f7",
+":  c #0300fb",
+">  c #0500f9",
+",  c #0b00f3",
+"<  c #0900f6",
+"1  c #0a00f4",
+"2  c #0c00f2",
+"3  c #0e00f0",
+"4  c #1700e7",
+"5  c #1300eb",
+"6  c #1100ed",
+"7  c #1000ee",
+"8  c #1200ec",
+"9  c #1400ea",
+"0  c #1600e8",
+"q  c #1b00e3",
+"w  c #1800e6",
+"e  c #1a00e4",
+"r  c #1d00e1",
+"t  c #1c00e2",
+"y  c #1e00e0",
+"u  c #2f00cf",
+"i  c #2300db",
+"p  c #2100dd",
+"a  c #2000de",
+"s  c #2200dc",
+"d  c #2500d9",
+"f  c #2400da",
+"g  c #2600d8",
+"h  c #2b00d3",
+"j  c #2900d5",
+"k  c #2800d6",
+"l  c #2a00d4",
+"z  c #2d00d1",
+"x  c #2c00d2",
+"c  c #2e00d0",
+"v  c #3700c7",
+"b  c #3300cb",
+"n  c #3100cd",
+"m  c #3000ce",
+"M  c #3200cc",
+"N  c #3500c9",
+"B  c #3400ca",
+"V  c #3600c8",
+"C  c #3b00c3",
+"Z  c #3900c5",
+"A  c #3800c6",
+"S  c #3a00c4",
+"D  c #3d00c1",
+"F  c #3c00c2",
+"G  c #5f009f",
+"H  c #4f00af",
+"J  c #4700b7",
+"K  c #4300bb",
+"L  c #4100bd",
+"P  c #4000be",
+"I  c #4200bc",
+"U  c #4500b9",
+"Y  c #4400ba",
+"T  c #4600b8",
+"R  c #4b00b3",
+"E  c #4900b5",
+"W  c #4800b6",
+"Q  c #4a00b4",
+"!  c #4d00b1",
+"~  c #4e00b0",
+"^  c #5700a7",
+"/  c #5300ab",
+"(  c #5100ad",
+")  c #5000ae",
+"_  c #5200ac",
+"`  c #5500a9",
+"'  c #5400aa",
+"]  c #5600a8",
+"[  c #5b00a3",
+"{  c #5900a5",
+"}  c #5800a6",
+"|  c #5a00a4",
+" . c #5d00a1",
+".. c #5c00a3",
+"X. c #5e00a0",
+"o. c #6e008f",
+"O. c #6f008e",
+"+. c #670097",
+"@. c #63009b",
+"#. c #61009d",
+"$. c #60009e",
+"%. c #62009c",
+"&. c #650099",
+"*. c #64009a",
+"=. c #660098",
+"-. c #6a0093",
+";. c #6b0092",
+":. c #680095",
+">. c #690094",
+",. c #6d0091",
+"<. c #760087",
+"1. c #770086",
+"2. c #72008b",
+"3. c #73008a",
+"4. c #70008d",
+"5. c #71008c",
+"6. c #740089",
+"7. c #7a0083",
+"8. c #7b0082",
+"9. c #780085",
+"0. c #790084",
+"q. c #7c0081",
+"w. c #7d0080",
+"e. c #33ff66",
+"r. c #be003f",
+"t. c #bf003e",
+"y. c #9e005f",
+"u. c #9f005e",
+"i. c #8e006f",
+"p. c #8f006e",
+"a. c #860077",
+"s. c #870076",
+"d. c #82007b",
+"f. c #83007a",
+"g. c #80007d",
+"h. c #81007c",
+"j. c #840079",
+"k. c #850078",
+"l. c #8a0073",
+"z. c #8b0072",
+"x. c #890074",
+"c. c #8c0071",
+"v. c #8d0070",
+"b. c #970066",
+"n. c #92006b",
+"m. c #93006a",
+"M. c #90006d",
+"N. c #91006c",
+"B. c #940069",
+"V. c #950068",
+"C. c #9a0063",
+"Z. c #9b0062",
+"A. c #980065",
+"S. c #9c0061",
+"D. c #ae004f",
+"F. c #af004e",
+"G. c #a60057",
+"H. c #a70056",
+"J. c #a2005b",
+"K. c #a3005a",
+"L. c #a0005d",
+"P. c #a1005c",
+"I. c #a40059",
+"U. c #a50058",
+"Y. c #aa0053",
+"T. c #ab0052",
+"R. c #a80055",
+"E. c #ad0050",
+"W. c #ad0052",
+"Q. c #b60047",
+"!. c #b70046",
+"~. c #b3004a",
+"^. c #b0004d",
+"/. c #b1004c",
+"(. c #b40049",
+"). c #b50048",
+"_. c #ba0043",
+"`. c #bb0042",
+"'. c #b80045",
+"]. c #b90044",
+"[. c #bc0041",
+"{. c #bd0040",
+"}. c #ce002f",
+"|. c #cf002e",
+" X c #c60037",
+".X c #c70036",
+"XX c #c2003b",
+"oX c #c3003a",
+"OX c #c1003c",
+"+X c #c40039",
+"@X c #c50038",
+"#X c #ca0033",
+"$X c #cb0032",
+"%X c #c80035",
+"&X c #c90034",
+"*X c #cc0031",
+"=X c #cd0030",
+"-X c #d2002b",
+";X c #d0002d",
+":X c #d1002c",
+">X c #d40029",
+",X c #d50028",
+"<X c #d70028",
+"1X c #d90027",
+"2X c #da0025",
+"3X c #dc0023",
+"4X c #de0021",
+"5X c #df0020",
+"6X c #e0001f",
+"7X c #e1001e",
+"8X c #e3001c",
+"9X c #e5001a",
+"0X c #e70018",
+"qX c #e90016",
+"wX c #eb0014",
+"eX c #ed0012",
+"rX c #ee0011",
+"tX c #f70007",
+"yX c #f1000e",
+"uX c #f3000c",
+"iX c #f50009",
+"pX c #f4000b",
+"aX c #fb0002",
+"sX c #f90004",
+"dX c Gray51",
+"fX c #868686",
+"gX c Gray58",
+"hX c Gray62",
+"jX c Gray65",
+"kX c #b6b6b6",
+"lX c #bebebe",
+"zX c #c6c6c6",
+"xX c Gray84",
+"cX c Gray87",
+"vX c None",
+/* pixels */
+"aXtXuXrXqX9X6X2X<X:X*X%XoXr._.).^.W.H.J.y.A.B.M.z.a.d.w.9.3.O.-.=.%. .} ' H Q T L F A b c l d a ",
+"sXiXyXwX0X8X4X1X>X|.#X XOX[.'.~.D.Y.U.L.Z.b.n.v.x.j.O 8.<.5.,.:.*.$.[ ] _ ! W Y * S V n x k i y ",
+"tXuX                                                                                        p t ",
+"iXyX                                                                                        = e ",
+"pXrX                                                                                        r w ",
+"yXeX                                                                                        q 0 ",
+"yXwX                                                                                        w 9 ",
+"rXqX                                                                                        0 8 ",
+"wX0X                                                                                        9 7 ",
+"qX9X                                                                                        8 3 ",
+"0X8X                                                                                        7 , ",
+"9X7X                                                                                        3 < ",
+"8X4X                                                                                        2 ; ",
+"7X3X1X-X=X&X+Xt.`.Q./.E.R.K.u.C.V.N.c.s.f.o 0.6.4.;.+. at .X.{ ` ) R J I D Z B u h g p r w 5 - 1 > ",
+"5X2X,X;X$X.XXX{.].(.F.T.G.P.S.A.m.i.l.k.g.q.1.2.o.>.&.#...^ / ~ E U P C v M z j f = q 0 6 2 < : ",
+"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX",
+"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX",
+"iXwX7X<X*XXX'.D.I.C.M.a.q.vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXiXwX7X<X*XXX'.D.I.C.M.a.q.",
+"wXcXcXcXxXzXlXkXjXhXgXfX2.vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXwXcXcXcXxXzXlXkXjXhXgXfX2.",
+"7XcXcXxXzXlXkXjXhXgXfX& :.vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX7XcXcXxXzXlXkXjXhXgXfX& :.",
+"<XcXxX'.D.I.jXM.a.q.& % G vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX<XcXxX'.D.I.C.M.a.q.& % G ",
+"*XxXzXD.I.C.hXa.q.2.% $ ` vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX*XxXzXD.I.C.M.a.q.2.% $ ` ",
+"XXzXlXI.C.M.gXq.2.:.$ # Q vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXXXzXlXI.C.M.a.q.2.:.$ # Q ",
+"'.lXkXC.M.a.fX2.:.G # @ P vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX'.lXkXC.M.a.q.2.:.G # @ P ",
+"D.kXjXM.a.q.& :.G ` @ + V vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXD.kXjXM.a.q.2.:.G ` @ + V ",
+"I.jXhXa.q.2.% G ` Q + X x vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXI.jXhXa.q.2.:.G ` Q + X x ",
+"C.hXgXq.2.:.$ ` Q P X . s vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXC.hXgXq.2.:.G ` Q P X . s ",
+"M.gXfX& % $ # @ + X . . w vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXM.gXfX& % $ # @ + X . . w ",
+"a.dX& % $ # @ + X X . . 3 vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXa.dX& % $ # @ + X X . . 3 ",
+"q.2.:.G ` Q P V x s w 3 > vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXq.2.:.G ` Q P V x s w 3 > ",
+"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX",
+"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX",
+"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX",
+"vXvXvXvXvXvXvXvXvXvXvXvXvXvX7X1X;X.Xt.!.D.G.y.V.v.j.q.6.;.*.../ R K vXvXvXvXvXvXvXvXvXvXvXvXvXvX",
+"iXwX7X<X*XXX'.D.I.C.M.a.q.vX4X>X*X+X`.~.Y.J.C.N.x.h.9.4.:.$.} ) J * vXiXwX7X<X*XXX'.D.I.C.M.a.q.",
+"wXcXcX*XXX'.lXkXjXhXgXfX2.vX2X:X                                Y C vXwXcXcXcXxXzXlXI.C.M.gXfX2.",
+"7XcXcXXX'.lXkXjXhXgXfX& :.vX,X=X                                P v vX7XcXcXxXzXlXkXjXM.a.fX& :.",
+"<XcXxX'.lXkXjXM.a.q.& % G vX:X&X                                F B vX<XcXxX'.D.I.jXhXgXq.& % G ",
+"*XxXzXlXkXjXM.a.q.2.% $ ` vX}. at X                                A m vX*XxXzXD.I.C.M.gXfX& % $ ` ",
+"XXzXlXkXjXM.a.q.2.:.$ # Q vX#XXX                                N x vXXXzXlXI.C.M.a.q.& % $ # Q ",
+"'.lXkXjXM.a.q.2.:.G # @ P vX Xr.                                n j vX'.lXkXC.M.a.q.2.:.$ # @ P ",
+"D.kXjXhXgXq.2.:.G ` @ + V vXoX_.                                z d vXD.kXjXM.a.q.2.:.$ # @ + V ",
+"I.jXhXgXfX& :.G ` Q + X x vXt.!.                                l p vXI.jXhXa.q.2.:.$ # @ + X x ",
+"C.hXgXq.& % $ ` Q P X . s vX`.~.                                g r vXC.hXgXq.2.:.$ # @ P X . s ",
+"M.gXfX2.:.$ # @ + X . . w vX!.F.                                s e vXM.gXfX& % $ # @ P V . . w ",
+"a.dX& :.G ` @ + X X . . 3 vX(.T.                                y 0 vXa.dX& % $ # @ P V x . . 3 ",
+"q.2.:.G ` Q P V x s w 3 > vX^.R.u.b.p.a.o <.,.=. .` ! Y F B h i q 8 vXq.2.:.G ` Q P V x s w 3 > ",
+"vXvXvXvXvXvXvXvXvXvXvXvXvXvXW.I.S.m.z.d.7.2.>.%.| ( E L A m k = 4 - vXvXvXvXvXvXvXvXvXvXvXvXvXvX"
+};
+/* XPM */
+static char *cdstopped[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 241 2",
+"   c #040302",
+".  c #353535",
+"X  c Gray24",
+"o  c #7e007f",
+"O  c #7f007e",
+"+  c Gray27",
+"@  c #555555",
+"#  c #5d5d5d",
+"$  c Gray40",
+"%  c #6c6c6c",
+"&  c Gray43",
+"*  c #767676",
+"=  c Gray",
+"-  c #3f00bf",
+";  c #1f00df",
+":  c #0f00ef",
+">  c #0700f7",
+",  c #0300fb",
+"<  c #0500f9",
+"1  c #0b00f3",
+"2  c #0900f6",
+"3  c #0a00f4",
+"4  c #0c00f2",
+"5  c #0e00f0",
+"6  c #1700e7",
+"7  c #1300eb",
+"8  c #1100ed",
+"9  c #1000ee",
+"0  c #1200ec",
+"q  c #1400ea",
+"w  c #1600e8",
+"e  c #1b00e3",
+"r  c #1800e6",
+"t  c #1a00e4",
+"y  c #1d00e1",
+"u  c #1c00e2",
+"i  c #1e00e0",
+"p  c #2f00cf",
+"a  c #2300db",
+"s  c #2100dd",
+"d  c #2000de",
+"f  c #2200dc",
+"g  c #2500d9",
+"h  c #2400da",
+"j  c #2600d8",
+"k  c #2b00d3",
+"l  c #2900d5",
+"z  c #2800d6",
+"x  c #2a00d4",
+"c  c #2d00d1",
+"v  c #2c00d2",
+"b  c #2e00d0",
+"n  c #3700c7",
+"m  c #3300cb",
+"M  c #3100cd",
+"N  c #3000ce",
+"B  c #3200cc",
+"V  c #3500c9",
+"C  c #3400ca",
+"Z  c #3600c8",
+"A  c #3b00c3",
+"S  c #3900c5",
+"D  c #3800c6",
+"F  c #3a00c4",
+"G  c #3d00c1",
+"H  c #3c00c2",
+"J  c #5f009f",
+"K  c #4f00af",
+"L  c #4700b7",
+"P  c #4300bb",
+"I  c #4100bd",
+"U  c #4000be",
+"Y  c #4200bc",
+"T  c #4500b9",
+"R  c #4400ba",
+"E  c #4600b8",
+"W  c #4b00b3",
+"Q  c #4900b5",
+"!  c #4800b6",
+"~  c #4a00b4",
+"^  c #4d00b1",
+"/  c #4e00b0",
+"(  c #5700a7",
+")  c #5300ab",
+"_  c #5100ad",
+"`  c #5000ae",
+"'  c #5200ac",
+"]  c #5500a9",
+"[  c #5400aa",
+"{  c #5600a8",
+"}  c #5b00a3",
+"|  c #5900a5",
+" . c #5800a6",
+".. c #5a00a4",
+"X. c #5d00a1",
+"o. c #5c00a3",
+"O. c #5e00a0",
+"+. c #6e008f",
+"@. c #6f008e",
+"#. c #670097",
+"$. c #63009b",
+"%. c #61009d",
+"&. c #60009e",
+"*. c #62009c",
+"=. c #650099",
+"-. c #64009a",
+";. c #660098",
+":. c #6a0093",
+">. c #6b0092",
+",. c #680095",
+"<. c #690094",
+"1. c #6d0091",
+"2. c #760087",
+"3. c #770086",
+"4. c #72008b",
+"5. c #73008a",
+"6. c #70008d",
+"7. c #71008c",
+"8. c #740089",
+"9. c #7a0083",
+"0. c #7b0082",
+"q. c #780085",
+"w. c #790084",
+"e. c #7c0081",
+"r. c #7d0080",
+"t. c #33ff66",
+"y. c #be003f",
+"u. c #bf003e",
+"i. c #9e005f",
+"p. c #9f005e",
+"a. c #8e006f",
+"s. c #8f006e",
+"d. c #860077",
+"f. c #870076",
+"g. c #82007b",
+"h. c #83007a",
+"j. c #80007d",
+"k. c #81007c",
+"l. c #840079",
+"z. c #850078",
+"x. c #8a0073",
+"c. c #8b0072",
+"v. c #890074",
+"b. c #8c0071",
+"n. c #8d0070",
+"m. c #970066",
+"M. c #92006b",
+"N. c #93006a",
+"B. c #90006d",
+"V. c #91006c",
+"C. c #940069",
+"Z. c #950068",
+"A. c #9a0063",
+"S. c #9b0062",
+"D. c #980065",
+"F. c #9c0061",
+"G. c #ae004f",
+"H. c #af004e",
+"J. c #a60057",
+"K. c #a70056",
+"L. c #a2005b",
+"P. c #a3005a",
+"I. c #a0005d",
+"U. c #a1005c",
+"Y. c #a40059",
+"T. c #a50058",
+"R. c #aa0053",
+"E. c #ab0052",
+"W. c #a80055",
+"Q. c #ad0050",
+"!. c #ad0052",
+"~. c #b60047",
+"^. c #b70046",
+"/. c #b3004a",
+"(. c #b0004d",
+"). c #b1004c",
+"_. c #b40049",
+"`. c #b50048",
+"'. c #ba0043",
+"]. c #bb0042",
+"[. c #b80045",
+"{. c #b90044",
+"}. c #bc0041",
+"|. c #bd0040",
+" X c #ce002f",
+".X c #cf002e",
+"XX c #c60037",
+"oX c #c70036",
+"OX c #c2003b",
+"+X c #c3003a",
+"@X c #c1003c",
+"#X c #c40039",
+"$X c #c50038",
+"%X c #ca0033",
+"&X c #cb0032",
+"*X c #c80035",
+"=X c #c90034",
+"-X c #cc0031",
+";X c #cd0030",
+":X c #d2002b",
+">X c #d0002d",
+",X c #d1002c",
+"<X c #d40029",
+"1X c #d50028",
+"2X c #d70028",
+"3X c #d90027",
+"4X c #da0025",
+"5X c #dc0023",
+"6X c #de0021",
+"7X c #df0020",
+"8X c #e0001f",
+"9X c #e1001e",
+"0X c #e3001c",
+"qX c #e5001a",
+"wX c #e70018",
+"eX c #e90016",
+"rX c #eb0014",
+"tX c #ed0012",
+"yX c #ee0011",
+"uX c #f70007",
+"iX c #f1000e",
+"pX c #f3000c",
+"aX c #f50009",
+"sX c #f4000b",
+"dX c #fb0002",
+"fX c #f90004",
+"gX c Gray51",
+"hX c #868686",
+"jX c #8e8e8e",
+"kX c Gray58",
+"lX c Gray59",
+"zX c Gray62",
+"xX c Gray65",
+"cX c #aeaeae",
+"vX c #b6b6b6",
+"bX c #bebebe",
+"nX c #c6c6c6",
+"mX c #cecece",
+"MX c Gray84",
+"NX c Gray87",
+"BX c None",
+/* pixels */
+"dXuXpXyXeXqX8X4X2X,X-X*X+Xy.'.`.(.!.K.L.i.D.C.B.c.d.g.r.q.5. at .:.;.*.X. .[ K ~ E I H D m b x g d ",
+"fXaXiXrXwX0X6X3X<X.X%XXX at X}.[./.G.R.T.I.S.m.M.n.v.l.O 0.2.7.1.,.-.&.} { ' ^ ! R - F Z M v z a i ",
+"uXpX                                                                                        s u ",
+"aXiX                                                                                        ; t ",
+"sXyX                                                                                        y r ",
+"iXtX                                                                                        e w ",
+"iXrX                                                                                        r q ",
+"yXeX                                                                                        w 0 ",
+"rXwX                                                                                        q 9 ",
+"eXqX                                                                                        0 5 ",
+"wX0X                                                                                        9 1 ",
+"qX9X                                                                                        5 2 ",
+"0X6X                                                                                        4 > ",
+"9X5X3X:X;X=X#Xu.].~.).Q.W.P.p.A.Z.V.b.f.h.o w.8.6.>.#.$.O.| ] ` W L Y G S C p k j s y r 7 : 3 < ",
+"7X4X1X>X&XoXOX|.{._.H.E.J.U.F.D.N.a.x.z.j.e.3.4.+.<.=.%.o.( ) / Q T U A n B c l h ; e w 8 4 2 , ",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"wX7X1X;X$X|._.!.Y.F.C.c.h.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXaXrX9X2X-XOX[.G.Y.A.B.d.e.",
+"7XNXMXmXnXbXvXY.F.C.c.h.0.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXrXNXNXNXMXnXbXvXxXzXkXhX4.",
+"1XMXmXnXbXvXcXxXC.c.h.0.5.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX9XNXNXMXnXbXvXxXzXkXhX= ,.",
+";XmXnX_.!.Y.xXzXlXh.0.5.:.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX2XNXMX[.G.Y.A.B.d.e.= * J ",
+"$XnXbX!.Y.F.C.lXjXhX5.:.$.BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX-XMXnXG.Y.A.B.d.e.4.* % ] ",
+"|.bXvXY.F.C.c.h.hX= * $.} BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXOXnXbXY.A.B.d.e.4.,.% # ~ ",
+"_.vXcXF.C.c.h.0.5.* & $ ) BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX[.bXvXxXB.d.e.4.,.% # @ U ",
+"!.cXxXC.c.h.0.5.* & $ ) ~ BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXG.Y.xXzXkXe.4.,.% # @ U Z ",
+"Y.xXzXc.h.0.5.* & $ ) ~ Y BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXY.A.B.kXhX= ,.% # @ U Z v ",
+"F.zXlXh.0.5.* & $ ) ~ Y F BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXA.B.d.e.= * % # @ U Z v f ",
+"C.lXjXhX= * & $ ) ~ Y F B BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXB.d.e.4.,.% # @ U Z v f r ",
+"c.jXhX= * & $ ) ~ Y F B x BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXd.e.4.,.J ] @ U Z v f r 5 ",
+"h.0.5.:.$.} ) ~ Y F B x s BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXe.4.,.J ] ~ U Z v f r 5 < ",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBX9X3X>XoXu.^.G.J.i.Z.n.l.e.8.>.-.o.) W P BXBXBXBXBXBXBXBXBXBXBXBXBXBX",
+"aXrX9X2X-XOX[.G.Y.A.B.d.e.BX6X<X-X#X]./.R.L.A.V.v.k.q.6.,.&. .` L - BXaXrX9X2X-XOX[.G.Y.A.B.d.e.",
+"rXNXNX-XOX[.bXvXxXzXkXhX4.BX4X,X                                R A BXrXNXNXNXMXnXbXY.A.B.kXhX4.",
+"9XNXNXOX[.bXvXxXzXkXhX= ,.BX1X;X                                U n BX9XNXNXMXnXbXvXxXB.d.hX= ,.",
+"2XNXMX[.bXvXxXB.d.e.= * J BX,X=X                                H C BX2XNXMX[.G.Y.xXzXkXe.= * J ",
+"-XMXnXbXvXxXB.d.e.4.* % ] BX X$X                                D N BX-XMXnXG.Y.A.B.kXhX= * % ] ",
+"OXnXbXvXxXB.d.e.4.,.% # ~ BX%XOX                                V v BXOXnXbXY.A.B.d.e.= * % # ~ ",
+"[.bXvXxXB.d.e.4.,.J # @ U BXXXy.                                M l BX[.bXvXA.B.d.e.4.,.% # @ U ",
+"G.vXxXzXkXe.4.,.J ] @ + Z BX+X'.                                c g BXG.vXxXB.d.e.4.,.% # @ + Z ",
+"Y.xXzXkXhX= ,.J ] ~ + X v BXu.^.                                x s BXY.xXzXd.e.4.,.% # @ + X v ",
+"A.zXkXe.= * % ] ~ U X . f BX]./.                                j y BXA.zXkXe.4.,.% # @ U X . f ",
+"B.kXhX4.,.% # @ + X . . r BX^.H.                                f t BXB.kXhX= * % # @ U Z . . r ",
+"d.gX= ,.J ] @ + X X . . 5 BX_.E.                                i w BXd.gX= * % # @ U Z v . . 5 ",
+"e.4.,.J ] ~ U Z v f r 5 < BX(.W.p.m.s.d.o 2.1.;.X.] ^ R H C k a e 0 BXe.4.,.J ] ~ U Z v f r 5 < ",
+"BXBXBXBXBXBXBXBXBXBXBXBXBXBX!.Y.F.N.c.g.9.4.<.*..._ Q I D N z ; 6 : BXBXBXBXBXBXBXBXBXBXBXBXBXBX"
+};
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/cd-mask.xpm b/XPM/cd-mask.xpm
new file mode 100644
index 0000000..cd9a2af
--- /dev/null
+++ b/XPM/cd-mask.xpm
@@ -0,0 +1,57 @@
+/* XPM */
+static char *sample_mask[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 3 1",
+"  c Black",
+". c Gray100",
+"X c None",
+/* pixels */
+"................................................",
+"................................................",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
+"................................................",
+"................................................",
+"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+".............XXXXXXXXXXXXXXXXXXXXXX.............",
+"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+"XXXXXXXXXXXXXX....................XXXXXXXXXXXXXX",
+".............X....................X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X..XXXXXXXXXXXXXXXX..X.............",
+".............X....................X.............",
+"XXXXXXXXXXXXXX....................XXXXXXXXXXXXXX"
+};
diff --git a/XPM/gold.style b/XPM/gold.style
new file mode 100644
index 0000000..dcbd624
--- /dev/null
+++ b/XPM/gold.style
@@ -0,0 +1,402 @@
+/*
+ * This is a WMRack style
+ *
+ * Copyright 1997 by Heiko Wagner <hwagner at fga.de>
+ */
+/* XPM */
+static char *cdnodisc[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 47 1",
+"  c Black",
+". c #623620",
+"X c #783f2a",
+"o c #79412a",
+"O c #7b7b7b",
+"+ c Blue",
+"@ c #00ccff",
+"# c #84571f",
+"$ c #8a522b",
+"% c #8d552b",
+"& c #9a632c",
+"* c #9c652c",
+"= c #a16a2c",
+"- c #a26c2d",
+"; c #a77920",
+": c #ab752d",
+"> c #ae782d",
+", c #b47e2e",
+"< c #b57f2e",
+"1 c #bd872e",
+"2 c #c08b2f",
+"3 c #c6902f",
+"4 c #c9942f",
+"5 c #cc962f",
+"6 c #c99b20",
+"7 c #ce992f",
+"8 c #d2a03d",
+"9 c #d6a84e",
+"0 c #d8ad57",
+"q c #dab160",
+"w c #dcb76b",
+"e c #dbbb64",
+"r c #e0bf7d",
+"t c #dec273",
+"y c #e3c588",
+"u c #e5ce90",
+"i c #e9d2a2",
+"p c #ead3a5",
+"a c #eddeb4",
+"s c #eeddb9",
+"d c #f1e2c5",
+"f c #f8f1e2",
+"g c #f9f3e8",
+"h c #faf5eb",
+"j c #fdfbf6",
+"k c #fefefd",
+"l c None",
+/* pixels */
+".#;6eakfdpyww97311,::::::::::,11379wwypdfkae6;#.",
+"#;6eaakfdpyw97311,:----------:,11379wypdfkaae6;#",
+"#;                                            ;#",
+"#;                                            ;#",
+"#;                                            ;#",
+"#;                                            ;#",
+"#;                                            ;#",
+";6                                            6;",
+";6                                            6;",
+"#;                                            ;#",
+"#;                                            ;#",
+"#;                                            ;#",
+"#;                                            ;#",
+"#;6eakfdpyww9731,:--&&&&&&&&--:,1379wwypdfkae6;#",
+"#;6eaakfdpyw97311,:----------:,11379wypdfkaae6;#",
+"llllllllllllllllllllllllllllllllllllllllllllllll",
+"llllllllllllllllllllllllllllllllllllllllllllllll",
+"srr88888888rrllllllllllllllllllllllr88888888rrsj",
+"s++++++22228rllllllllllllllllllllll822222+228rsj",
+"r+++++++>>228llllllllllllllllllllll22>>>+++228rs",
+"r++@@@+++*>28llllllllllllllllllllll2>**+++++28rs",
+"r++@@@@+++>28llllllllllllllllllllll2>*+++ at +++8rs",
+"8++@@@@@+++>2llllllllllllllllllllll>*+++@@@+++8r",
+"8++@@@@@@+++2llllllllllllllllllllll>+++@@@@@+++r",
+"r++@@@@@+++28llllllllllllllllllllll2++@@@@@@@++s",
+"r++@@@@+++>28llllllllllllllllllllll2++@@@@@@@++s",
+"r++@@@+++>228llllllllllllllllllllll2++@@@@@@@++s",
+"s+++++++2228rllllllllllllllllllllll8+++++++++++j",
+"s++++++8888rrllllllllllllllllllllllr+++++++++++j",
+"jsrrrrrrrrrrsllllllllllllllllllllllrrrrrrrrrrsjt",
+"llllllllllllllllllllllllllllllllllllllllllllllll",
+"llllllllllllllllllllllllllllllllllllllllllllllll",
+"llllllllllllllllllllllllllllllllllllllllllllllll",
+"llllllllllllllhsy05511111111550yshllllllllllllll",
+"llllllllllllllsyy051>>>>>>>>150yysllllllllllllll",
+"llllllllllllllsy                ysllllllllllllll",
+"llllllllllllllsy                ysllllllllllllll",
+"llllllllllllllsy                ysllllllllllllll",
+"lllllllllllllly0                0yllllllllllllli",
+"lllllllllllllly0                0yllllllllllllll",
+"llllllllllllllsy                ysllllllllllllll",
+"llllllllllllllsy                ysllllllllllllll",
+"llllllllllllllsy                ysllllllllllllll",
+"llllllllllllllsy                ysllllllllllllll",
+"llllllllllllllhs                shllllllllllllll",
+"llllllllllllllhs                shllllllllllllll",
+"llllllllllllllahssy0000000000ysshallllllllllllll",
+"llllllllllllllaahssyyyyyyyyyysshaallllllllllllll"
+};
+/* XPM */
+static char *cdpaused[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 42 1",
+"  c Black",
+". c #623620",
+"X c #7b7b7b",
+"o c Blue",
+"O c #00ccff",
+"+ c #84571f",
+"@ c #9a632c",
+"# c #9c652c",
+"$ c #a16a2c",
+"% c #a26c2d",
+"& c #a77920",
+"* c #ab752d",
+"= c #ae782d",
+"- c #b47e2e",
+"; c #b57f2e",
+": c #bd872e",
+"> c #c08b2f",
+", c #c6902f",
+"< c #c9942f",
+"1 c #cc962f",
+"2 c #c99b20",
+"3 c #ce992f",
+"4 c #d2a03d",
+"5 c #d6a84e",
+"6 c #d8ad57",
+"7 c #dab160",
+"8 c #dcb76b",
+"9 c #dbbb64",
+"0 c #e0bf7d",
+"q c #e3c588",
+"w c #e5ce90",
+"e c #e9d2a2",
+"r c #ead3a5",
+"t c #eddeb4",
+"y c #eeddb9",
+"u c #f1e2c5",
+"i c #f8f1e2",
+"p c #f9f3e8",
+"a c #faf5eb",
+"s c #fdfbf6",
+"d c #fefefd",
+"f c None",
+/* pixels */
+".+&29tdiurq8853,::-**********-::,3588qruidt92&+.",
+"+&29ttdiurq853,::-*%%%%%%%%%%*-::,358qruidtt92&+",
+"+&                                            &+",
+"+&                                            &+",
+"+&                                            &+",
+"+&                                            &+",
+"+&                                            &+",
+"&2                                            2&",
+"&2                                            2&",
+"+&                                            &+",
+"+&                                            &+",
+"+&                                            &+",
+"+&                                            &+",
+"+&29tdiurq8853,:-*%%@@@@@@@@%%*-:,3588qruidt92&+",
+"+&29ttdiurq853,::-*%%%%%%%%%%*-::,358qruidtt92&+",
+"ffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffffffffffffffffffffffffff",
+"y004444444400ffffffffffffffffffffffee77777777eep",
+"yoooooo>>>>40ffffffffffffffffffffffeooooooooooop",
+"0ooooooo==>>4ffffffffffffffffffffff7oooooooooooe",
+"0ooOOOooo#=>4ffffffffffffffffffffff7ooOOOOOOOooe",
+"0ooOOOOooo=>4ffffffffffffffffffffff7ooOOOOOOOooe",
+"4ooOOOOOooo=>ffffffffffffffffffffff<ooOOOOOOOoo7",
+"4ooOOOOOOooo>ffffffffffffffffffffff<ooOOOOOOOoo7",
+"0ooOOOOOooo>4ffffffffffffffffffffff7ooOOOOOOOooe",
+"0ooOOOOooo=>4ffffffffffffffffffffff7ooOOOOOOOooe",
+"0ooOOOooo=>>4ffffffffffffffffffffff7ooOOOOOOOooe",
+"yooooooo>>>40ffffffffffffffffffffffeooooooooooop",
+"yoooooo444400ffffffffffffffffffffffeooooooooooop",
+"sy0000000000yffffffffffffffffffffffpeeeeeeeeeepw",
+"ffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffayq611::::::::116qyaffffffffffffff",
+"ee77777777eepfyqq61:========:16qqyfee77777777eep",
+"eoo<<<oooooopfyq                qyfeoooooo<<<oop",
+"7oo;;oooooooefyq                qyf7ooooooo;<ooe",
+"7oo$oooOOOooefyq                qyf7ooOOOooo;ooe",
+"7oooooOOOOooefq6                6qf7ooOOOOoooooe",
+"<ooooOOOOOoo7fq6                6qf<ooOOOOOoooo7",
+"<oooOOOOOOoo7fyq                qyf<ooOOOOOOooo7",
+"7ooooOOOOOooefyq                qyf7ooOOOOOooooe",
+"7oooooOOOOooefyq                qyf7ooOOOOoooooe",
+"7oo;oooOOOooefyq                qyf7ooOOOooo<ooe",
+"eoo<<ooooooopfay                yafeooooooo<<oop",
+"eoo777oooooopfay                yafeoooooo777oop",
+"peeeeeeeeeepwftayyq6666666666qyyatfpeeeeeeeeeepw",
+"ffffffffffffffttayyqqqqqqqqqqyyattffffffffffffff"
+};
+/* XPM */
+static char *cdplaying[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 37 1",
+"  c Black",
+". c #623620",
+"X c #7b7b7b",
+"o c Blue",
+"O c #00ccff",
+"+ c #84571f",
+"@ c #9a632c",
+"# c #a16a2c",
+"$ c #a26c2d",
+"% c #a77920",
+"& c #ab752d",
+"* c #ae782d",
+"= c #b47e2e",
+"- c #b57f2e",
+"; c #bd872e",
+": c #c6902f",
+"> c #c9942f",
+", c #cc962f",
+"< c #c99b20",
+"1 c #ce992f",
+"2 c #d6a84e",
+"3 c #d8ad57",
+"4 c #dab160",
+"5 c #dcb76b",
+"6 c #dbbb64",
+"7 c #e3c588",
+"8 c #e5ce90",
+"9 c #e9d2a2",
+"0 c #ead3a5",
+"q c #eddeb4",
+"w c #eeddb9",
+"e c #f1e2c5",
+"r c #f8f1e2",
+"t c #f9f3e8",
+"y c #faf5eb",
+"u c #fefefd",
+"i c None",
+/* pixels */
+".+%<6qure075521:;;=&&&&&&&&&&=;;:125570eruq6<%+.",
+"+%<6qqure07521:;;=&$$$$$$$$$$&=;;:12570eruqq6<%+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"%<                                            <%",
+"%<                                            <%",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%<6qure075521:;=&$$@@@@@@@@$$&=;:125570eruq6<%+",
+"+%<6qqure07521:;;=&$$$$$$$$$$&=;;:12570eruqq6<%+",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"994444444499tiiiiiiiiiiiiiiiiiiiiii994444444499t",
+"9oooooooooootiiiiiiiiiiiiiiiiiiiiii9ooooooooooot",
+"4ooooooooooo9iiiiiiiiiiiiiiiiiiiiii4ooooooooooo9",
+"4ooOOOoOOOoo9iiiiiiiiiiiiiiiiiiiiii4ooOOOOOOOoo9",
+"4ooOOOoOOOoo9iiiiiiiiiiiiiiiiiiiiii4ooOOOOOOOoo9",
+">ooOOOoOOOoo4iiiiiiiiiiiiiiiiiiiiii>ooOOOOOOOoo4",
+">ooOOOoOOOoo4iiiiiiiiiiiiiiiiiiiiii>ooOOOOOOOoo4",
+"4ooOOOoOOOoo9iiiiiiiiiiiiiiiiiiiiii4ooOOOOOOOoo9",
+"4ooOOOoOOOoo9iiiiiiiiiiiiiiiiiiiiii4ooOOOOOOOoo9",
+"4ooOOOoOOOoo9iiiiiiiiiiiiiiiiiiiiii4ooOOOOOOOoo9",
+"9oooooooooootiiiiiiiiiiiiiiiiiiiiii9ooooooooooot",
+"9oooooooooootiiiiiiiiiiiiiiiiiiiiii9ooooooooooot",
+"t9999999999t8iiiiiiiiiiiiiiiiiiiiiit9999999999t8",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiyw73,,;;;;;;;;,,37wyiiiiiiiiiiiiii",
+"994444444499tiw773,;********;,377wi994444444499t",
+"9oo>>>ooooootiw7                7wi9oooooo>>>oot",
+"4oo--ooooooo9iw7                7wi4ooooooo->oo9",
+"4oo#oooOOOoo9iw7                7wi4ooOOOooo-oo9",
+"4oooooOOOOoo9i73                37i4ooOOOOooooo9",
+">ooooOOOOOoo4i73                37i>ooOOOOOoooo4",
+">oooOOOOOOoo4iw7                7wi>ooOOOOOOooo4",
+"4ooooOOOOOoo9iw7                7wi4ooOOOOOoooo9",
+"4oooooOOOOoo9iw7                7wi4ooOOOOooooo9",
+"4oo-oooOOOoo9iw7                7wi4ooOOOooo>oo9",
+"9oo>>oooooootiyw                wyi9ooooooo>>oot",
+"9oo444ooooootiyw                wyi9oooooo444oot",
+"t9999999999t8iqyww733333333337wwyqit9999999999t8",
+"iiiiiiiiiiiiiiqqyww7777777777wwyqqiiiiiiiiiiiiii"
+};
+/* XPM */
+static char *cdstopped[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 37 1",
+"  c Black",
+". c #623620",
+"X c #7b7b7b",
+"o c Blue",
+"O c #00ccff",
+"+ c #84571f",
+"@ c #9a632c",
+"# c #a16a2c",
+"$ c #a26c2d",
+"% c #a77920",
+"& c #ab752d",
+"* c #ae782d",
+"= c #b47e2e",
+"- c #b57f2e",
+"; c #bd872e",
+": c #c6902f",
+"> c #c9942f",
+", c #cc962f",
+"< c #c99b20",
+"1 c #ce992f",
+"2 c #d6a84e",
+"3 c #d8ad57",
+"4 c #dab160",
+"5 c #dcb76b",
+"6 c #dbbb64",
+"7 c #e3c588",
+"8 c #e5ce90",
+"9 c #e9d2a2",
+"0 c #ead3a5",
+"q c #eddeb4",
+"w c #eeddb9",
+"e c #f1e2c5",
+"r c #f8f1e2",
+"t c #f9f3e8",
+"y c #faf5eb",
+"u c #fefefd",
+"i c None",
+/* pixels */
+".+%<6qure075521:;;=&&&&&&&&&&=;;:125570eruq6<%+.",
+"+%<6qqure07521:;;=&$$$$$$$$$$&=;;:12570eruqq6<%+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"%<                                            <%",
+"%<                                            <%",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%                                            %+",
+"+%<6qure075521:;=&$$@@@@@@@@$$&=;:125570eruq6<%+",
+"+%<6qqure07521:;;=&$$$$$$$$$$&=;;:12570eruqq6<%+",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"994444444499tiiiiiiiiiiiiiiiiiiiiii994444444499t",
+"9oooooo>>>49tiiiiiiiiiiiiiiiiiiiiii9ooooooooooot",
+"4ooooooo->>49iiiiiiiiiiiiiiiiiiiiii4ooooooooooo9",
+"4ooOOOooo->49iiiiiiiiiiiiiiiiiiiiii4ooOOOOOOOoo9",
+"4ooOOOOooo>49iiiiiiiiiiiiiiiiiiiiii4ooOOOOOOOoo9",
+">ooOOOOOooo>4iiiiiiiiiiiiiiiiiiiiii>ooOOOOOOOoo4",
+">ooOOOOOOooo4iiiiiiiiiiiiiiiiiiiiii>oooOOOOOooo4",
+"4ooOOOOOooo49iiiiiiiiiiiiiiiiiiiiii4>oooOOOooo49",
+"4ooOOOOooo>49iiiiiiiiiiiiiiiiiiiiii4>-oooOooo>49",
+"4ooOOOooo>>49iiiiiiiiiiiiiiiiiiiiii4>>-ooooo>>49",
+"9ooooooo>>49tiiiiiiiiiiiiiiiiiiiiii94>>>ooo>>49t",
+"9oooooo44499tiiiiiiiiiiiiiiiiiiiiii994444o44499t",
+"t9999999999t8iiiiiiiiiiiiiiiiiiiiiit9999999999t8",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+"iiiiiiiiiiiiiiyw73,,;;;;;;;;,,37wyiiiiiiiiiiiiii",
+"994444444499tiw773,;********;,377wi994444444499t",
+"9oo>>>ooooootiw7                7wi9oooooo>>>oot",
+"4oo--ooooooo9iw7                7wi4ooooooo->oo9",
+"4oo#oooOOOoo9iw7                7wi4ooOOOooo-oo9",
+"4oooooOOOOoo9i73                37i4ooOOOOooooo9",
+">ooooOOOOOoo4i73                37i>ooOOOOOoooo4",
+">oooOOOOOOoo4iw7                7wi>ooOOOOOOooo4",
+"4ooooOOOOOoo9iw7                7wi4ooOOOOOoooo9",
+"4oooooOOOOoo9iw7                7wi4ooOOOOooooo9",
+"4oo-oooOOOoo9iw7                7wi4ooOOOooo>oo9",
+"9oo>>oooooootiyw                wyi9ooooooo>>oot",
+"9oo444ooooootiyw                wyi9oooooo444oot",
+"t9999999999t8iqyww733333333337wwyqit9999999999t8",
+"iiiiiiiiiiiiiiqqyww7777777777wwyqqiiiiiiiiiiiiii"
+};
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/grey.style b/XPM/grey.style
new file mode 100644
index 0000000..fa72a9f
--- /dev/null
+++ b/XPM/grey.style
@@ -0,0 +1,255 @@
+/*
+ * WMRack standart style
+ *
+ * Copyright 1997 by Oliver Graf <ograf at fga.de>
+ */
+/* XPM */
+static char * cdnodisc[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @      .o++++++++++++++++++++++OX    @    .o",
+"OX  @@@    .o++++++++++++++++++++++OX    @    .o",
+"OX  @@@@@  .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @@@    .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"++++++++++++++ ..................X++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .XXXXXXXXXXXXXXXXXX++++++++++++++",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
+/* XPM */
+static char * cdpaused[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@    .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@@@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@    .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"OOOOOOOOOOOOO+ ..................X+OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo+ .ooooooooooooooooXX+OXXXXXXXXXXXo",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @@@@@  .o+ .ooooooooooooooooXX+OX  @@@@@  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX..........o+ .ooooooooooooooooXX+OX..........o",
+"Ooooooooooooo+ .XXXXXXXXXXXXXXXXXX+Ooooooooooooo",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
+/* XPM */
+static char * cdplaying[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"OOOOOOOOOOOOO+ ..................X+OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo+ .ooooooooooooooooXX+OXXXXXXXXXXXo",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @@@@@  .o+ .ooooooooooooooooXX+OX  @@@@@  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX..........o+ .ooooooooooooooooXX+OX..........o",
+"Ooooooooooooo+ .XXXXXXXXXXXXXXXXXX+Ooooooooooooo",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
+/* XPM */
+static char * cdstopped[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@    .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @@@@@  .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @@@    .o++++++++++++++++++++++OX    @    .o",
+"OX  @      .o++++++++++++++++++++++OX    @    .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"OOOOOOOOOOOOO+ ..................X+OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo+ .ooooooooooooooooXX+OXXXXXXXXXXXo",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @@@@@  .o+ .ooooooooooooooooXX+OX  @@@@@  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX..........o+ .ooooooooooooooooXX+OX..........o",
+"Ooooooooooooo+ .XXXXXXXXXXXXXXXXXX+Ooooooooooooo",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/grey/cdnodisc.xpm b/XPM/grey/cdnodisc.xpm
new file mode 100644
index 0000000..a4f1099
--- /dev/null
+++ b/XPM/grey/cdnodisc.xpm
@@ -0,0 +1,58 @@
+/* XPM */
+static char * cdnodisc[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @      .o++++++++++++++++++++++OX    @    .o",
+"OX  @@@    .o++++++++++++++++++++++OX    @    .o",
+"OX  @@@@@  .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @@@    .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"++++++++++++++ ..................X++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .ooooooooooooooooXX++++++++++++++",
+"++++++++++++++ .XXXXXXXXXXXXXXXXXX++++++++++++++",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
diff --git a/XPM/grey/cdpaused.xpm b/XPM/grey/cdpaused.xpm
new file mode 100644
index 0000000..2f6c1db
--- /dev/null
+++ b/XPM/grey/cdpaused.xpm
@@ -0,0 +1,58 @@
+/* XPM */
+static char * cdpaused[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@    .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@@@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@    .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"OOOOOOOOOOOOO+ ..................X+OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo+ .ooooooooooooooooXX+OXXXXXXXXXXXo",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @@@@@  .o+ .ooooooooooooooooXX+OX  @@@@@  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX..........o+ .ooooooooooooooooXX+OX..........o",
+"Ooooooooooooo+ .XXXXXXXXXXXXXXXXXX+Ooooooooooooo",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
diff --git a/XPM/grey/cdplaying.xpm b/XPM/grey/cdplaying.xpm
new file mode 100644
index 0000000..376b9a4
--- /dev/null
+++ b/XPM/grey/cdplaying.xpm
@@ -0,0 +1,58 @@
+/* XPM */
+static char * cdplaying[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@ @@  .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"OOOOOOOOOOOOO+ ..................X+OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo+ .ooooooooooooooooXX+OXXXXXXXXXXXo",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @@@@@  .o+ .ooooooooooooooooXX+OX  @@@@@  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX..........o+ .ooooooooooooooooXX+OX..........o",
+"Ooooooooooooo+ .XXXXXXXXXXXXXXXXXX+Ooooooooooooo",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
diff --git a/XPM/grey/cdstopped.xpm b/XPM/grey/cdstopped.xpm
new file mode 100644
index 0000000..40cceee
--- /dev/null
+++ b/XPM/grey/cdstopped.xpm
@@ -0,0 +1,58 @@
+/* XPM */
+static char * cdstopped[] = {
+"48 48 7 1",
+" 	c #631863186318",
+".	c #318C318C318C",
+"X	c #9CE69CE69CE6",
+"o	c #000000000000",
+"O	c #CE72CE72CE72",
+"+	c none",
+"@	c #0000FFFF0000 s led_color_high",
+"                                                ",
+" ..............................................X",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .ooooooooooooooooooooooooooooooooooooooooooooXX",
+" .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
+" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"OOOOOOOOOOOOO++++++++++++++++++++++OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo++++++++++++++++++++++OXXXXXXXXXXXo",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX  @      .o++++++++++++++++++++++OX  @@@@@  .o",
+"OX  @@@    .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @@@@@  .o++++++++++++++++++++++OX   @@@   .o",
+"OX  @@@    .o++++++++++++++++++++++OX    @    .o",
+"OX  @      .o++++++++++++++++++++++OX    @    .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX         .o++++++++++++++++++++++OX         .o",
+"OX..........o++++++++++++++++++++++OX..........o",
+"Ooooooooooooo++++++++++++++++++++++Ooooooooooooo",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++",
+"++++++++++++++                    ++++++++++++++",
+"OOOOOOOOOOOOO+ ..................X+OOOOOOOOOOOOO",
+"OXXXXXXXXXXXo+ .ooooooooooooooooXX+OXXXXXXXXXXXo",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @@@@@  .o+ .ooooooooooooooooXX+OX  @@@@@  .o",
+"OX  @ @@@  .o+ .ooooooooooooooooXX+OX  @@@ @  .o",
+"OX  @   @  .o+ .ooooooooooooooooXX+OX  @   @  .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX         .o+ .ooooooooooooooooXX+OX         .o",
+"OX..........o+ .ooooooooooooooooXX+OX..........o",
+"Ooooooooooooo+ .XXXXXXXXXXXXXXXXXX+Ooooooooooooo",
+"++++++++++++++ OOOOOOOOOOOOOOOOOOO++++++++++++++"};
diff --git a/XPM/grey/led.xpm b/XPM/grey/led.xpm
new file mode 100644
index 0000000..1759f9e
--- /dev/null
+++ b/XPM/grey/led.xpm
@@ -0,0 +1,18 @@
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/led.xpm b/XPM/led.xpm
new file mode 100644
index 0000000..1759f9e
--- /dev/null
+++ b/XPM/led.xpm
@@ -0,0 +1,18 @@
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/orange.style b/XPM/orange.style
new file mode 100644
index 0000000..d3cbf0a
--- /dev/null
+++ b/XPM/orange.style
@@ -0,0 +1,327 @@
+/*
+ * This is a WMRack style
+ *
+ * Copyright 1997 by Heiko Wagner <hwagner at fga.de>
+ */
+/* XPM */
+static char *cdnodisc[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #000aff",
+"o c #0013ff",
+"O c #001dff",
+"+ c #0026ff",
+"@ c #0030ff",
+"# c #0039ff",
+"$ c #0043ff",
+"% c #004dff",
+"& c #0056ff",
+"* c #0060ff",
+"= c #0069ff",
+"- c #0073ff",
+"; c #007cff",
+": c #0086ff",
+"> c #008fff",
+", c #0099ff",
+"< c Red",
+"1 c #fe8000",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+"122222222222222222222222222222222222222222222222",
+"212222222222222222222222222222222222222222222221",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"211111111111111111111111111111111111111111111121",
+"111111111111111111111111111111111111111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"122222222222233333333333333333333331222222222222",
+"212222222222133333333333333333333332122222222221",
+"22,>:;-=*&%11333333333333333333333322,,>:;-*&%11",
+"22>1111*&%$11333333333333333333333322,>:;1*&&$11",
+"22:1,,;1%$#11333333333333333333333322>:;1;1%$#11",
+"22;1,;=%1@@11333333333333333333333322:;1;=%1#+11",
+"22-1;=%#O1+11333333333333333333333322;1;=%#O1O11",
+"22=1=%#O1+O11333333333333333333333322-1=%#OX1o11",
+"22*1&#O1+Oo11333333333333333333333322*1&#OX.1X11",
+"22&1111+OoX11333333333333333333333322&1111111.11",
+"22%$#@+OoX.11333333333333333333333322%$#+OoX..11",
+"211111111112133333333333333333333332111111111121",
+"111111111111233333333333333333333331111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333331222222222222222222233333333333333",
+"333333333333332122222222222222222133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"3333333333333322                1133333333333333",
+"333333333333332111111111111111112133333333333333",
+"333333333333331111111111111111111233333333333333"
+};
+/* XPM */
+static char *cdpaused[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #000aff",
+"o c #0013ff",
+"O c #001dff",
+"+ c #0026ff",
+"@ c #0030ff",
+"# c #0039ff",
+"$ c #0043ff",
+"% c #004dff",
+"& c #0056ff",
+"* c #0060ff",
+"= c #0069ff",
+"- c #0073ff",
+"; c #007cff",
+": c #0086ff",
+"> c #008fff",
+", c #0099ff",
+"< c Red",
+"1 c #fe8000",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+"122222222222222222222222222222222222222222222222",
+"212222222222222222222222222222222222222222222221",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"211111111111111111111111111111111111111111111121",
+"111111111111111111111111111111111111111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"122222222222233333333333333333333331222222222222",
+"212222222222133333333333333333333332122222222221",
+"22,>:;-=*&%11333333333333333333333322,,>:;-*&%11",
+"22>1111*&%$11333333333333333333333322,1111111$11",
+"22:1,,;1%$#11333333333333333333333322>1;-*&%1#11",
+"22;1,;=%1@@11333333333333333333333322:1-*&%$1+11",
+"22-1;=%#O1+11333333333333333333333322;1*&%$#1O11",
+"22=1=%#O1+O11333333333333333333333322-1&%$#+1o11",
+"22*1&#O1+Oo11333333333333333333333322*1%$#+O1X11",
+"22&1111+OoX11333333333333333333333322&1111111.11",
+"22%$#@+OoX.11333333333333333333333322%$#+OoX..11",
+"211111111112133333333333333333333332111111111121",
+"111111111111233333333333333333333331111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333331222222222222222222233333333333333",
+"122222222222232122222222222222222131222222222222",
+"2122222222221322                1132122222222221",
+"22,,>:;-*&%11322                11322,,>:;-*&%11",
+"22,1:;-111$11322                11322,111-*&1$11",
+"22>1;-1&%1#11322                11322>1;-1&%1#11",
+"22:1-1&%$1+11322                11322:1-*&1$1+11",
+"22;11&%$#1O11322                11322;1*&%$11O11",
+"22-1&1$#+1o11322                11322-1&%$1+1o11",
+"22*1%$1+O1X11322                11322*1%$1+O1X11",
+"22&1$#+111.11322                11322&111+Oo1.11",
+"22%$#+OoX..11322                11322%$#+OoX..11",
+"2111111111121322                1132111111111121",
+"111111111111232111111111111111112131111111111112",
+"333333333333331111111111111111111233333333333333"
+};
+/* XPM */
+static char *cdplaying[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #000aff",
+"o c #0013ff",
+"O c #001dff",
+"+ c #0026ff",
+"@ c #0030ff",
+"# c #0039ff",
+"$ c #0043ff",
+"% c #004dff",
+"& c #0056ff",
+"* c #0060ff",
+"= c #0069ff",
+"- c #0073ff",
+"; c #007cff",
+": c #0086ff",
+"> c #008fff",
+", c #0099ff",
+"< c Red",
+"1 c #fe8000",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+"122222222222222222222222222222222222222222222222",
+"212222222222222222222222222222222222222222222221",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"211111111111111111111111111111111111111111111121",
+"111111111111111111111111111111111111111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"122222222222233333333333333333333331222222222222",
+"212222222222133333333333333333333332122222222221",
+"22,,>:;-*&%11333333333333333333333322,>:;-=*&%11",
+"22,111-111$11333333333333333333333322>1111111$11",
+"22>1;1*1%1#11333333333333333333333322:1-=*&%1#11",
+"22:1-1&1$1+11333333333333333333333322;1=*&%$1 at 11",
+"22;1*1%1#1O11333333333333333333333322-1*&%$#1+11",
+"22-1&1$1+1o11333333333333333333333322=1&%$#@1O11",
+"22*1%1#1O1X11333333333333333333333322*1%$#@+1o11",
+"22&111+111.11333333333333333333333322&1111111X11",
+"22%$#+OoX..11333333333333333333333322%$#@+OoX.11",
+"211111111112133333333333333333333332111111111121",
+"111111111111233333333333333333333331111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333331222222222222222222233333333333333",
+"122222222222232122222222222222222131222222222222",
+"2122222222221322                1132122222222221",
+"22,,>:;-*&%11322                11322,,>:;-*&%11",
+"22,1:;-111$11322                11322,111-*&1$11",
+"22>1;-1&%1#11322                11322>1;-1&%1#11",
+"22:1-1&%$1+11322                11322:1-*&1$1+11",
+"22;11&%$#1O11322                11322;1*&%$11O11",
+"22-1&1$#+1o11322                11322-1&%$1+1o11",
+"22*1%$1+O1X11322                11322*1%$1+O1X11",
+"22&1$#+111.11322                11322&111+Oo1.11",
+"22%$#+OoX..11322                11322%$#+OoX..11",
+"2111111111121322                1132111111111121",
+"111111111111232111111111111111112131111111111112",
+"333333333333331111111111111111111233333333333333"
+};
+/* XPM */
+static char *cdstopped[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 22 1",
+"  c Black",
+". c Blue",
+"X c #000aff",
+"o c #0013ff",
+"O c #001dff",
+"+ c #0026ff",
+"@ c #0030ff",
+"# c #0039ff",
+"$ c #0043ff",
+"% c #004dff",
+"& c #0056ff",
+"* c #0060ff",
+"= c #0069ff",
+"- c #0073ff",
+"; c #007cff",
+": c #0086ff",
+"> c #008fff",
+", c #0099ff",
+"< c Red",
+"1 c #fe8000",
+"2 c #fee000",
+"3 c None",
+/* pixels */
+"122222222222222222222222222222222222222222222222",
+"212222222222222222222222222222222222222222222221",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"22                                            11",
+"211111111111111111111111111111111111111111111121",
+"111111111111111111111111111111111111111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"122222222222233333333333333333333331222222222222",
+"212222222222133333333333333333333332122222222221",
+"22,>:;-=*&%11333333333333333333333322,>:;-=*&%11",
+"22>1111*&%$11333333333333333333333322>1111111$11",
+"22:1,,;1%$#11333333333333333333333322:1,,;=%1#11",
+"22;1,;=%1@@11333333333333333333333322;1,;=%#1 at 11",
+"22-1;=%#O1+11333333333333333333333322-1;=%#O1+11",
+"22=1=%#O1+O11333333333333333333333322=*1%#O1+O11",
+"22*1&#O1+Oo11333333333333333333333322*&%1O1+Oo11",
+"22&1111+OoX11333333333333333333333322&%$#1+OoX11",
+"22%$#@+OoX.11333333333333333333333322%$#@+OoX.11",
+"211111111112133333333333333333333332111111111121",
+"111111111111233333333333333333333331111111111112",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333333333333333333333333333333333333333",
+"333333333333331222222222222222222233333333333333",
+"122222222222232122222222222222222131222222222222",
+"2122222222221322                1132122222222221",
+"22,,>:;-*&%11322                11322,,>:;-*&%11",
+"22,1:;-111$11322                11322,111-*&1$11",
+"22>1;-1&%1#11322                11322>1;-1&%1#11",
+"22:1-1&%$1+11322                11322:1-*&1$1+11",
+"22;11&%$#1O11322                11322;1*&%$11O11",
+"22-1&1$#+1o11322                11322-1&%$1+1o11",
+"22*1%$1+O1X11322                11322*1%$1+O1X11",
+"22&1$#+111.11322                11322&111+Oo1.11",
+"22%$#+OoX..11322                11322%$#+OoX..11",
+"2111111111121322                1132111111111121",
+"111111111111232111111111111111112131111111111112",
+"333333333333331111111111111111111233333333333333"
+};
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/smiley.style b/XPM/smiley.style
new file mode 100644
index 0000000..afd7d6e
--- /dev/null
+++ b/XPM/smiley.style
@@ -0,0 +1,523 @@
+/*
+ * This is a WMRack style
+ *
+ * Copyright 1997 by Heiko Wagner <hwagner at fga.de>
+ */
+/* XPM */
+static char *cdnodisc[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 71 1",
+"  c Black",
+". c Cyan",
+"X c #ff7d00",
+"o c #fe7e00",
+"O c #ff8000",
+"+ c #ff8100",
+"@ c #ff8300",
+"# c #ff8400",
+"$ c #ff8600",
+"% c #ff8800",
+"& c #ff8900",
+"* c #ff8b00",
+"= c DarkOrange",
+"- c #ff8e00",
+"; c #ff8f00",
+": c #ff9100",
+"> c #ff9200",
+", c #ff9400",
+"< c #ff9500",
+"1 c #fe9700",
+"2 c #ff9900",
+"3 c #ff9a00",
+"4 c #ff9c00",
+"5 c #ff9d00",
+"6 c #ff9f00",
+"7 c #ffa000",
+"8 c #ffa200",
+"9 c #ffa300",
+"0 c #ffa500",
+"q c #ffa600",
+"w c #ffa800",
+"e c #ffaa00",
+"r c #ffab00",
+"t c #ffad00",
+"y c #ffae00",
+"u c #ffb000",
+"i c #ffb100",
+"p c #ffb300",
+"a c #ffb400",
+"s c #ffb600",
+"d c #ffb700",
+"f c #ffb900",
+"g c #ffbb00",
+"h c #ffbc00",
+"j c #ffbe00",
+"k c #ffbf00",
+"l c #ffc100",
+"z c #ffc200",
+"x c #ffc400",
+"c c #ffc500",
+"v c #fec700",
+"b c #ffc800",
+"n c #ffca00",
+"m c #ffcc00",
+"M c #ffcd00",
+"N c #ffcf00",
+"B c #ffd000",
+"V c #ffd200",
+"C c #ffd300",
+"Z c #ffd500",
+"A c #ffd600",
+"S c #ffd800",
+"D c #ffd900",
+"F c #ffdb00",
+"G c #ffdd00",
+"H c #ffde00",
+"J c #ffe000",
+"K c #ffe100",
+"L c #ffe300",
+"P c #ffe400",
+"I c None",
+/* pixels */
+"IIIIIIIIIIIIIIIDSZCVBMmnvcxzkjhgdIIIIIIIIIIIIIII",
+"IIIIIIIIIKJHGDSAZVBNmnbvxzljhgfsapuytrwIIIIIIIII",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IP                                            *I",
+"LK                                            %$",
+"JG                                            #+",
+"FD                                            +o",
+"IA                                            XI",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IIIIIIIIIfdapiytreq09765421<>:;-*&%$@+OIIIIIIIII",
+"IIIIIIIIIIIIIIIew09875431<,>;-=&%IIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIJGSZBIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJGSZBIIII",
+"IIIGDZVMncIIIIIIIIIIIIIIIIIIIIIIIIIIIIGDZVMncIII",
+"IIFACNmvxkhIIIIIIIIIIIIIIIIIIIIIIIIIIFAC   xkhII",
+"ISC  bx  faiIIIIIIIIIIIIIIIIIIIIIIIISCB     faiI",
+"ZBM  lj   yeqIIIIIIIIIIIIIIIIIIIIIIZBM   j   yeq",
+"Nnvzkgdp   97IIIIIIIIIIIIIIIIIIIIIINnv  gdp  w97",
+"vxkhdautw  52IIIIIIIIIIIIIIIIIIIIIIvxkhdautw0752",
+"lhfaite0   <>IIIIIIIIIIIIIIIIIIIIIIlhfaite0853<>",
+"gsp  q9   ,;=IIIIIIIIIIIIIIIIIIIIIIgsp  q96  ,;=",
+"Iur  74  :=&IIIIIIIIIIIIIIIIIIIIIIIIur  742  =&I",
+"II0752<:-&$IIIIIIIIIIIIIIIIIIIIIIIIII0752<:-&$II",
+"III31>;*%@IIIIIIIIIIIIIIIIIIIIIIIIIIII31>;*%@III",
+"IIII;=%#OIIIIIIIIIIIIIIIIIIIIIIIIIIIIII;=%#OIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIJGDACBMnIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIKHFSZVNmbczkIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIII                IIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIII                IIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIID                0IIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIISZ                75IIIIIIIIIIIIII",
+"IIIIIIIIIIIIIICB                42IIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIMn                <>IIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIbc                :-IIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIzk                *%IIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIg                $IIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIII                IIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIII                IIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIII7531,:-*%#+oIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIII<>;=&$@OIIIIIIIIIIIIIIIIIIII"
+};
+/* XPM */
+static char *cdpaused[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 71 1",
+"  c Black",
+". c Cyan",
+"X c #ff7d00",
+"o c #fe7e00",
+"O c #ff8000",
+"+ c #ff8100",
+"@ c #ff8300",
+"# c #ff8400",
+"$ c #ff8600",
+"% c #ff8800",
+"& c #ff8900",
+"* c #ff8b00",
+"= c DarkOrange",
+"- c #ff8e00",
+"; c #ff8f00",
+": c #ff9100",
+"> c #ff9200",
+", c #ff9400",
+"< c #ff9500",
+"1 c #fe9700",
+"2 c #ff9900",
+"3 c #ff9a00",
+"4 c #ff9c00",
+"5 c #ff9d00",
+"6 c #ff9f00",
+"7 c #ffa000",
+"8 c #ffa200",
+"9 c #ffa300",
+"0 c #ffa500",
+"q c #ffa600",
+"w c #ffa800",
+"e c #ffaa00",
+"r c #ffab00",
+"t c #ffad00",
+"y c #ffae00",
+"u c #ffb000",
+"i c #ffb100",
+"p c #ffb300",
+"a c #ffb400",
+"s c #ffb600",
+"d c #ffb700",
+"f c #ffb900",
+"g c #ffbb00",
+"h c #ffbc00",
+"j c #ffbe00",
+"k c #ffbf00",
+"l c #ffc100",
+"z c #ffc200",
+"x c #ffc400",
+"c c #ffc500",
+"v c #fec700",
+"b c #ffc800",
+"n c #ffca00",
+"m c #ffcc00",
+"M c #ffcd00",
+"N c #ffcf00",
+"B c #ffd000",
+"V c #ffd200",
+"C c #ffd300",
+"Z c #ffd500",
+"A c #ffd600",
+"S c #ffd800",
+"D c #ffd900",
+"F c #ffdb00",
+"G c #ffdd00",
+"H c #ffde00",
+"J c #ffe000",
+"K c #ffe100",
+"L c #ffe300",
+"P c #ffe400",
+"I c None",
+/* pixels */
+"IIIIIIIIIIIIIIIDSZCVBMmnvcxzkjhgdIIIIIIIIIIIIIII",
+"IIIIIIIIIKJHGDSAZVBNmnbvxzljhgfsapuytrwIIIIIIIII",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IP                                            *I",
+"LK                                            %$",
+"JG                                            #+",
+"FD                                            +o",
+"IA                                            XI",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IIIIIIIIIfdapiytreq09765421<>:;-*&%$@+OIIIIIIIII",
+"IIIIIIIIIIIIIIIew09875431<,>;-=&%IIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIJGSZBIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJGSZBIIII",
+"IIIGDZVMncIIIIIIIIIIIIIIIIIIIIIIIIIIIIGDZVMncIII",
+"IIFACNmvxkhIIIIIIIIIIIIIIIIIIIIIIIIIIFACNmvxkhII",
+"ISC  bx  faiIIIIIIIIIIIIIIIIIIIIIIIISC  bxl  aiI",
+"ZBM  lj   yeqIIIIIIIIIIIIIIIIIIIIIIZBM  ljf  yeq",
+"Nnvzkgdp   97IIIIIIIIIIIIIIIIIIIIIINnvzkgdpurw97",
+"vxkhdautw  52IIIIIIIIIIIIIIIIIIIIIIvxk       752",
+"lhfaite0   <>IIIIIIIIIIIIIIIIIIIIIIlhf ite08 3<>",
+"gsp  q9   ,;=IIIIIIIIIIIIIIIIIIIIIIgsp rq964 ,;=",
+"Iur  74  :=&IIIIIIIIIIIIIIIIIIIIIIIIur       =&I",
+"II0752<:-&$IIIIIIIIIIIIIIIIIIIIIIIIII0752<:-&$II",
+"III31>;*%@IIIIIIIIIIIIIIIIIIIIIIIIIIII31>;*%@III",
+"IIII;=%#OIIIIIIIIIIIIIIIIIIIIIIIIIIIIII;=%#OIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIJGDACBMnIIIIIIIIIIIIIIIIIIII",
+"IIIIJGSZBIIIIIIIIIKHFSZVNmbczkIIIIIIIIIJGSZBIIII",
+"IIIGDZVMncIIIIII                IIIIIIGDZVMncIII",
+"IIFACNmvxkhIIIII                IIIIIFACNmvxkhII",
+"ISC mb l  aiIIID                0IIISC  b lh aiI",
+"ZBM c  f  yeqISZ                75IZBM  l  s yeq",
+"Nnv    purw97ICB                42INnvzkg    w97",
+"vxk   utw0752IMn                <>Ivxkhdau   752",
+"lhf    0853<>Ibc                :-Ilhfait    3<>",
+"gsp r  6  ,;=Izk                *%Igsp  q  4 ,;=",
+"Iur 97 2  =&IIIg                $IIIur  7 2, =&I",
+"II0752<:-&$IIIII                IIIII0752<:-&$II",
+"III31>;*%@IIIIII                IIIIII31>;*%@III",
+"IIII;=%#OIIIIIIIII7531,:-*%#+oIIIIIIIII;=%#OIIII",
+"IIIIIIIIIIIIIIIIIIII<>;=&$@OIIIIIIIIIIIIIIIIIIII"
+};
+/* XPM */
+static char *cdplaying[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 71 1",
+"  c Black",
+". c Cyan",
+"X c #ff7d00",
+"o c #fe7e00",
+"O c #ff8000",
+"+ c #ff8100",
+"@ c #ff8300",
+"# c #ff8400",
+"$ c #ff8600",
+"% c #ff8800",
+"& c #ff8900",
+"* c #ff8b00",
+"= c DarkOrange",
+"- c #ff8e00",
+"; c #ff8f00",
+": c #ff9100",
+"> c #ff9200",
+", c #ff9400",
+"< c #ff9500",
+"1 c #fe9700",
+"2 c #ff9900",
+"3 c #ff9a00",
+"4 c #ff9c00",
+"5 c #ff9d00",
+"6 c #ff9f00",
+"7 c #ffa000",
+"8 c #ffa200",
+"9 c #ffa300",
+"0 c #ffa500",
+"q c #ffa600",
+"w c #ffa800",
+"e c #ffaa00",
+"r c #ffab00",
+"t c #ffad00",
+"y c #ffae00",
+"u c #ffb000",
+"i c #ffb100",
+"p c #ffb300",
+"a c #ffb400",
+"s c #ffb600",
+"d c #ffb700",
+"f c #ffb900",
+"g c #ffbb00",
+"h c #ffbc00",
+"j c #ffbe00",
+"k c #ffbf00",
+"l c #ffc100",
+"z c #ffc200",
+"x c #ffc400",
+"c c #ffc500",
+"v c #fec700",
+"b c #ffc800",
+"n c #ffca00",
+"m c #ffcc00",
+"M c #ffcd00",
+"N c #ffcf00",
+"B c #ffd000",
+"V c #ffd200",
+"C c #ffd300",
+"Z c #ffd500",
+"A c #ffd600",
+"S c #ffd800",
+"D c #ffd900",
+"F c #ffdb00",
+"G c #ffdd00",
+"H c #ffde00",
+"J c #ffe000",
+"K c #ffe100",
+"L c #ffe300",
+"P c #ffe400",
+"I c None",
+/* pixels */
+"IIIIIIIIIIIIIIIDSZCVBMmnvcxzkjhgdIIIIIIIIIIIIIII",
+"IIIIIIIIIKJHGDSAZVBNmnbvxzljhgfsapuytrwIIIIIIIII",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IP                                            *I",
+"LK                                            %$",
+"JG                                            #+",
+"FD                                            +o",
+"IA                                            XI",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IIIIIIIIIfdapiytreq09765421<>:;-*&%$@+OIIIIIIIII",
+"IIIIIIIIIIIIIIIew09875431<,>;-=&%IIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIJGSZBIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJGSZBIIII",
+"IIIGDZVMncIIIIIIIIIIIIIIIIIIIIIIIIIIIIGDZVMncIII",
+"IIFACNmvxkhIIIIIIIIIIIIIIIIIIIIIIIIIIFACNmvxkhII",
+"ISC  bx h aiIIIIIIIIIIIIIIIIIIIIIIIISC  bxl  aiI",
+"ZBM  lj s yeqIIIIIIIIIIIIIIIIIIIIIIZBM  ljf  yeq",
+"Nnvzkgd u w97IIIIIIIIIIIIIIIIIIIIIINnvzkgdpurw97",
+"vxkhdau w 752IIIIIIIIIIIIIIIIIIIIIIvxk       752",
+"lhfaite 8 3<>IIIIIIIIIIIIIIIIIIIIIIlhf ite08 3<>",
+"gsp  q9 4 ,;=IIIIIIIIIIIIIIIIIIIIIIgsp rq964 ,;=",
+"Iur  74 , =&IIIIIIIIIIIIIIIIIIIIIIIIur       =&I",
+"II0752<:-&$IIIIIIIIIIIIIIIIIIIIIIIIII0752<:-&$II",
+"III31>;*%@IIIIIIIIIIIIIIIIIIIIIIIIIIII31>;*%@III",
+"IIII;=%#OIIIIIIIIIIIIIIIIIIIIIIIIIIIIII;=%#OIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIJGDACBMnIIIIIIIIIIIIIIIIIIII",
+"IIIIJGSZBIIIIIIIIIKHFSZVNmbczkIIIIIIIIIJGSZBIIII",
+"IIIGDZVMncIIIIII                IIIIIIGDZVMncIII",
+"IIFACNmvxkhIIIII                IIIIIFACNmvxkhII",
+"ISC mb l  aiIIID                0IIISC  b lh aiI",
+"ZBM c  f  yeqISZ                75IZBM  l  s yeq",
+"Nnv    purw97ICB                42INnvzkg    w97",
+"vxk   utw0752IMn                <>Ivxkhdau   752",
+"lhf    0853<>Ibc                :-Ilhfait    3<>",
+"gsp r  6  ,;=Izk                *%Igsp  q  4 ,;=",
+"Iur 97 2  =&IIIg                $IIIur  7 2, =&I",
+"II0752<:-&$IIIII                IIIII0752<:-&$II",
+"III31>;*%@IIIIII                IIIIII31>;*%@III",
+"IIII;=%#OIIIIIIIII7531,:-*%#+oIIIIIIIII;=%#OIIII",
+"IIIIIIIIIIIIIIIIIIII<>;=&$@OIIIIIIIIIIIIIIIIIIII"
+};
+/* XPM */
+static char *cdstopped[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 71 1",
+"  c Black",
+". c Cyan",
+"X c #ff7d00",
+"o c #fe7e00",
+"O c #ff8000",
+"+ c #ff8100",
+"@ c #ff8300",
+"# c #ff8400",
+"$ c #ff8600",
+"% c #ff8800",
+"& c #ff8900",
+"* c #ff8b00",
+"= c DarkOrange",
+"- c #ff8e00",
+"; c #ff8f00",
+": c #ff9100",
+"> c #ff9200",
+", c #ff9400",
+"< c #ff9500",
+"1 c #fe9700",
+"2 c #ff9900",
+"3 c #ff9a00",
+"4 c #ff9c00",
+"5 c #ff9d00",
+"6 c #ff9f00",
+"7 c #ffa000",
+"8 c #ffa200",
+"9 c #ffa300",
+"0 c #ffa500",
+"q c #ffa600",
+"w c #ffa800",
+"e c #ffaa00",
+"r c #ffab00",
+"t c #ffad00",
+"y c #ffae00",
+"u c #ffb000",
+"i c #ffb100",
+"p c #ffb300",
+"a c #ffb400",
+"s c #ffb600",
+"d c #ffb700",
+"f c #ffb900",
+"g c #ffbb00",
+"h c #ffbc00",
+"j c #ffbe00",
+"k c #ffbf00",
+"l c #ffc100",
+"z c #ffc200",
+"x c #ffc400",
+"c c #ffc500",
+"v c #fec700",
+"b c #ffc800",
+"n c #ffca00",
+"m c #ffcc00",
+"M c #ffcd00",
+"N c #ffcf00",
+"B c #ffd000",
+"V c #ffd200",
+"C c #ffd300",
+"Z c #ffd500",
+"A c #ffd600",
+"S c #ffd800",
+"D c #ffd900",
+"F c #ffdb00",
+"G c #ffdd00",
+"H c #ffde00",
+"J c #ffe000",
+"K c #ffe100",
+"L c #ffe300",
+"P c #ffe400",
+"I c None",
+/* pixels */
+"IIIIIIIIIIIIIIIDSZCVBMmnvcxzkjhgdIIIIIIIIIIIIIII",
+"IIIIIIIIIKJHGDSAZVBNmnbvxzljhgfsapuytrwIIIIIIIII",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IP                                            *I",
+"LK                                            %$",
+"JG                                            #+",
+"FD                                            +o",
+"IA                                            XI",
+"II                                            II",
+"II                                            II",
+"II                                            II",
+"IIIIIIIIIfdapiytreq09765421<>:;-*&%$@+OIIIIIIIII",
+"IIIIIIIIIIIIIIIew09875431<,>;-=&%IIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIJGSZBIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJGSZBIIII",
+"IIIGDZVMncIIIIIIIIIIIIIIIIIIIIIIIIIIIIGDZVMncIII",
+"IIFACNmvxkhIIIIIIIIIIIIIIIIIIIIIIIIIIFACNmvxkhII",
+"ISC  bx  faiIIIIIIIIIIIIIIIIIIIIIIIISC  bxl  aiI",
+"ZBM  lj   yeqIIIIIIIIIIIIIIIIIIIIIIZBM  ljf  yeq",
+"Nnvzkgdp   97IIIIIIIIIIIIIIIIIIIIIINnvzkgdpurw97",
+"vxkhdautw  52IIIIIIIIIIIIIIIIIIIIIIvxkhdautw0752",
+"lhfaite0   <>IIIIIIIIIIIIIIIIIIIIIIlhf  te0  3<>",
+"gsp  q9   ,;=IIIIIIIIIIIIIIIIIIIIIIgsp   9   ,;=",
+"Iur  74  :=&IIIIIIIIIIIIIIIIIIIIIIIIurw     :=&I",
+"II0752<:-&$IIIIIIIIIIIIIIIIIIIIIIIIII075   -&$II",
+"III31>;*%@IIIIIIIIIIIIIIIIIIIIIIIIIIII31>;*%@III",
+"IIII;=%#OIIIIIIIIIIIIIIIIIIIIIIIIIIIIII;=%#OIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII",
+"IIIIIIIIIIIIIIIIIIIIJGDACBMnIIIIIIIIIIIIIIIIIIII",
+"IIIIJGSZBIIIIIIIIIKHFSZVNmbczkIIIIIIIIIJGSZBIIII",
+"IIIGDZVMncIIIIII                IIIIIIGDZVMncIII",
+"IIFACNmvxkhIIIII                IIIIIFACNmvxkhII",
+"ISC mb l  aiIIID                0IIISC  b lh aiI",
+"ZBM c  f  yeqISZ                75IZBM  l  s yeq",
+"Nnv    purw97ICB                42INnvzkg    w97",
+"vxk   utw0752IMn                <>Ivxkhdau   752",
+"lhf    0853<>Ibc                :-Ilhfait    3<>",
+"gsp r  6  ,;=Izk                *%Igsp  q  4 ,;=",
+"Iur 97 2  =&IIIg                $IIIur  7 2, =&I",
+"II0752<:-&$IIIII                IIIII0752<:-&$II",
+"III31>;*%@IIIIII                IIIIII31>;*%@III",
+"IIII;=%#OIIIIIIIII7531,:-*%#+oIIIIIIIII;=%#OIIII",
+"IIIIIIIIIIIIIIIIIIII<>;=&$@OIIIIIIIIIIIIIIIIIIII"
+};
+/* XPM */
+static char * cdled[] = {
+"110 11 4 1",
+" 	c #000000000000 s led_color_back",
+".	c #0000FFFF0000 s led_color_high",
+"X	c #00009CE60000 s led_color_med",
+"o	c #000063180000 s led_color_low",
+" .....   X X X   .....   .....   X o X   .....   .....   .....   .....   .....   X X X        ... XoX ..  Xo  ",
+". oXo . o     . X oXo . X oXo . .     . . oXo X . oXo X o XoX . . oXo . . oXo . o     X        .   X  . . o o ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         X. oX  .   o  ..  Xo  ",
+".X   X.      X.      X.      X. .X   X. .X      .X           o. .X   X. .X   X.         .X Xo  .   X  . . o o ",
+".     . X     . X XoX . o XoX . . oXo . . oXo X . oXo X o     . . oXo . . oXo . X     o               . . X X ",
+" X o X   o X o   .....   .....   .....   .....   .....   X X X   .....   .....   o X X        ... oXo         ",
+".     . X     . . oXo X X oXo . X oXo . o XoX . . oXo . X     . . oXo . o XoX . X     o                 .   X ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         X. oX          ..  Xo ",
+".X   X.      X. .X           X.      X.      o. .X   X.      o. .X   X.      o.         .X Xo         . . o X ",
+". oXo . X     . . oXo X o XoX . X     . o XoX . . oXo . X     . . oXo . o XoX . X     X                 .   o ",
+" .....   o X o   .....   .....   o X o   .....   .....   X X X   .....   .....   X X o                  .   X "};
diff --git a/XPM/standart.style b/XPM/standart.style
new file mode 120000
index 0000000..546daaf
--- /dev/null
+++ b/XPM/standart.style
@@ -0,0 +1 @@
+grey.style
\ No newline at end of file
diff --git a/cdctrl.c b/cdctrl.c
new file mode 100644
index 0000000..2a0efb7
--- /dev/null
+++ b/cdctrl.c
@@ -0,0 +1,121 @@
+/*
+ * $Id: cdctrl.c,v 1.2 1997/06/12 14:50:41 ograf Exp $
+ *
+ * Part of WMRack
+ *
+ * command line tool to control the cdrom
+ * created to test the cdrom control stuff
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "cdrom.h"
+
+char *commands[]={"info", "status", "play", "pause", "skip", "stop", "eject"};
+#define NUM_CMD 7
+
+void usage()
+{
+  fprintf(stderr,"Usage: cdrom [info|status|play|pause|skip|stop|eject] PARAMS\n");
+}
+
+int main(int argc, char **argv)
+{
+  CD *cd;
+  int i, s=0, e=0xaa, status;
+
+  if (argc<2)
+    {
+      usage();
+      exit(EXIT_FAILURE);
+    }
+
+  for (i=0; i<NUM_CMD; i++)
+    if (strcmp(argv[1],commands[i])==0)
+      break;
+  if (i==NUM_CMD)
+    {
+      usage();
+      exit(EXIT_FAILURE);
+    }
+
+  cd=cd_open("/dev/hdd",0);
+  if (cd->info==NULL)
+    printf("No CDROM in drive\n");
+  else
+    status=cd_getStatus(cd,0);
+
+  switch (i)
+    {
+    case 0:
+      printf("discid: %08lX\n",cd->info->discid);
+      printf("tracks: %d length: %dsec (%df)\n",
+	     cd->info->tracks,cd->info->slen,cd->info->len);
+      for (i=0; i<cd->info->tracks; i++)
+	{
+	  printf("%2d[%2d]: start(%10d) length(%10d f, %4d sec) %s\n",i,
+		 cd->info->track[i].num,
+		 cd->info->track[i].start,
+		 cd->info->track[i].len,
+		 cd->info->track[i].slen,
+		 cd->info->track[i].data?"DATA":"");
+	}
+      break;
+    case 1:
+      printf("status is %d\n",status);
+      printf("mode %d track %d ind %d\n",
+	     cd->info->current.mode,
+	     cd->info->current.track,
+	     cd->info->current.index);
+      i=cd->info->current.track;
+      if (i!=-1)
+	printf("%d[%d]: s%d l%d sl%d d%d\n",i,
+	       cd->info->track[i].num,
+	       cd->info->track[i].start,
+	       cd->info->track[i].len,
+	       cd->info->track[i].slen,
+	       cd->info->track[i].data);
+      else
+	printf("no current track\n");
+      printf("rel %d:%d:%d abs %d:%d:%d\n",
+	     cd->info->current.relmsf.minute,
+	     cd->info->current.relmsf.second,
+	     cd->info->current.relmsf.frame,
+	     cd->info->current.absmsf.minute,
+	     cd->info->current.absmsf.second,
+	     cd->info->current.absmsf.frame);
+      break;
+    case 2:
+      if (argc>2)
+	s=atoi(argv[2]);
+      if (argc>3)
+	e=atoi(argv[3]);
+      cd_doPlay(cd,s,e);
+      break;
+    case 3:
+      cd_doPause(cd);
+      break;
+    case 4:
+      if (argc!=3)
+	{
+	  fprintf(stderr,"skip needs only one arg (seconds)\n");
+	  exit(EXIT_FAILURE);
+	}
+      s=atoi(argv[2]);
+      cd_doSkip(cd,s);
+      break;
+    case 5:
+      cd_doStop(cd);
+      break;
+    case 6:
+      cd_doEject(cd);
+      break;
+    default:
+      usage();
+      exit(EXIT_FAILURE);
+    }
+  cd_close(cd);
+  return EXIT_SUCCESS;
+}
diff --git a/cdrom.c b/cdrom.c
new file mode 100644
index 0000000..2ecb575
--- /dev/null
+++ b/cdrom.c
@@ -0,0 +1,902 @@
+/*
+ * $Id: cdrom.c,v 1.4 1997/06/12 16:27:28 ograf Exp $
+ *
+ * cdrom utility functions for WMRack
+ *
+ * written by Oliver Graf <ograf at fga.de>
+ *
+ * some hints taken from WorkBone
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <fcntl.h>
+
+#ifdef linux
+#  include <linux/cdrom.h>
+#else
+#  include <sundev/srreg.h>
+#endif /* linux */
+
+#include "cdrom.h"
+
+/* workaround -- used ints in MSF, linux uses u_char, what use other systems? */
+#define msftoMSF(d,s) d.minute=s.minute; d.second=s.second; d.frame=s.frame;
+#define MSFtocdmsf(d,s,e) d.cdmsf_min0=s.minute; d.cdmsf_sec0=s.second; d.cdmsf_frame0=s.frame; d.cdmsf_min1=e.minute; d.cdmsf_sec1=e.second; d.cdmsf_frame1=e.frame;
+
+/*
+ * cddb_sum(num)
+ *
+ * utility function to cddb_discid
+ */
+int cddb_sum(int n)
+{
+  char buf[12], *p;
+  int  ret = 0;
+
+  /* For backward compatibility this algorithm must not change */
+  sprintf(buf,"%u",n);
+  for (p=buf; *p!='\0'; p++)
+    ret+=(*p-'0');
+  return (ret);
+}
+
+/*
+ * cddb_discid(cdinfo)
+ *
+ * calculates the id for a given cdinfo structure
+ */
+unsigned long cddb_discid(CDInfo *cdinfo)
+{
+  int i, t=0, n=0;
+
+  /* For backward compatibility this algorithm must not change */
+  for (i=0; i<cdinfo->tracks; i++) {
+    n+=cddb_sum((cdinfo->track[i].toc.minute*60) + cdinfo->track[i].toc.second);
+    t+=((cdinfo->track[i+1].toc.minute*60) + cdinfo->track[i+1].toc.second) -
+      ((cdinfo->track[i].toc.minute*60) + cdinfo->track[i].toc.second);
+  }
+  cdinfo->discid=((n % 0xff) << 24 | t << 8 | cdinfo->tracks);
+  return cdinfo->discid;
+}
+
+/*
+ * cd_readTOC(CD)
+ *
+ * Read the table of contents from the CD.
+ */
+CDInfo *cd_readTOC(CD *cd)
+{
+  struct cdrom_tochdr   hdr;
+  struct cdrom_tocentry entry;
+  int                   i;
+  CDInfo                *info;
+  MSF                   tmp;
+
+  if (cd->fd<0)
+    return NULL;
+
+  info=(CDInfo *)malloc(sizeof(CDInfo));
+  if (info==NULL)
+    {
+      perror("cd_readTOC[malloc]");
+      return NULL;
+    }
+
+  if (ioctl(cd->fd, CDROMREADTOCHDR, &hdr))
+    {
+      perror("cd_readTOC[readtochdr]");
+      free(info);
+      return NULL;
+    }
+
+  info->len=info->slen=0;
+  info->start=hdr.cdth_trk0;
+  info->end=hdr.cdth_trk1;
+  info->tracks=hdr.cdth_trk1-hdr.cdth_trk0+1;
+#ifdef DEBUG
+  fprintf(stderr,"cd_readTOC[DEBUG]: read header with %d tracks\n",
+	  info->tracks);
+#endif
+
+  info->track=malloc((info->tracks+1)*sizeof(TrackInfo));
+  if (info->track==NULL)
+    {
+      perror("cd_readTOC[malloc]");
+      free(info);
+      return NULL;
+    }
+  for (i=0; i<=info->tracks; i++)
+    {
+      if (i==info->tracks)
+	entry.cdte_track=CDROM_LEADOUT;
+      else
+	entry.cdte_track=info->start+i;
+      entry.cdte_format=CDROM_MSF;
+      if (ioctl(cd->fd, CDROMREADTOCENTRY, &entry))
+	{
+	  perror("cd_readTOC[tocentry read]");
+	  free(info->track);
+	  free(info);
+	  return NULL;
+	}
+
+      info->track[i].num=i+1;
+      msftoMSF(info->track[i].toc,entry.cdte_addr.msf);
+      info->track[i].start=(((entry.cdte_addr.msf.minute*CD_SECS)+
+			     entry.cdte_addr.msf.second)*CD_FRAMES+
+			    entry.cdte_addr.msf.frame);
+      info->track[i].len=-1;
+      info->track[i].slen=-1;
+      info->track[i].data=entry.cdte_ctrl&CDROM_DATA_TRACK?1:0;
+    }
+
+  /* Now compute actual track lengths. */
+  for (i=0; i<info->tracks; i++)
+    {
+      info->track[i].len=info->track[i+1].start-info->track[i].start;
+      info->track[i].slen=info->track[i].len/CD_FRAMES;
+    }
+
+  tmp=subMSF(info->track[info->tracks].toc,info->track[0].toc);
+  info->len=msfFrames(tmp);
+  info->slen=info->len/CD_FRAMES;
+  cddb_discid(info);
+
+  return info;
+}
+
+/*
+ * cd_playMSF(cd,start,end)
+ *
+ * sends the actual play to the cdrom.
+ */
+int cd_playMSF(CD *cd, MSF start, MSF end)
+{
+  struct cdrom_msf msf;
+
+  if (cd==NULL || cd->fd<0 || cd->info==NULL)
+    return 1;
+
+  MSFtocdmsf(msf,start,end);
+
+  if (cd->info->current.mode==CDM_STOP)
+    if (ioctl(cd->fd, CDROMSTART))
+      {
+	perror("cd_playMSF[CDROMSTART]");
+	return 1;
+      }
+
+  if (ioctl(cd->fd, CDROMPLAYMSF, &msf))
+    {
+      printf("cd_playMSF[playmsf]\n");
+      printf("  msf = %d:%d:%d %d:%d:%d\n",
+	     msf.cdmsf_min0, msf.cdmsf_sec0, msf.cdmsf_frame0,
+	     msf.cdmsf_min1, msf.cdmsf_sec1, msf.cdmsf_frame1);
+      perror("cd_playMSF[CDROMPLAYMSF]");
+      return 1;
+    }
+  return 0;
+}
+
+/*
+ * cdinfo_free(info)
+ *
+ * frees a allocate CDInfo
+ */
+void cdinfo_free(CDInfo *info)
+{
+  if (info->track)
+    free(info->track);
+  free(info);
+}
+
+/*
+ * cd_close(cd)
+ *
+ * closes the cd device and frees all data structures inside
+ */
+void cd_close(CD *cd)
+{
+  if (cd==NULL)
+    return;
+
+  if (cd->numcd)
+    cdinfo_free(cd->info);
+  free(cd->device);
+  close(cd->fd);
+  free(cd);
+}
+
+/*
+ * cd_open(device)
+ *
+ * sets the device for further cd-access
+ * set force to TRUE for immidiate change
+ */
+CD *cd_open(char *device, int noopen)
+{
+  struct stat st;
+  CD *cd;
+
+  if (stat(device,&st))
+    {
+      perror("cd_open[stat]");
+      return NULL;
+    }
+
+  cd=(CD *)malloc(sizeof(CD));
+  if (cd==NULL)
+    {
+      perror("cd_open[malloc]");
+      return NULL;
+    }
+
+  cd->device=strdup(device);
+  cd->fd=-1;
+  cd->status=-1;
+  cd->numcd=0;
+  cd->info=NULL;
+
+  if (!noopen)
+    cd_reopen(cd);
+
+  return cd;
+}
+
+/*
+ * cd_suspend(cd)
+ *
+ * closes the cd device, but leaves all structures intact
+ */
+int cd_suspend(CD *cd)
+{
+  if (cd==NULL)
+    return -1;
+
+  close(cd->fd);
+  cd->fd=-1;
+  cd->status=-1;
+
+  if (cd->info)
+    memset(&cd->info->current,0xff,sizeof(CDPosition));
+
+  return 0;
+}
+
+/*
+ * cd_reopen(cd)
+ *
+ * reopens a suspended cd device, and reads the new TOC if cd is changed
+ */
+int cd_reopen(CD *cd)
+{
+  if (cd==NULL)
+    return 1;
+
+  if ((cd->fd=open(cd->device,0))<0)
+    {
+      perror("cd_reopen[open]");
+      return 1;
+    }
+
+  if (cd->info)
+    cdinfo_free(cd->info);
+
+  cd->info=cd_readTOC(cd);
+  if (cd->info!=NULL)
+    {
+      cd->status=1;
+      cd->numcd=1;
+      cd->info->play.start_track=cd->info->start;
+      cd->info->play.end_track=cd->info->tracks;
+    }
+  else
+    {
+      cd->status=-1;
+      cd->numcd=0;
+      close(cd->fd);
+      cd->fd=-1;
+    }
+
+  return 0;
+}
+
+/*
+ * cd_status(cd,reopen)
+ *
+ * Return values:
+ *  -1 error
+ *   0 No CD in drive.
+ *   1 CD in drive.
+ *   2 CD has just been inserted (TOC has been read)
+ *
+ * Updates the CDPosition struct of the cd.
+ * If reopen is not 0, the device is automatically reopened if needed.
+ */
+int cd_getStatus(CD *cd, int reopen)
+{
+  struct cdrom_subchnl sc;
+  int                  ret=1, newcd=0;
+  CDPosition           *cur;
+
+  if (cd==NULL)
+    return -1;
+
+  if (cd->fd<0)
+    {
+      if (!reopen)
+	{
+	  cd->status=0;
+	  return 0;
+	}
+      if (cd_reopen(cd))
+	return -1;
+      newcd=1;
+    }
+
+  if (cd->info==NULL)
+    {
+      cd->status=0;
+      return 0;
+    }
+
+  cur=&cd->info->current;
+
+  sc.cdsc_format=CDROM_MSF;
+
+  if (ioctl(cd->fd, CDROMSUBCHNL, &sc))
+    {
+      memset(cur,0xff,sizeof(CDPosition));
+      cur->mode=CDM_EJECT;
+      cd->status=0;
+      return 0;
+    }
+
+  if (newcd)
+    {
+      memset(cur,0xff,sizeof(CDPosition));
+      cur->mode=CDM_STOP;
+      ret=2;
+    }
+
+  switch (sc.cdsc_audiostatus)
+    {
+    case CDROM_AUDIO_PLAY:
+      cur->mode=CDM_PLAY;
+
+    setpos:
+      cur->track=sc.cdsc_trk;
+      cur->index=sc.cdsc_ind;
+
+      msftoMSF(cur->relmsf,sc.cdsc_reladdr.msf);
+      msftoMSF(cur->absmsf,sc.cdsc_absaddr.msf);
+
+      break;
+
+    case CDROM_AUDIO_PAUSED:
+      cur->mode=CDM_PAUSE;
+      goto setpos;
+
+    case CDROM_AUDIO_COMPLETED:
+      cur->mode=CDM_COMP;
+      break;
+
+    case CDROM_AUDIO_NO_STATUS:
+      memset(cur,0xff,sizeof(CDPosition));
+      cur->mode=CDM_STOP;
+      break;
+    }
+  cd->status=ret;
+  return ret;
+}
+
+/*
+ * cd_doPlay(cd,start,end);
+ *
+ * start playing the cd. cd must be opened. play starts at track start goes
+ * until end of track end.
+ * 1 is the first track of the cd.
+ */
+int cd_doPlay(CD *cd, int start, int end)
+{
+  if (cd==NULL || cd->fd<0 || cd->info==NULL)
+    return 1;
+  if (start>end)
+    {
+      int d=end;
+      end=start;
+      start=d;
+    }
+  start-=cd->info->start;
+  if (start<0) start=0;
+  if (end>cd->info->tracks) end=cd->info->tracks; /* LEADOUT */
+#ifdef DEBUG
+  fprintf(stderr,"cd_doPlay[DEBUG]: play from [%d]%d:%d:%d to [%d]%d:%d:%d\n",
+	  start,
+	  cd->info->track[start].toc.minute,
+	  cd->info->track[start].toc.second,
+	  cd->info->track[start].toc.frame,
+	  end,
+	  cd->info->track[end].toc.minute,
+	  cd->info->track[end].toc.second,
+	  cd->info->track[end].toc.frame);
+#endif
+  cd->info->play.start_track=start+cd->info->start;
+  cd->info->play.end_track=end;
+  return cd_playMSF(cd,cd->info->track[start].toc,cd->info->track[end].toc);
+}
+
+/*
+ * cd_doPause(cd)
+ *
+ * Pause the CD, if it's in play mode.
+ * Resume the CD, If it's already paused.
+ */
+int cd_doPause(CD *cd)
+{
+  if (cd==NULL || cd->fd<0 || cd->info==NULL)
+    return 1;
+
+  switch (cd->info->current.mode) {
+  case CDM_PLAY:
+    cd->info->current.mode=CDM_PAUSE;
+#ifdef DEBUG
+    fprintf(stderr,"cd_doPause[DEBUG]: pausing cdrom\n");
+#endif
+    ioctl(cd->fd, CDROMPAUSE);
+    break;
+  case CDM_PAUSE:
+    cd->info->current.mode=CDM_PLAY;
+#ifdef DEBUG
+    fprintf(stderr,"cd_doPause[DEBUG]: resuming cdrom\n");
+#endif
+    ioctl(cd->fd, CDROMRESUME);
+    break;
+#ifdef DEBUG
+  default:
+    fprintf(stderr,"cd_doPause[DEBUG]: not playing or pausing\n");
+#endif
+  }
+  return 0;
+}
+
+/*
+ * cd_doStop(cd)
+ *
+ * Stop the CD if it's not already stopped.
+ */
+int cd_doStop(CD *cd)
+{
+  if (cd==NULL || cd->fd<0 || cd->info==NULL)
+    return 1;
+
+  if (cd->info->current.mode!=CDM_STOP)
+    {
+#ifdef DEBUG
+      fprintf(stderr,"cd_doStop[DEBUG]: stopping cdrom\n");
+#endif
+      if (ioctl(cd->fd, CDROMSTOP))
+	{
+	  perror("cd_doStop[CDROMSTOP]");
+	  return 1;
+	}
+      if (cd->info->current.track>=cd->info->tracks)
+	cd->info->play.start_track=cd->info->start;
+      else
+	cd->info->play.start_track=cd->info->current.track;
+      memset(&cd->info->current,0xff,sizeof(CDPosition));
+      cd->info->current.mode=CDM_STOP;
+    }
+  return 0;
+}
+
+/*
+ * cd_doEject(CD *cd)
+ *
+ * Eject the current CD, if there is one.
+ * Returns 0 on success, 1 if the CD couldn't be ejected, or 2 if the
+ * CD contains a mounted filesystem.
+ */
+int cd_doEject(CD *cd)
+{
+  struct stat	stbuf;
+  struct ustat	ust;
+
+  if (cd==NULL || cd->fd<0 || cd->info==NULL)
+    return 0;
+  if (cd->info->current.mode==CDM_EJECT)
+    return 0;
+
+  if (fstat(cd->fd, &stbuf) != 0)
+    {
+      perror("cd_doEject[fstat]");
+      return 1;
+    }
+
+  /* check for mounted filesystem */
+  if (ustat(stbuf.st_rdev, &ust)==0)
+    {
+      perror("cd_doEject[mounted]");
+      return 2;
+    }
+
+#ifdef DEBUG
+  fprintf(stderr,"cd_doEject[DEBUG]: stopping cdrom\n");
+#endif
+  ioctl(cd->fd, CDROMSTOP);
+#ifdef DEBUG
+  fprintf(stderr,"cd_doEject[DEBUG]: ejecting cdrom\n");
+#endif
+  if (ioctl(cd->fd, CDROMEJECT))
+    {
+      perror("cd_doEject[CDROMEJECT]");
+      return 1;
+    }
+
+  cd_suspend(cd);
+
+  return 0;
+}
+
+/*
+ * cd_doSkip(cd,seconds)
+ *
+ * Skip some seconds from current position
+ */
+int cd_doSkip(CD *cd, int secs)
+{
+  MSF start, end;
+
+  if (cd==NULL || cd->fd<0 || cd->info==NULL)
+    return 1;
+
+  end=cd->info->track[cd->info->tracks].toc;
+  start=cd->info->current.absmsf;
+  start.second+=secs;
+#ifdef DEBUG
+  fprintf(stderr,"cd_doSkip[DEBUG]: skipping %d seconds\n",secs);
+#endif
+  while (start.second>59)
+    {
+      start.second-=60;
+      start.minute++;
+    }
+  while (start.second<0)
+    {
+      start.second+=60;
+      start.minute--;
+    }
+  if (cmpMSF(start,cd->info->track[0].toc)<0)
+    {
+      start=cd->info->track[0].toc;
+#ifdef DEBUG
+      fprintf(stderr,"cd_doSkip[DEBUG]: can't skip before first track\n");
+#endif
+    }
+
+#ifdef DEBUG
+  fprintf(stderr,"cd_doSkip[DEBUG]: play from %d:%d:%d to %d:%d:%d\n",
+	  start.minute, start.second, start.frame,
+	  end.minute, end.second, end.frame);
+#endif
+  return cd_playMSF(cd,start,end);
+}
+
+/*
+ * cmpMSF(a,b)
+ *
+ * compares two MSF structs
+ */
+int cmpMSF(MSF a, MSF b)
+{
+  int fa=msfFrames(a), fb=msfFrames(b);
+  if (fa<fb)
+    return -1;
+  else if (fa>fb)
+    return 1;
+  return 0;
+}
+
+/*
+ * subMSF(a,b)
+ *
+ * subtract b from a
+ */
+MSF subMSF(MSF a, MSF b)
+{
+  MSF c;
+  c.minute=a.minute-b.minute;
+  c.second=a.second-b.second;
+  c.frame =a.frame -b.frame;
+  while (c.frame<0) {c.frame+=75; c.second--;}
+  while (c.second<0) {c.second+=60; c.minute--;}
+  if (c.minute<0) c.minute=0;
+  return c;
+}
+
+#ifdef 0
+#ifdef BOZO /* this seems to be sun/dec stuff */
+/*
+ * The minimum volume setting for the Sun and DEC CD-ROMs is 128 but for other
+ * machines this might not be the case.
+ */
+int	min_volume = 128;
+int	max_volume = 255;
+
+/*
+ * scale_volume(vol, max)
+ *
+ * Return a volume value suitable for passing to the CD-ROM drive.  "vol"
+ * is a volume slider setting; "max" is the slider's maximum value.
+ *
+ * On Sun and DEC CD-ROM drives, the amount of sound coming out the jack
+ * increases much faster toward the top end of the volume scale than it
+ * does at the bottom.  To make up for this, we make the volume scale look
+ * sort of logarithmic (actually an upside-down inverse square curve) so
+ * that the volume value passed to the drive changes less and less as you
+ * approach the maximum slider setting.  The actual formula looks like
+ *
+ *     (max^2 - (max - vol)^2) * (max_volume - min_volume)
+ * v = --------------------------------------------------- + min_volume
+ *                           max^2
+ *
+ * If your system's volume settings aren't broken in this way, something
+ * like the following should work:
+ *
+ *	return ((vol * (max_volume - min_volume)) / max + min_volume);
+ */
+scale_volume(vol, max)
+     int	vol, max;
+{
+  return ((max * max - (max - vol) * (max - vol)) *
+	  (max_volume - min_volume) / (max * max) + min_volume);
+}
+
+/*
+ * unscale_volume(cd_vol, max)
+ *
+ * Given a value between min_volume and max_volume, return the volume slider
+ * value needed to achieve that value.
+ *
+ * Rather than perform floating-point calculations to reverse the above
+ * formula, we simply do a binary search of scale_volume()'s return values.
+ */
+unscale_volume(cd_vol, max)
+     int	cd_vol, max;
+{
+  int	vol, incr, scaled;
+
+  for (vol = max / 2, incr = max / 4 + 1; incr; incr /= 2)
+    {
+      scaled = scale_volume(vol, max);
+      if (cd_vol == scaled)
+	break;
+      if (cd_vol < scaled)
+	vol -= incr;
+      else
+	vol += incr;
+    }
+
+  if (vol < 0)
+    vol = 0;
+  else if (vol > max)
+    vol = max;
+
+  return (vol);
+}
+
+/*
+ * cd_volume(vol, bal, max)
+ *
+ * Set the volume levels.  "vol" and "bal" are the volume and balance knob
+ * settings, respectively.  "max" is the maximum value of the volume knob
+ * (the balance knob is assumed to always go from 0 to 20.)
+ */
+void
+cd_volume(vol, bal, max)
+     int	vol, bal, max;
+{
+  int	left, right;
+  struct cdrom_volctrl v;
+
+  /*
+   * Set "left" and "right" to volume-slider values accounting for the
+   * balance setting.
+   *
+   * XXX - the maximum volume setting is assumed to be in the 20-30 range.
+   */
+  if (bal < 9)
+    right = vol - (9 - bal) * 2;
+  else
+    right = vol;
+  if (bal > 11)
+    left = vol - (bal - 11) * 2;
+  else
+    left = vol;
+
+  /* Adjust the volume to make up for the CD-ROM drive's weirdness. */
+  left = scale_volume(left, max);
+  right = scale_volume(right, max);
+
+  v.channel0 = left < 0 ? 0 : left > 255 ? 255 : left;
+  v.channel1 = right < 0 ? 0 : right > 255 ? 255 : right;
+  if (cd_fd >= 0)
+    (void) ioctl(cd_fd, CDROMVOLCTRL, &v);
+}
+
+/*
+ * Set the offset into the current track and play.  -1 means end of track
+ * (i.e., go to next track.)
+ */
+void
+play_from_pos(pos)
+     int	pos;
+{
+  if (pos == -1)
+    if (cd)
+      pos = cd->trk[cur_track - 1].length - 1;
+  if (cur_cdmode == 1)
+    play_cd(cur_track, pos, playlist[cur_listno-1].end);
+}
+
+/* Try to keep the CD open all the time.  This is run in a subprocess. */
+void
+keep_cd_open()
+{
+  int	fd;
+  struct flock	fl;
+  extern	end;
+
+  for (fd = 0; fd < 256; fd++)
+    close(fd);
+
+  if (fork())
+    exit(0);
+
+  if ((fd = open("/tmp/cd.lock", O_RDWR | O_CREAT, 0666)) < 0)
+    exit(0);
+  fl.l_type = F_WRLCK;
+  fl.l_whence = 0;
+  fl.l_start = 0;
+  fl.l_len = 0;
+  if (fcntl(fd, F_SETLK, &fl) < 0)
+    exit(0);
+
+  if (open(cd_device, 0) >= 0)
+    {
+      brk(&end);
+      pause();
+    }
+
+  exit(0);
+}
+
+/*
+ * find_trkind(track, index)
+ *
+ * Start playing at a particular track and index, optionally using a particular
+ * frame as a starting position.  Returns a frame number near the start of the
+ * index mark if successful, 0 if the track/index didn't exist.
+ *
+ * This is made significantly more tedious (though probably easier to port)
+ * by the fact that CDROMPLAYTRKIND doesn't work as advertised.  The routine
+ * does a binary search of the track, terminating when the interval gets to
+ * around 10 frames or when the next track is encountered, at which point
+ * it's a fair bet the index in question doesn't exist.
+ */
+find_trkind(track, index, start)
+     int	track, index, start;
+{
+  int	top = 0, bottom, current, interval, ret = 0, i;
+
+  if (cd == NULL || cd_fd < 0)
+    return;
+
+  for (i = 0; i < cur_ntracks; i++)
+    if (cd->trk[i].track == track)
+      break;
+  bottom = cd->trk[i].start;
+
+  for (; i < cur_ntracks; i++)
+    if (cd->trk[i].track > track)
+      break;
+
+  top = i == cur_ntracks ? (cd->length - 1) * CD_FRAMES : cd->trk[i].start;
+
+  if (start > bottom && start < top)
+    bottom = start;
+
+  current = (top + bottom) / 2;
+  interval = (top - bottom) / 4;
+
+  do {
+    play_chunk(current, current + CD_FRAMES);
+
+    if (cd_status() != 1)
+      return (0);
+    while (cur_frame < current)
+      if (cd_status() != 1 || cur_cdmode != 1)
+	return (0);
+      else
+	susleep(1);
+
+    if (cd->trk[cur_track - 1].track > track)
+      break;
+
+    if (cur_index >= index)
+      {
+	ret = current;
+	current -= interval;
+      }
+    else
+      current += interval;
+    interval /= 2;
+  } while (interval > 2);
+
+  return (ret);
+}
+
+/*
+ * Simulate usleep() using select().
+ */
+susleep(usec)
+     int	usec;
+{
+  struct timeval	tv;
+
+  timerclear(&tv);
+  tv.tv_sec = usec / 1000000;
+  tv.tv_usec = usec % 1000000;
+  return (select(0, NULL, NULL, NULL, &tv));
+}
+/*
+ * Read the initial volume from the drive, if available.  Set cur_balance to
+ * the balance level (0-20, 10=centered) and return the proper setting for
+ * the volume knob.
+ *
+ * "max" is the maximum value of the volume knob.
+ */
+read_initial_volume(max)
+     int max;
+{
+  int	left, right;
+
+  /* Suns can't read the volume; oh well */
+  left = right = 255;
+
+  left = unscale_volume(left, max);
+  right = unscale_volume(right, max);
+
+  if (left < right)
+    {
+      cur_balance = (right - left) / 2 + 11;
+      if (cur_balance > 20)
+	cur_balance = 20;
+
+      return (right);
+    }
+  else if (left == right)
+    {
+      cur_balance = 10;
+      return (left);
+    }
+  else
+    {
+      cur_balance = (right - left) / 2 + 9;
+      if (cur_balance < 0)
+	cur_balance = 0;
+
+      return (left);
+    }
+}
+#endif /* BOZO */
+#endif
diff --git a/cdrom.h b/cdrom.h
new file mode 100644
index 0000000..f423c9d
--- /dev/null
+++ b/cdrom.h
@@ -0,0 +1,96 @@
+/*
+ * $Id: cdrom.h,v 1.3 1997/06/12 14:51:32 ograf Exp $
+ */
+
+#ifndef _MY_CDROM_H
+#define _MY_CDROM_H
+
+/* cd status modes */
+#define CDM_CLOSED -1
+#define CDM_COMP    0
+#define CDM_PLAY    1
+#define CDM_PAUSE   2
+#define CDM_STOP    3
+#define CDM_EJECT   CDM_CLOSED
+
+typedef struct {
+  int minute;
+  int second;
+  int frame;
+} MSF;
+
+#define fSecs(f) (int)(f/75)
+#define fMins(f) (int)(f/75/60)
+
+#define msfFrames(msf) (((msf.minute*60)+msf.second)*75+msf.frame)
+#define msfSecs(msf)   (((msf.minute*60)+msf.second)
+
+#define MSFnone(msf)   msf.minute=msf.second=msf.frame=-1
+
+typedef struct {
+  int num;
+  MSF toc;    /* real start */
+  int start;  /* start in frames */
+  int len;    /* length in frames */
+  int slen;   /* length in seconds */
+  int data;   /* datatrack? */
+} TrackInfo;
+
+typedef struct {
+  int mode;
+  int track;
+  int index;
+  MSF relmsf;
+  MSF absmsf;
+} CDPosition;
+
+typedef struct {    /* stores information about the last play action */
+  int start_track;
+  int end_track;
+} CDPlayInfo;
+
+typedef struct {
+  CDPosition    current;
+  CDPlayInfo    play;
+  unsigned long discid;
+  int           len;     /* cd length in frames */
+  int           slen;    /* cd length in seconds */
+  int           start;   /* first track of the cd */
+  int           end;     /* last track of the cd */
+  int           tracks;  /* number of tracks (end-start)+1 */
+  TrackInfo     *track;
+} CDInfo;
+
+typedef struct {
+  int    fd;
+  char   *device;
+  int    status;   /* this keeps the return value of cd_getStatus() */
+  int    numcd;
+  CDInfo *info;
+} CD;
+
+CD *cd_open(char *device, int noopen);
+int cd_reopen(CD *cd);
+int cd_suspend(CD *cd);
+void cd_close(CD *cd);
+
+void cdinfo_free(CDInfo *info);
+
+int cd_getStatus(CD *cd, int reopen);
+
+/*
+ * all cd_do* commands assume that prior to their call a cd_getStatus
+ * is done to update the CDPosition struct of the cd
+ */
+int cd_doPlay(CD *cd, int start, int end);
+int cd_doSkip(CD *cd, int secs);
+int cd_doPause(CD *cd);
+int cd_doStop(CD *cd);
+int cd_doEject(CD *cd);
+
+int cmpMSF(MSF a, MSF b);
+MSF subMSF(MSF a, MSF b);
+
+#define curMode(c) (c->info==NULL?CDM_EJECT:c->info->current.mode)
+
+#endif
diff --git a/wmrack.c b/wmrack.c
new file mode 100644
index 0000000..877e216
--- /dev/null
+++ b/wmrack.c
@@ -0,0 +1,854 @@
+/*
+ * $Id: wmrack.c,v 1.8 1997/06/14 13:24:57 ograf Exp $
+ *
+ * WMRack - WindowMaker Sound Control Panel
+ *
+ * Rewritten by         Oliver Graf  <ograf at fga.de>   http://www.fga.de/~ograf/
+ * Graphics designed by Heiko Wagner <hwagner at fga.de> http://www.fga.de/~hwagner/
+ *
+ * ascd originally By Rob Malda <malda at cs.hope.edu>   http://www.cs.hope.edu/~malda/
+ *
+ * This is an 'WindowMaker Look & Feel' Dock applet that can be
+ * used to control an cdrom. Also works with AfterSteps Wharf.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/extensions/shape.h>
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/time.h>
+
+#include <signal.h>
+
+#include "xpmicon.h"
+#include "cdrom.h"
+
+/* Functions *****************************************************************/
+void  usage();
+void  parseCmdLine(int argc, char *argv[]);
+void  initHandler();
+void  createWindow(int, char **);
+void  shutDown(int);
+void  mainLoop();
+int   flushExpose(Window w);
+void  redrawWindow();
+void  redrawDisplay(int force_win);
+Pixel getColor(char *name);
+Time  getTime();
+
+/* Global stuff **************************************************************/
+#define PLAY    0
+#define PAUSE   1
+#define STOP    2
+#define UPTRACK 3
+#define DNTRACK 4
+#define EJECT   5
+
+Display *Disp;
+Window Root;
+Window Iconwin;
+Window Win;
+char *Geometry=0;
+GC WinGC;
+
+/* varibles for the options */
+char *StyleXpmFile=NULL;
+char *LedColor=NULL;
+char CdDevice[1024]="/dev/cdrom";
+int  withdraw=0;
+int noprobe=0;
+
+MSF last_time={-1,-1,-1};
+int last_track=-1;
+int last_cdmode=-1; /* to sense a change */
+int displaymode=0;  /* bit 1 is run/remain, bit 2 is track/total */
+int playmode=0;     /* 0==play through, 1==repeat all, 2==repeat track */
+int repeattrack=-1; /* for playmode 2 */
+int newdisc=0;
+Time press_time=-1;
+
+/* our cd device */
+CD *cd;
+
+/*
+ * start the whole stuff and enter the MainLoop
+ */
+int main(int argc,char *argv[])
+{
+  parseCmdLine(argc, argv);
+  cd=cd_open(CdDevice,noprobe);
+  if (cd_getStatus(cd,0)>0)
+    newdisc=1;
+  initHandler();
+  createWindow(argc, argv);
+  mainLoop();
+  return 0;
+}
+
+/*
+ * usage()
+ *
+ * print out usage text and exit
+ */
+void usage()
+{
+  fprintf(stderr,"wmrack - Version 0.9\n");
+  fprintf(stderr,"usage: wmrack [OPTIONS] \n");
+  fprintf(stderr,"\n");
+  fprintf(stderr,"OPTION                  DEFAULT        DESCRIPTION\n");
+  fprintf(stderr,"-d|--device DEV         /dev/cdrom     device of the Drive\n");
+  fprintf(stderr,"-h|--help               none           display help\n");
+  fprintf(stderr,"-l|--ledcolor COLSPEC   green          set the color of the led\n");
+  fprintf(stderr,"-p|--noprobe            off            disable the startup probe\n");
+  fprintf(stderr,"-s|--style STYLEFILE    compile-time   load an alternate set of xpm\n");
+  fprintf(stderr,"-w|--withdrawn          off            start withdrawn or not\n");
+  fprintf(stderr,"\n");
+  exit(1);
+}
+
+/*
+ * parseCmdLine(argc,argv)
+ *
+ * parse the command line args
+ */
+void parseCmdLine(int argc, char *argv[])
+{
+  int i, j;
+  char opt;
+  struct {char *name, option;} Options[]={{"device",'d'},
+					  {"withdrawn",'w'},
+					  {"help",'h'},
+					  {"ledcolor",'l'},
+					  {"style",'s'},
+					  {"noprobe",'p'},
+					  {NULL,0}};
+
+  for(i=1; i<argc; i++)
+    {
+      if (argv[i][0]=='-')
+	{
+	  if (argv[i][1]=='-')
+	    {
+	      for (j=0; Options[j].name!=NULL; j++)
+		if (strcmp(Options[j].name,argv[i]+2)==0)
+		  {
+		    opt=Options[j].option;
+		    break;
+		  }
+	      if (Options[j].name==NULL)
+		usage();
+	    }
+	  else
+	    {
+	      if (argv[i][2]!=0)
+		usage();
+	      opt=argv[i][1];
+	    }
+	  switch (opt)
+	    {
+	    case 'd':  /* Device */
+	      if (++i>=argc)
+		usage();
+	      strcpy(CdDevice,argv[i]);
+	      continue;
+	    case 'w':  /* start Withdrawn */
+	      withdraw=1;
+	      continue;
+	    case 'h':  /* usage */
+	      usage();
+	      break;
+	    case 'l':  /* Led Color */
+	      if (++i>=argc)
+		usage();
+	      LedColor=strdup(argv[i]);
+	      continue;
+	    case 's':
+	      if (++i>=argc)
+		usage();
+	      StyleXpmFile=strdup(argv[i]);
+	      continue;
+	    case 'p':
+	      noprobe=1;
+	      continue;
+	    default:
+	      usage();
+	    }
+	}
+      else
+	usage();
+    }
+
+}
+
+/*
+ * initHandler()
+ *
+ * inits the signal handlers
+ */
+void initHandler()
+{
+  struct sigaction sa;
+  sa.sa_handler=shutDown;
+  sigfillset(&sa.sa_mask);
+  sa.sa_flags=0;
+  sa.sa_restorer=NULL;
+  sigaction(SIGTERM,&sa,NULL);
+  sigaction(SIGINT,&sa,NULL);
+  sigaction(SIGHUP,&sa,NULL);
+  sigaction(SIGQUIT,&sa,NULL);
+  sigaction(SIGPIPE,&sa,NULL);
+  sa.sa_handler=SIG_IGN;
+  sigaction(SIGUSR1,&sa,NULL);
+  sigaction(SIGUSR2,&sa,NULL);
+}
+
+/*
+ * createWindow(argc,argv)
+ *
+ * create the basic shaped window and set all the required stuff
+ */
+void createWindow(int argc, char **argv)
+{
+  int i;
+  unsigned int borderwidth ;
+  char *display_name=NULL;
+  char *wname="wmrack";
+  XGCValues gcv;
+  unsigned long gcm;
+  XTextProperty name;
+  Pixel back_pix, fore_pix;
+  int screen;
+  int x_fd;
+  int d_depth;
+  int ScreenWidth, ScreenHeight;
+  XSizeHints SizeHints;
+  XWMHints WmHints;
+  XClassHint classHint;
+
+  /* Open display */
+  if (!(Disp = XOpenDisplay(display_name)))
+    {
+      fprintf(stderr,"wmrack: can't open display %s\n", XDisplayName(display_name));
+      exit (1);
+    }
+
+  screen=DefaultScreen(Disp);
+  Root=RootWindow(Disp, screen);
+  d_depth=DefaultDepth(Disp, screen);
+  x_fd=XConnectionNumber(Disp);
+  ScreenHeight=DisplayHeight(Disp,screen);
+  ScreenWidth=DisplayWidth(Disp,screen);
+
+  xpm_setDefaultAttr(Disp,Root,LedColor);
+  if (StyleXpmFile)
+    {
+      if (xpm_loadSet(Disp,Root,StyleXpmFile))
+	{
+	  fprintf(stderr,"wmrack: can't load and create pixmaps\n");
+	  XCloseDisplay(Disp);
+	  exit(1);
+	}
+    }
+  else if (xpm_setDefaultSet(Disp,Root,RACK_MAX))
+    {
+      fprintf(stderr,"wmrack: can't create pixmaps\n");
+      XCloseDisplay(Disp);
+      exit(1);
+    }
+
+  SizeHints.flags=USSize|USPosition;
+  SizeHints.x=0;
+  SizeHints.y=0;
+  back_pix=getColor("white");
+  fore_pix=getColor("black");
+
+  XWMGeometry(Disp, screen, Geometry, NULL, (borderwidth=1), &SizeHints,
+	      &SizeHints.x,&SizeHints.y,&SizeHints.width,
+	      &SizeHints.height, &i);
+
+  SizeHints.width=currentXpm(attributes).width;
+  SizeHints.height=currentXpm(attributes).height;
+  Win=XCreateSimpleWindow(Disp,Root,SizeHints.x,SizeHints.y,
+			    SizeHints.width,SizeHints.height,
+			    borderwidth,fore_pix,back_pix);
+  Iconwin=XCreateSimpleWindow(Disp,Win,SizeHints.x,SizeHints.y,
+				SizeHints.width,SizeHints.height,
+				borderwidth,fore_pix,back_pix);
+  XSetWMNormalHints(Disp, Win, &SizeHints);
+
+  classHint.res_name="wmrack";
+  classHint.res_class="WMRack";
+  XSetClassHint(Disp, Win, &classHint);
+
+  XSelectInput(Disp, Win, (ExposureMask|ButtonPressMask|ButtonReleaseMask|
+			   StructureNotifyMask));
+  XSelectInput(Disp, Iconwin, (ExposureMask|ButtonPressMask|ButtonReleaseMask|
+			       StructureNotifyMask));
+
+  if (XStringListToTextProperty(&wname, 1, &name) ==0)
+    {
+      fprintf(stderr, "wmrack: can't allocate window name\n");
+      exit(-1);
+    }
+  XSetWMName(Disp, Win, &name);
+
+  /* Create WinGC */
+  gcm=GCForeground|GCBackground|GCGraphicsExposures;
+  gcv.foreground=fore_pix;
+  gcv.background=back_pix;
+  gcv.graphics_exposures=False;
+  WinGC=XCreateGC(Disp, Root, gcm, &gcv);
+
+  XShapeCombineMask(Disp, Win, ShapeBounding, 0, 0,
+		    currentXpm(mask), ShapeSet);
+  XShapeCombineMask(Disp, Iconwin, ShapeBounding, 0, 0,
+		    currentXpm(mask), ShapeSet);
+
+  WmHints.initial_state=withdraw?WithdrawnState:NormalState;
+  WmHints.icon_window=Iconwin;
+  WmHints.window_group=Win;
+  WmHints.icon_x=SizeHints.x;
+  WmHints.icon_y=SizeHints.y;
+  WmHints.flags=StateHint|IconWindowHint|IconPositionHint|WindowGroupHint;
+  XSetCommand(Disp, Win, argv, argc);
+  XSetWMHints(Disp, Win, &WmHints);
+  XMapWindow(Disp,Win);
+  redrawDisplay(1);
+}
+
+/*
+ * shutDown(int sig)
+ *
+ * handler for signal and close-down function
+ */
+void shutDown(int sig)
+{
+#ifdef DEBUG
+  fprintf(stderr,"wmrack: Shutting down\n");
+#endif
+#ifdef 0 /* this is not good, because CloseDisplay woes with this stuff freed */
+  xpm_freeSet(Disp);
+#  ifdef DEBUG
+  fprintf(stderr,"wmrack: XPMs freed\n");
+#  endif
+  XFreeGC(Disp, WinGC);
+#  ifdef DEBUG
+  fprintf(stderr,"wmrack: GC freed\n");
+#  endif
+  XDestroyWindow(Disp, Win);
+#  ifdef DEBUG
+  fprintf(stderr,"wmrack: Win destroyed\n");
+#  endif
+  XDestroyWindow(Disp, Iconwin);
+#  ifdef DEBUG
+  fprintf(stderr,"wmrack: Iconwin destroyed\n");
+#  endif
+#endif
+  XCloseDisplay(Disp);
+#ifdef DEBUG
+  fprintf(stderr,"wmrack: Display closed\n");
+#endif
+  exit(0);
+}
+
+/*
+ * mainLoop()
+ *
+ * the main event loop
+ */
+void mainLoop()
+{
+  XEvent Event;
+  Time when;
+  int skip_count, skip_amount, skip_delay;
+
+  while(1)
+    {
+      /* Check events */
+      while (XPending(Disp))
+	{
+	  XNextEvent(Disp,&Event);
+	  switch (Event.type)
+	    {
+	    case Expose:
+	      if (Event.xexpose.count==0)
+		last_time.minute=last_time.second=last_time.frame=-1;
+	      redrawDisplay(1);
+	      continue;
+	    case ButtonPress:
+	      newdisc=0;
+	      cd_getStatus(cd,0);
+	      if (Event.xbutton.y<15 && curMode(cd)==CDM_PLAY)
+		{
+		  switch (Event.xbutton.button)
+		    {
+		    case 1:
+		      displaymode^=1;
+		      break;
+		    case 2:
+		      displaymode^=2;
+		      break;
+		    case 3:
+		      playmode++;
+		      if (playmode>2)
+			playmode=0;
+		      if (playmode==2)
+			repeattrack=cd->info->current.track;
+		      else
+			repeattrack=-1;
+		      break;
+		    }
+		}
+	      else if (Event.xbutton.y>15 && Event.xbutton.y<32)
+		{
+		  if (Event.xbutton.x<17)
+		    {
+		      if (curMode(cd)==CDM_PLAY || curMode(cd)==CDM_PAUSE)
+			cd_doPause(cd);
+		      else if (curMode(cd)==CDM_EJECT)
+			{
+			  if (cd_getStatus(cd,1))
+			    {
+			      newdisc=1;
+			      cd_doPlay(cd,cd->info->play.start_track,99);
+			    }
+			}
+		      else
+			cd_doPlay(cd,cd->info->play.start_track,99);
+		    }
+		  else if (Event.xbutton.x>34)
+		    {
+		      if (curMode(cd)==CDM_PLAY || curMode(cd)==CDM_PAUSE)
+			cd_doStop(cd);
+		      else if (curMode(cd)==CDM_EJECT)
+			{
+			  if (cd_getStatus(cd,1))
+			    newdisc=1;
+			}
+		      else
+			cd_doEject(cd);
+		    }
+		}
+	      else if (Event.xbutton.y>32)
+		{
+		  press_time=Event.xbutton.time;
+		  skip_count=0;
+		  skip_delay=8;
+		  if (Event.xbutton.x<17)
+		    skip_amount=-1;
+		  else if (Event.xbutton.x>34)
+		    skip_amount=1;
+		}
+	      break;
+	    case ButtonRelease:
+	      if (Event.xbutton.time-press_time<200 && Event.xbutton.y>32)
+		{
+		  if (curMode(cd)==CDM_PLAY || curMode(cd)==CDM_PAUSE)
+		    {
+		      if (Event.xbutton.x<17)
+			{
+			  if (cd->info->current.relmsf.minute ||
+			      cd->info->current.relmsf.second>2)
+			    cd_doPlay(cd,cd->info->current.track,99);
+			  else
+			    cd_doPlay(cd,cd->info->current.track-1,99);
+			}
+		      else if (Event.xbutton.x>34)
+			cd_doPlay(cd,cd->info->current.track+1,99);
+		    }
+		  else if (curMode(cd)==CDM_STOP)
+		    {
+		      if (Event.xbutton.x<17)
+			{
+			  if (cd->info->play.start_track>1)
+			    cd->info->play.start_track--;
+			  else
+			    cd->info->play.start_track=cd->info->tracks;
+			  if (repeattrack>-1)
+			    repeattrack=cd->info->play.start_track;
+			}
+		      else if (Event.xbutton.x>34)
+			{
+			  if (cd->info->play.start_track<cd->info->tracks)
+			    cd->info->play.start_track++;
+			  else
+			    cd->info->play.start_track=1;
+			  if (repeattrack>-1)
+			    repeattrack=cd->info->play.start_track;
+			}
+		    }
+		  else
+		    ;
+		}
+	      press_time=-1;
+	      break;
+	    case DestroyNotify:
+	      shutDown(SIGTERM);
+	      break;
+	    }
+	  XFlush(Disp);
+	}
+      /* now check for a pressed button */
+      if (press_time!=-1)
+	{
+	  if (curMode(cd)==CDM_PLAY)
+	    {
+	      when=getTime();
+	      if (when-press_time>500)
+		{
+		  skip_count++;
+		  if (skip_count%skip_delay==0)
+		    {
+		      if (Event.xbutton.x<17)
+			cd_doSkip(cd,skip_amount);
+		      else if (Event.xbutton.x>34)
+			cd_doSkip(cd,skip_amount);
+		    }
+		  switch (skip_count)
+		    {
+		    case 10:
+		    case 25:
+		    case 50:
+		      skip_delay>>=1;
+		      break;
+		    }
+		}
+	    }
+	}
+      /* do a redraw of the LED display */
+      redrawDisplay(0);
+      usleep(1000L);
+    }
+}
+
+/*
+ * flushExpose(window)
+ *
+ * remove any Expose events from the current EventQueue
+ */
+int flushExpose(Window w)
+{
+  XEvent dummy;
+  int i=0;
+
+  while (XCheckTypedWindowEvent (Disp, w, Expose, &dummy)) i++;
+  return i;
+}
+
+/*
+ * redrawWindow()
+ *
+ * combine mask and draw pixmap
+ */
+void redrawWindow()
+{
+  flushExpose(Win);
+  flushExpose(Iconwin);
+  
+  XShapeCombineMask(Disp, Win, ShapeBounding, 0, 0,
+		    currentXpm(mask), ShapeSet);
+  XShapeCombineMask(Disp, Iconwin, ShapeBounding, 0, 0,
+		    currentXpm(mask), ShapeSet);
+  
+  XCopyArea(Disp,currentXpm(pixmap),Win,WinGC,
+	    0,0,currentXpm(attributes).width, currentXpm(attributes).height,0,0);
+  XCopyArea(Disp,currentXpm(pixmap),Iconwin,WinGC,
+	    0,0,currentXpm(attributes).width, currentXpm(attributes).height,0,0);
+}
+
+/*
+ * split this function into the real redraw and a pure 
+ * display time/track function.
+ * redraw wants a complete redraw (covering, movement, etc.)
+ * but the display of the time/track does not need this overhead (SHAPE)
+ */
+void redrawDisplay(int force_win)
+{
+  int track[2]={0,0};
+  int cdtime[4]={0,0,0,0};
+  static time_t last_flash_time;
+  static flash=0;
+  int st=0, newRack=RACK_NODISC, im_stop=0;
+  MSF pos;
+
+  st=cd_getStatus(cd,0);
+
+  if (st>0 && cd->info->current.track>cd->info->tracks &&
+      curMode(cd)!=CDM_EJECT)
+    {
+      cd_doStop(cd);
+      im_stop=1;
+    }
+  else
+    if (!force_win && 
+	curMode(cd)!=CDM_PAUSE &&
+	last_cdmode==curMode(cd) &&
+	(st<1 ||
+	 (last_time.minute==cd->info->current.relmsf.minute &&
+	  last_time.second==cd->info->current.relmsf.second &&
+	  last_track==cd->info->play.start_track)))
+      /* no change in second or mode, and no pause blink */
+      return;
+  
+#ifdef DEBUG
+  if (last_cdmode!=curMode(cd)) {
+    fprintf(stderr,"wmrack: cur_cdmode %d\n",curMode(cd));
+  }
+#endif
+
+  switch (playmode) /* handle repeats */
+    {
+    case 1:
+      if (curMode(cd)==CDM_COMP || im_stop)
+	cd_doPlay(cd,1,99);
+      break;
+    case 2:
+      if ((repeattrack>-1 &&
+	   cd->info->current.track!=repeattrack &&
+	   curMode(cd)==CDM_PLAY) ||
+	  (repeattrack>-1 &&
+	   (curMode(cd)==CDM_COMP || im_stop)))
+	cd_doPlay(cd,repeattrack,repeattrack);
+      break;
+    }
+  
+  last_cdmode=curMode(cd);
+  if (st>0)
+    {
+      last_time=cd->info->current.relmsf;
+      last_track=cd->info->play.start_track;
+    }
+  else
+    {
+      MSFnone(last_time);
+      last_track=-1;
+    }
+  
+  if (curMode(cd)==CDM_PAUSE)
+    {
+      time_t flash_time=time(NULL);
+      if (flash_time==last_flash_time && !force_win)
+	return;
+      last_flash_time=flash_time;
+      flash=!flash;
+    }
+  else
+    {
+      last_flash_time=0;
+      flash=1;
+    }
+  
+  newRack=RACK_PLAY;
+  switch (curMode(cd))
+    {
+    case CDM_PAUSE:
+      newRack=RACK_PAUSE;
+    case CDM_PLAY:
+      track[0]=cd->info->current.track/10;
+      track[1]=cd->info->current.track%10;
+      switch (displaymode)
+	{
+	case 0:
+	  pos=cd->info->current.relmsf;
+	  break;
+	case 1:
+	  pos=subMSF(cd->info->track[cd->info->current.track].toc,
+		     cd->info->current.absmsf);
+	  break;
+	case 2:   /* this does not work */
+	  pos=subMSF(cd->info->current.absmsf,
+		     cd->info->track[0].toc);
+	  break;
+	case 3:
+	  pos=subMSF(cd->info->track[cd->info->tracks].toc,
+		     cd->info->current.absmsf);
+	  break;
+	}
+      cdtime[0]=pos.minute/10;
+      cdtime[1]=pos.minute%10;
+      cdtime[2]=pos.second/10;
+      cdtime[3]=pos.second%10;
+      break;
+    case CDM_STOP:
+      newRack=RACK_STOP;
+      if (newdisc)
+	{
+	  track[0]=cd->info->tracks/10;
+	  track[1]=cd->info->tracks%10;
+	}
+      else
+	{
+	  track[0]=cd->info->play.start_track/10;
+	  track[1]=cd->info->play.start_track%10;
+	}
+      cdtime[0]=(cd->info->slen/60)/10;
+      cdtime[1]=(cd->info->slen/60)%10;
+      cdtime[2]=(cd->info->slen%60)/10;
+      cdtime[3]=(cd->info->slen%10);
+      break;
+    case CDM_COMP:
+      newRack=RACK_STOP;
+      goto set_null;
+    case CDM_EJECT:
+      newRack=RACK_NODISC;
+    default:
+    set_null:
+      track[0]= 0;
+      track[1]= 0;
+      cdtime[0]=0;
+      cdtime[1]=0;
+      cdtime[2]=0;
+      cdtime[3]=0;
+      break;
+    }
+
+  if (newRack!=curRack || force_win)
+    {
+      /* Mode has changed, paint new mask and pixmap */
+      curRack=newRack;
+      redrawWindow();
+    }
+
+  XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+	    (track[0]?8*track[0]:80),0, 8,11, 16,35);
+  XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+	    (track[0]?8*track[0]:80),0, 8,11, 16,35);
+  XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+	    8*track[1],0, 8,11, 24,35);
+  XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+	    8*track[1],0, 8,11, 24,35);
+
+  if (flash || curMode(cd)!=CDM_PAUSE)
+    {
+      if (curMode(cd)==CDM_PLAY || curMode(cd)==CDM_PAUSE)
+	{
+	  XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		    ((displaymode&2)?94:98),0, 4,5, 3,2);
+	  XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		    ((displaymode&2)?94:98),0, 4,5, 3,2);
+	  XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		    ((displaymode&1)?94:98),5, 4,6, 3,7);
+	  XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		    ((displaymode&1)?94:98),5, 4,6, 3,7);
+	}
+      else
+	{
+	  XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		    98,0, 4,11, 3,2);
+	  XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		    98,0, 4,11, 3,2);
+	}
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		(cdtime[0]?8*cdtime[0]:80),0, 8,11, 7,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		(cdtime[0]?8*cdtime[0]:80),0, 8,11, 7,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		8*cdtime[1],0, 8,11, 15,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		8*cdtime[1],0, 8,11, 15,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		88,0, 3,11, 23,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		88,0, 3,11, 23,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		8*cdtime[2],0, 8,11, 26,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		8*cdtime[2],0, 8,11, 26,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		8*cdtime[3],0, 8,11, 34,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		8*cdtime[3],0, 8,11, 34,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		(playmode?102:106),0, 4,5, 42,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		(playmode?102:106),0, 4,5, 42,2);
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		(playmode==2?102:106),6, 4,5, 42,8);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		(playmode==2?102:106),6, 4,5, 42,8);
+    }
+  else
+    {
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		98,0, 4,11, 3,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		98,0, 4,11, 3,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		80,0, 8,11, 7,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		80,0, 8,11, 7,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		80,0, 8,11, 15,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		80,0, 8,11, 15,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		91,0, 3,11, 23,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		91,0, 3,11, 23,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		80,0, 8,11, 26,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		80,0, 8,11, 26,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		80,0, 8,11, 34,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		80,0, 8,11, 34,2);
+
+      XCopyArea(Disp, currentLed(pixmap), Win, WinGC,
+		106,0, 4,11, 42,2);
+      XCopyArea(Disp, currentLed(pixmap), Iconwin, WinGC,
+		106,0, 4,11, 42,2);
+    }
+
+}
+
+/*
+ * getColor(colorname)
+ *
+ * save way to get a color from X
+ */
+Pixel getColor(char *ColorName)
+{
+  XColor Color;
+  XWindowAttributes Attributes;
+
+  XGetWindowAttributes(Disp,Root,&Attributes);
+  Color.pixel = 0;
+
+  if (!XParseColor (Disp, Attributes.colormap, ColorName, &Color))
+    fprintf(stderr,"wmrack: can't parse %s\n", ColorName);
+  else if(!XAllocColor (Disp, Attributes.colormap, &Color))
+    fprintf(stderr,"wmrack: can't allocate %s\n", ColorName);
+
+  return Color.pixel;
+}
+
+/*
+ * getTime()
+ *
+ * returns the time in milliseconds
+ */
+Time getTime()
+{
+  struct timeval tv;
+  gettimeofday(&tv,NULL);
+  return (tv.tv_sec*1000)+(tv.tv_usec/1000);
+}
diff --git a/wmrack.man b/wmrack.man
new file mode 100644
index 0000000..b5c073a
--- /dev/null
+++ b/wmrack.man
@@ -0,0 +1,126 @@
+.ds = \-\^\-
+.de Sp
+.if t .sp .3
+.if n .sp
+..
+.TH wmrack 1.0 "1 June 1997" wmrack
+.UC
+.SH NAME
+\fBwmrack\fP \- the WindowMaker Sound Control
+.SH SYNOPSIS
+.B wmrack
+[options]
+.SH DESCRIPTION
+The \fBwmrack\fP is CD player and Audio Mixer written to play audio CD's
+integrated in AfterSteps Wharf module or docked to WindowMaker.
+\fBwmrack\fP handles mounted volumes, opens and closes the tray, can
+display the current position in various ways and skips also data tracks.
+.SH OPTIONS
+.TP
+\fB\-d\fP \fBDEVICE\fP or \fB\*=device\fP \fBDEVICE\fP
+Sets the CD-ROM device. This defaults to /dev/cdrom.
+.TP
+\fB\-h\fP or  \fB\*=help\fP
+Prints a summary of supported options and their default values.
+.TP
+\fB\-l\fP \fBCOLSPEC\fP or \fB\*=ledcolor\fP \fBCOLSPEC\fP
+Specifies the color of the led. It is darkened two times (for a total of
+three colors) to get all needed colors. So better use a bright color.
+.Sp
+For the design of own XPM, the ledcolor is made avaiable through the use
+of the symbolic xpm color names
+.I led_color_high,
+.I led_color_low,
+and
+.I led_color_med.
+There is also a symbol named
+.I led_color_back
+to get the default background color of the led\-display.
+.Sp
+To find out what colors are available, try
+.I showrgb
+(part of X11).
+.TP
+\fB\-p\fP or \fB\*=noprobe\fP
+This option disables the startup probing for a cd. Default is to probe the
+cdrom. This will close the tray and read the TOC of the cd (if there is one).
+.TP
+\fB\-s\fP \fBSTYLEFILE\fP or \fB\*=style\fP \fBSTYLEFILE\fP
+.B wmrack
+will try to load its window\-pixmaps from the specified
+.B STYLEFILE.
+It will search this file for XPM pixmaps named
+.I cdnodisc,
+.I cdplaying,
+.I cdpaused,
+.I cdstopped,
+.I cdled,
+.I mixer,
+and
+.I mixled.
+If some of those are not defined, the compile\-time defaults will be used.
+.TP
+\fB\-w\fP or \fB\*=withdrawn\fP
+Starts the
+.B wmrack
+in withdrawn window state. This is useful to dock the window to
+.B WindowMaker.
+.SH INVOCATION
+\fBwmrack\fP can be called using different ways. The most common invocation
+is from your dock file:
+.Sp
+        wmrack
+        WMRack
+        \fIPOSITION\fP 2 -1 0
+        wmrack
+        --withdrawn
+.Sp
+Another way to call \fBwmrack\fP is to swallow it into the \fBafterstep (1)\fP
+\fBWharf (1)\fP. This is best done playcing the following line into your
+\fI.steprc\fP:
+.Sp
+	*Wharf WMRack nil Swallow "wmrack" wmrack &
+.Sp
+This method will also work for other button\-bars, such as the \fBFvwmButtons (1)\fP
+of the \fBfvwm (1)\fP window manager.
+.SH USAGE
+The \fBwmrack\fP features a simple click interface. All times the buttons will
+show a standart sign which specifies the action it will do. But there are some 
+noteable extensions to that explained below.
+.Sp
+The default behavior of \fBwmrack\fP is to try to read the cdrom at
+startup. If there was no cd, it will not try again unless you press the close
+or play button. This will close the cdrom and again try to read it. Unless
+there is a cd, \fBwmrack\fP will again suspend until your next action.
+.TP
+.B skip
+By pressing the button down and holding it on one of the prev/next track
+buttons the cdrom goes fast forward or backward.
+.TP
+.B time left
+A button-1 click into the time display switches between time running and time
+left display.
+.TP
+.B total time
+A button-2 click into the time display switches between track and total time.
+.TP
+.B repeat
+A button-3 click into the time display cycles through normal mode, repeat all, 
+and repeat one play mode.
+.SH COPYRIGHTS
+Copyright 1997, Oliver Graf <ograf at fga.de>.
+Most styles copyright 1997, Heiko Wagner <hwagner at fga.de>.
+.Sp
+No guarantees or warranties or anything are provided or implied in any way
+whatsoever. Use this program at your own risk. Permission to use this program
+for any purpose is given, as long as the copyright is kept intact.
+.SH AUTHORS
+Oliver Graf <ograf at fga.de> -- the coding
+.Sp
+Heiko Wagner <hwagner at fga.de> -- the hyped window shapes
+.SH CREDITS
+Rob Malda <malda at cs.hope.edu> -- who had written ascd and asmixer
+.Sp
+Michael Kurz <mkurz at rzws.fh-aalen.de> -- also for ascd and asmixer
+.Sp
+Thomas McWilliams <tgm at netcom.com> -- who has done Workbone
diff --git a/xpmicon.c b/xpmicon.c
new file mode 100644
index 0000000..02a072f
--- /dev/null
+++ b/xpmicon.c
@@ -0,0 +1,306 @@
+/*
+ * $Id: xpmicon.c,v 1.3 1997/06/12 16:27:28 ograf Exp $
+ *
+ * part of WMRack
+ *
+ * handles the whole pixmap stuff (styles)
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/extensions/shape.h>
+
+#include "xpmicon.h"
+
+/* include the default xpms */
+#include "XPM/standart.style"
+
+/*
+ * first some requires variables
+ */
+XpmAttributes rackDefaultAttr;
+XpmIcon rackXpm[7]={{"cdnodisc",cdnodisc},
+		    {"cdstopped",cdstopped},
+		    {"cdplaying",cdplaying},
+		    {"cdpaused",cdpaused},
+		    {"mixer",NULL},
+		    {"cdled",cdled},
+		    {"mixled",NULL}};
+
+int curRack=RACK_NODISC, curLed=RACK_LED_PLAYER;
+
+XpmColorSymbol LedColorSymbols[4]={{"led_color_back", "#000000000000", 0},
+				   {"led_color_high", "#0000FFFF0000", 0},
+				   {"led_color_med",  "#00009CE60000", 0},
+				   {"led_color_low",  "#000063180000", 0}};
+
+/*
+ * some internal functions
+ */
+/****************************************************************************/
+Pixel xpm_getDimColor(Display *disp, Drawable draw, char *ColorName, float dim)
+{
+  XColor Color;
+  XWindowAttributes Attributes;
+
+  XGetWindowAttributes(disp,draw,&Attributes);
+  Color.pixel = 0;
+
+  if (!XParseColor (disp, Attributes.colormap, ColorName, &Color))
+    fprintf(stderr,"xpm_getDimColor: can't parse %s\n", ColorName);
+  else
+    {
+      Color.red/=dim;
+      Color.green/=dim;
+      Color.blue/=dim;
+      Color.flags=DoRed|DoGreen|DoBlue;
+      if (!XAllocColor (disp, Attributes.colormap, &Color))
+	fprintf(stderr,"xpm_getDimColor: can't allocate %s\n", ColorName);
+    }
+
+  return Color.pixel;
+}
+
+int parseXpm(Display *disp, Drawable draw, char *buffer)
+{
+  int i, len;
+  char *d1, *d2;
+
+  /* check header */
+  if (strncmp(buffer,"/* XPM */\nstatic char *",23)!=0)
+    {
+      fprintf(stderr,"parseXpm: invalid start of xpm\n");
+      fprintf(stderr,buffer);
+      return 1;
+    }
+  /* skip spaces */
+  for (d1=buffer+23; *d1==32; d1++);
+  /* find end */
+  d2=strchr(d1,'[');
+  if (d2==NULL)
+    {
+      fprintf(stderr,"parseXpm: can't parse xpm-name\n");
+      return 1;
+    }
+  for (; *(d2-1)==32; d2--);
+  len=d2-d1;
+#ifdef DEBUG
+  {
+    char name[200];
+    strncpy(name,d1,len);
+    name[len]=0;
+    fprintf(stderr,"parseXpm: found XPM %s\n",name);
+  }
+#endif
+  /* find the right place */
+  for (i=0; i<RACK_MAX; i++)
+    {
+      if (strncmp(rackXpm[i].name,d1,len)==0)
+	{
+	  if (rackXpm[i].loaded)
+	    {
+	      fprintf(stderr,"parseXpm: skipping double XPM for %s\n",d1);
+	      break;
+	    }
+	  else
+	    {
+	      rackXpm[i].attributes=rackDefaultAttr;
+	      if (XpmCreatePixmapFromBuffer(disp, draw, buffer,
+					    &rackXpm[i].pixmap,
+					    &rackXpm[i].mask,
+					    &rackXpm[i].attributes)!=XpmSuccess)
+		{
+		  fprintf(stderr,"parseXpm: can't create pixmap from buffer\n");
+		  return 1;
+		}
+	      rackXpm[i].loaded=1;
+	      break;
+	    }
+	}
+    }
+  return 0;
+}
+
+/*
+ * now the interface functions
+ */
+
+/*
+ * xpm_setDefaultAttr(color)
+ *
+ * creates the attributes for xpm pixmap creation and sets
+ * the led symbol colors to the specified color and 2 shades of it.
+ */
+int xpm_setDefaultAttr(Display *disp, Drawable draw, char *color)
+{
+  rackDefaultAttr.valuemask=XpmReturnPixels | XpmReturnExtensions | XpmColorSymbols;
+  rackDefaultAttr.numsymbols=4;
+  if (color!=NULL)
+    {
+      LedColorSymbols[1].value=NULL;
+      LedColorSymbols[1].pixel=xpm_getDimColor(disp,draw,color,1);
+      LedColorSymbols[2].value=NULL;
+      LedColorSymbols[2].pixel=xpm_getDimColor(disp,draw,color,1.65);
+      LedColorSymbols[3].value=NULL;
+      LedColorSymbols[3].pixel=xpm_getDimColor(disp,draw,color,2.6);
+    }
+  rackDefaultAttr.colorsymbols=LedColorSymbols;
+  return 0;
+}
+
+/*
+ * xpm_loadSet(display, drawable, filename)
+ *
+ * loads a style file
+ */
+int xpm_loadSet(Display *disp, Drawable draw, char *filename)
+{
+  FILE *f;
+  char *buffer=NULL, line[4096];
+  int bufpos=0, bufalloc=0, i;
+
+  f=fopen(filename,"r");
+  if (f==NULL)
+    {
+      perror("xpm_loadSet");
+      return 1;
+    }
+
+  for (i=0; i<RACK_MAX; i++)
+    rackXpm[i].loaded=0;
+
+  while (fgets(line,4095,f)!=NULL)
+    {
+      if (strcmp(line,"/* XPM */\n")==0)
+	{
+	  if (buffer!=NULL)
+	    {
+	      if (parseXpm(disp,draw,buffer))
+		{
+		  free(buffer);
+		  fclose(f);
+		  return 1;
+		}
+	      free(buffer);
+	      bufpos=bufalloc=0;
+	    }
+	  buffer=(char *)malloc(4096);
+	  if (buffer==NULL)
+	    {
+	      fprintf(stderr,"xpm_loadSet: can' alloc enough mem\n");
+	      fclose(f);
+	      return 1;
+	    }
+	  bufalloc=4096;
+	  strcpy(buffer+bufpos,line);
+	  bufpos=strlen(buffer);
+	  continue;
+	}
+      if (buffer!=NULL)
+	{
+	  if (bufpos+strlen(line)>=bufalloc)
+	    {
+	      char *newbuf;
+	      newbuf=(char *)realloc(buffer,bufalloc+4096);
+	      if (newbuf==NULL)
+		{
+		  fprintf(stderr,"xpm_loadSet: can' alloc enough mem\n");
+		  fclose(f);
+		  return 1;
+		}
+	      buffer=newbuf;
+	      bufalloc+=4096;
+	    }
+	  strcpy(buffer+bufpos,line);
+	  bufpos+=strlen(line);
+	}
+    }
+  fclose(f);
+
+  if (buffer!=NULL)
+    {
+      if (parseXpm(disp,draw,buffer))
+	{
+	  free(buffer);
+	  return 1;
+	}
+      free(buffer);
+    }
+
+  /* check if all xpms are loaded */
+  for (i=0; i<RACK_MAX; i++)
+    if (!rackXpm[i].loaded)
+      {
+	fprintf(stderr,"xpm_loadSet: xpm for %s is missing, using default\n",
+		rackXpm[i].name);
+	if (xpm_setDefaultSet(disp,draw,i))
+	  {
+	    fprintf(stderr,"xpm_loadSet: can't set default pixmap\n");
+	    return 1;
+	  }
+      }
+
+  return 0;
+}
+
+/*
+ * int xpm_getDefaultsSet(display, drawable, num)
+ *
+ * sets the specified pixmap buffer to the compiletime default
+ * sets all pixmap buffers, if num is RACK_MAX
+ *
+ * returns 0 on success
+ */
+int xpm_setDefaultSet(Display *disp, Drawable draw, int num)
+{
+  int i, ret=0;
+
+  if (num==RACK_MAX)
+    for (i=0; i<RACK_MAX; i++)
+      {
+	if (rackXpm[i].standart==NULL)
+	  continue;
+	rackXpm[i].attributes=rackDefaultAttr;
+	ret|=XpmCreatePixmapFromData(disp, draw, rackXpm[i].standart,
+				     &rackXpm[i].pixmap,
+				     &rackXpm[i].mask,
+				     &rackXpm[i].attributes)!=XpmSuccess;
+      }
+  else
+    {
+      if (rackXpm[num].standart==NULL)
+	return 0;
+      rackXpm[num].attributes=rackDefaultAttr;
+      ret|=XpmCreatePixmapFromData(disp, draw, rackXpm[num].standart,
+				   &rackXpm[num].pixmap,
+				   &rackXpm[num].mask,
+				   &rackXpm[num].attributes)!=XpmSuccess;
+    }
+  return ret;
+}
+
+/*
+ * xpm_freeSet(display)
+ *
+ * frees all pixmap data
+ */
+void xpm_freeSet(Display *disp)
+{
+  int i;
+
+#ifdef DEBUG
+  fprintf(stderr,"xpm_freeSet: freeing pixmaps\n");
+#endif
+  for (i=0; i<RACK_MAX; i++)
+    {
+      XFreePixmap(disp,rackXpm[i].pixmap);
+      XFreePixmap(disp,rackXpm[i].mask);
+    }
+#ifdef DEBUG
+  fprintf(stderr,"xpm_freeSet: done.\n");
+#endif
+}
+
diff --git a/xpmicon.h b/xpmicon.h
new file mode 100644
index 0000000..d38c60a
--- /dev/null
+++ b/xpmicon.h
@@ -0,0 +1,42 @@
+/*
+ * $Id: xpmicon.h,v 1.2 1997/06/04 19:41:38 ograf Exp $
+ *
+ * part of wmrack
+ *
+ * handles the whole pixmap stuff
+ */
+#ifndef _XPMICON_H
+#define _XPMICON_H
+
+/* Xpm struct */
+typedef struct {
+  char *name;
+  char **standart;
+  int loaded;
+  XpmAttributes attributes;
+  Pixmap pixmap;
+  Pixmap mask;
+} XpmIcon;
+
+/* the XpmIcon definitions and variables */
+#define RACK_NODISC     0
+#define RACK_STOP       1
+#define RACK_PLAY       2
+#define RACK_PAUSE      3
+#define RACK_MIXER      4
+#define RACK_LED_PLAYER 5
+#define RACK_LED_MIXER  6
+#define RACK_MAX        7
+
+extern XpmIcon rackXpm[];
+extern int curRack, curLed;
+
+#define currentXpm(w) rackXpm[curRack].##w
+#define currentLed(w) rackXpm[curLed].##w
+
+int xpm_setDefaultAttr(Display *disp, Drawable draw, char *color);
+int xpm_loadSet(Display *disp, Drawable draw, char *filename);
+int xpm_setDefaultSet(Display *disp, Drawable draw, int num);
+void xpm_freeSet(Display *disp);
+
+#endif

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmrack.git



More information about the Pkg-wmaker-commits mailing list