[Pkg-wmaker-commits] [wmbutton] 01/25: wmbutton dockapp added

Doug Torrance dtorrance-guest at moszumanska.debian.org
Sun Jul 16 23:38:08 UTC 2017


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

dtorrance-guest pushed a commit to branch upstream
in repository wmbutton.

commit 6ca7764f4eafea95268dc0bc82fecb43d189c7ac
Author: Rodolfo García Peñas (kix) <kix at kix.es>
Date:   Mon Aug 20 10:02:36 2012 +0200

    wmbutton dockapp added
    
    The original wmbutton 0.6.1 is added to the repository.
    
    wmbutton is a dockapp with nine buttons (3x3), capable of launch 27
    different applications using the left, middle and right buttons.
---
 .wmbutton             |   47 ++
 COPYING               |  339 ++++++++++++
 Makefile              |   29 +
 README                |  208 ++++++++
 backdrop.xpm          |  126 +++++
 buttons.xpm           | 1400 +++++++++++++++++++++++++++++++++++++++++++++++++
 icons/audio.xpm       |   32 ++
 icons/blankbutton.xpm |   25 +
 icons/buttons2.xpm    |  854 ++++++++++++++++++++++++++++++
 icons/edit.xpm        |   29 +
 icons/ftp.xpm         |  111 ++++
 icons/graph.xpm       |   32 ++
 icons/gv.xpm          |   84 +++
 icons/netscape.xpm    |  135 +++++
 icons/paint.xpm       |  232 ++++++++
 icons/wp.xpm          |   27 +
 icons/xterm.xpm       |  202 +++++++
 mask.xbm              |   68 +++
 wmb_libs.c            |  692 ++++++++++++++++++++++++
 wmbutton.c            |  557 ++++++++++++++++++++
 wmbutton.h            |  107 ++++
 21 files changed, 5336 insertions(+)

diff --git a/.wmbutton b/.wmbutton
new file mode 100644
index 0000000..35e0fc8
--- /dev/null
+++ b/.wmbutton
@@ -0,0 +1,47 @@
+# .wmbutton - Configuration file for wmbutton
+# Last Modified 03/21/04
+
+# Buttons are numbered as follows 
+# 	Left	1 2 3	Middle	11 12 13	Right	21 22 23
+# 	button	4 5 6	button	14 15 16	button	24 25 26
+#		7 8 9		17 18 19		27 28 29
+#
+
+1	mozilla &
+11	mozilla -mail &
+21	firefox &
+
+2	xterm -geometry 80x35 -sb -fg white -bg grey20 -T 'Xterm: User' &
+12	xterm -geometry 80x35 -sb -fg snow -bg midnightblue -T 'Xterm: Root' &
+22	gnome-terminal &
+
+3	gftp &
+13	nxterm -fg black -bg grey70 -T 'FTP' -e ftp &
+23	jpilot &
+
+4	ooffice &
+14	wordperfect &
+24	presentations &
+
+5	gnucash &
+15	xterm -geometry 120x20 -fg white -bg grey20 -T 'Gnuplot' -e gnuplot &
+25	quattropro &
+
+6	xemacs &
+16	xterm -geometry 80x35 -fg black -bg grey50 -T 'Pico Editor' -e pico -w &
+26	xterm -geometry 120x35 -fg black -bg grey70 -T 'WMButton Config Editor' -e pico -w ~/.wmbutton &
+
+7	gimp &
+17	xfig &
+27	kpaint &
+
+8	kghostview &
+18	ggv &
+28	xpdf &
+
+9	xmms &
+19	xanim &
+29	gnome-sound-recorder &
+
+# The above don't need to be in any particular order.
+# Repeated entries will be ignored
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..a43ea21
--- /dev/null
+++ b/COPYING
@@ -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 b/Makefile
new file mode 100644
index 0000000..b4b744d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,29 @@
+INCLUDES =-I/usr/X11R6/include/X11 -I/usr/local/include -I/usr/include/X11R6/X11
+LIBINC =-L/usr/X11R6/lib -L/usr/include/lib
+LIBS = -lX11 -lXpm -lXext
+
+TARGET = wmbutton
+OBJECTS = wmbutton.o wmb_libs.o
+
+CFLAGS += -c -Wall -O2
+
+all: ${TARGET} tags
+
+.c.o:
+	gcc ${CFLAGS} ${INCLUDES} $< -o $*.o
+
+${TARGET}: ${OBJECTS}
+	gcc -o ${TARGET} ${OBJECTS} ${LIBINC} ${LIBS}
+
+clean::
+	for i in ${OBJECTS}; do if [ -e $$i ] ; then rm $$i; fi; done 
+	if [ -e ${TARGET} ] ; then rm ${TARGET}; fi
+	if [ -e tags ]; then rm tags; fi
+	if [ -e core ]; then rm core; fi
+
+wmbutton.o: wmbutton.c wmbutton.h Makefile
+
+wmb_libs.o: wmb_libs.c wmbutton.h Makefile
+
+tags:
+	ctags *.[ch]
diff --git a/README b/README
new file mode 100644
index 0000000..5da98ae
--- /dev/null
+++ b/README
@@ -0,0 +1,208 @@
+wmbutton Ver. 0 Rel 6.1
+-------------------------------------------------------------
+   Code is based on wmppp, wmload, wmtime, wmcp, and asbutton
+   Author: Edward H. Flora <ehf_dockapps at cox.net>
+	   This version is released by:
+	   Christian 'Greek0' Aichinger <Greek0 at gmx.net>
+   Ver 0 Rel 6.1    Jan 23, 2005
+
+DESCRIPTION:
+------------
+wmbutton is a simple application launching program that sits in the
+dock in WindowMaker, can be swallowed by Wharf in Afterstep, and
+should be fairly configurable.
+
+LICENSING:
+----------
+This program is released under the GPL license.  A copy (in case you
+don't already have hundreds of them floating around) can be found in
+this distribution in the file COPYING
+
+CONTRIBUTORS:
+-------------
+              Christian 'Greek0' Aichinger <Greek0 at gmx.net>
+                  Did some code cleanup and fixed several memory leaks.
+              Ralf Horstmann <ralf.horstmann at gmx.de>
+                  Added ability to load pixmaps at startup,
+                  without having to re-compile
+              Michael Cohrs <camico at users.sourceforge.net> 
+                  Added Tool Tips, and updated graphics
+              Bruno Essmann <essmann at users.sourceforge.net>)
+                  Creator of wmpager
+              Ben Cohen <buddog at aztec.asu.edu>
+                  original author of wmcp (et al.)
+              Thomas Nemeth <tnemeth at multimania.com>
+                  contributor to wmcp
+              Casey Harkins <charkins at cs.wisc.edu> 
+                  Bug fix reading config file path - 3/6/99
+                  Added button-presses, and other - denoted by *charkins*
+              Michael Henderson <mghenderson at lanl.gov>
+                  Application ideas, suggestions
+              Ryan ?? <pancake at mindspring.com> 
+                  Modified wmbutton to asbutton.
+                  Note: asbutton is a seperate program, not associated 
+                        with wmbutton (just as wmbutton is not associated
+                        with wmcp)
+              Jon Bruno
+                  Web Page Development
+The contributors listed above are not necessarily involved with the 
+development of wmbutton.  I'm listing them here partially as thanks for 
+helping out, catching bugs in the code, etc.
+
+INSTALLATION:
+-------------
+	Untar the file: 
+		tar xvzf wmbutton-0.5.tar.gz
+
+	CD to source directory:  
+		cd wmbutton-0.5
+
+	Edit background xpm, and buttons.xpm to your preferences
+	There are icon files in ./icons to work from
+
+	Compile it:
+	 	make clean; make
+
+	Copy the config file:
+		cp .wmbutton ~
+
+	Put the executable somewhere in your path:
+		mv wmbutton /usr/local/bin (or anyhere in your path)
+	
+	Run it:
+		wmbutton &
+
+	Grab the appicon and move it to the dock. 
+	Change the settings to start with Windowmaker
+
+	Afterstep Wharf 1.6.??:
+	*Wharf wmbutton -Swallow "wmbutton" wmbutton &
+
+    ***Note***: 
+	The appicon has only a two pixel border where you can grab 
+	and move it.
+
+	If make doesn't work, you may need to fiddle with the settings in 
+	the Makefile.
+
+	Tested on: (Well, it runs, I don't know if 'Tested' is quite right...)
+		WindowMaker-0.80.1
+		Afterstep 1.6.?
+		Fluxbox 0.9.9
+		Clients: Red Hat 8.x, Kernel 2.4.18
+
+
+USAGE:
+------
+wmbutton [-g geom] [-d dpy] [-f cfgfile] [-b btnfile] [-F <font>] 
+	 [-v] [-s] [-n]
+
+ wmbutton Ver 0 Rel 6.1
+
+-g <geometry>  Window Geometry - ie: 64x64+10+10
+-d <display>   Display -  ie: 127.0.0.1:0.0
+-f <filename>  Full path to configuration file.
+-b <filename>  Full path to button xpm.
+-F <font>      Custom tooltip font (e.g. -b\&h-lucidatypewriter-medium-*-*-*-12-*)
+-v             Verbose Mode.
+-h             Help. This message.
+-m             Disable Middle Mouse functionality.
+-s             Swap tooltip colors.
+-n             Turn off tooltips.
+
+Left mouse button:
+	Selects the application to launch, numbered 1 through 9
+
+Middle mouse button: (unless disabled (-m))
+	Selects the application to launch, numbered 11 through 19
+
+Right mouse button:
+	Selects the application to launch, numbered 21 through 29
+
+NOTES:
+------
+This is a simple application launching tool for use in WindowMaker, and 
+possibly Afterstep.  (Who knows, it should run for other window managers too, 
+by why bother??  It is taken from wmcp, by Ben Cohen, and modified just
+enough to run applications rather than send ALT-[1..9] key sequences to 
+WindowMaker.  It has also taken some ideas from asbuttons, and
+included them back into the original.  There may still be some code
+left over from wmcp that is no longer needed, but...  
+
+The mini-icons must be combined into a single graphic, buttons.xpm.  The 
+background border is defined in backdrop.xpm.  Both must be edited in your
+favorite graphics editor (GIMP??), and then recompiled.  wmbuttons uses a
+configuration file (usually ~/.wmbutton) for which applications to launch.
+There is no need to restart wmbuttons when simply changing the configuration, 
+as wmbutton searches the file whenever a button is pressed.
+
+As of release 0.5, you can also pass in your own pixmap file for the
+buttons, to override the buttons that are compiled it.  This file should
+still have the same height and width so that it will make sense,
+though really you give it any XPM you want, but it will only display
+the upper left 54x54 pixel corner.
+
+
+An example file is included, related to the the buttons.xpm graphic file.
+
+
+CHANGE LOG:
+-----------
+0.6.1 Minor changes to the Makefile.
+0.6 Code cleanup and fixes for memory leaks by Christian 'Greek0' Aichinger.
+0.5	Added Modifications submitted by Ralf Horstmann.
+	  Load different pixmaps at start-up time, rather than having
+	  to compile them in.  This also makes it much easier to run
+	  multiple copies.
+	Added Modifications submitted by Michael Cohrs.
+	  Added Tool-Tips
+	Updated default buttons.xpm graphics
+	General Code clean-up, including export must functions to
+	  seperate C file, to reduce clutter.
+
+0.4	Added Modifications submitted by Casey Harkins. 
+	  Start application on mouse button release, 
+	  Only start app if cursor is still on application button
+	  Added 3-D button press look
+	Added new .wmbutton configuration file
+
+0.3	Graphics changed to incorporate most changes made by asbutton
+	Removed Middle/Right mouse click on button to turn off buttons
+	  after it.
+	Added Middle and Right mouse buttons to run more Applications
+	  (Yes, you can now really run 27 different Apps from a single 
+	  instance of wmbuttons, if you would want too...)
+	Fixed bug for finding config file .wmbutton.
+	  It used to not look in the home directory, but in the
+	  startup directory.  Thanks to Casey harkins for the fix.
+	Included the icons directory from the asbutton distribution,
+	  plus a few more.
+
+0.2	Added single configuration file, user selectable.
+
+0.1	Origional version.
+	  Shamelessly taken from wmcp 1.2.5, 
+	  by Ben Cohen <buddog at aztec.asu.edu>
+
+TODO:
+-----
+Add ability (via config file) to use discrete 16x16 pixel icons for
+  the buttons, rather than having to paste them all into the existing file.
+Make changing icons and/or background graphics easier.
+Allow for less than 9 icons, 4 would be nicer on the mini-icon size.
+
+BUGS: 
+-----
+Remember, they're just undocumented FEATURES!!!
+
+Probably Lots.  Send comments (preferably with fixes) to
+<ehf_dockapps at cox.net>
+
+
+Good Luck.
+
+
+"C code.  C code run.  Run, code, run.
+			PLEASE!?!?!?!?!?!?"
+
+
diff --git a/backdrop.xpm b/backdrop.xpm
new file mode 100644
index 0000000..9d1a3de
--- /dev/null
+++ b/backdrop.xpm
@@ -0,0 +1,126 @@
+/* XPM */
+static char * backdrop_xpm[] = {
+"64 64 59 1",
+" 	c None",
+".	c #F3F3F3",
+"+	c #000000",
+"@	c #E0E0E0",
+"#	c #516161",
+"$	c #A2A2B2",
+"%	c #A2A2A2",
+"&	c #A292B2",
+"*	c #92A2A2",
+"=	c #A292A2",
+"-	c #9292A2",
+";	c #929292",
+">	c #9282A2",
+",	c #829292",
+"'	c #928292",
+")	c #828292",
+"!	c #828282",
+"~	c #827192",
+"{	c #615161",
+"]	c #92A2B2",
+"^	c #9292B2",
+"/	c #8292A2",
+"(	c #8282A2",
+"_	c #718292",
+":	c #718282",
+"<	c #282828",
+"[	c #515161",
+"}	c #858595",
+"|	c #C7C3C7",
+"1	c #515151",
+"2	c #827182",
+"3	c #415151",
+"4	c #514151",
+"5	c #717192",
+"6	c #717182",
+"7	c #717171",
+"8	c #414151",
+"9	c #617182",
+"0	c #415141",
+"a	c #716182",
+"b	c #414141",
+"c	c #617171",
+"d	c #413041",
+"e	c #304141",
+"f	c #716171",
+"g	c #616171",
+"h	c #616182",
+"i	c #303030",
+"j	c #616161",
+"k	c #303041",
+"l	c #516171",
+"m	c #304130",
+"n	c #615171",
+"o	c #203030",
+"p	c #302030",
+"q	c #515171",
+"r	c #202030",
+"s	c #202020",
+"t	c #413051",
+"...............................................................+",
+".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+",
+".@$%$%&%&%&%&*=-&*=-=-=---=--;>;>;>;>,>,>,')',')')'))!)))!~!~!{+",
+".@$$*$]$*$*$*&*&*^*-*-*-*-*-/---,-,-,>,>,(,>,(,),),)))))_)_):)#+",
+".@$%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~![+",
+".@]$<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|:~1+",
+".@&%<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|~:[+",
+".@*$<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|:~1+",
+".@&%<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|2:[+",
+".@*&<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|:~3+",
+".@=%<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|~:4+",
+".@*$<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|:53+",
+".@&*<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|264+",
+".@*&<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|:63+",
+".@=-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|264+",
+".@*=<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|:63+",
+".@=*<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|264+",
+".@*^<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|:63+",
+".@=-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|664+",
+".@*-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|663+",
+".@=-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|674+",
+". at --<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|668+",
+".@=-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|674+",
+".@*-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|960+",
+". at -;<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|a78+",
+". at --<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|96b+",
+".@>;<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|acd+",
+". at --<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|cab+",
+". at -;<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|a7b+",
+".@,-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|cae+",
+".@>;<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|acd+",
+".@,-<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|cae+",
+".@>,<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|fcd+",
+".@,><}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|cae+",
+".@',<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|agd+",
+".@,><}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|che+",
+".@>,<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|fgd+",
+".@,><}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|cge+",
+".@')<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|ggd+",
+".@,'<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|cge+",
+".@',<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|fgd+",
+".@,(<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|ggi+",
+".@')<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|gjk+",
+".@,)<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|lgm+",
+".@'!<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|njk+",
+".@))<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|ggo+",
+".@))<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|njp+",
+".@))<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|#go+",
+".@)!<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|nji+",
+".@))<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|lgo+",
+".@~!<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|n#p+",
+". at _)<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|#no+",
+".@)!<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|njp+",
+".@:~<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|#no+",
+".@~!<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|n#p+",
+".@:)<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|#qo+",
+".@~:<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|{[p+",
+".@:~<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|#no+",
+".@~:<}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}|{[p+",
+".@:~||||||||||||||||||||||||||||||||||||||||||||||||||||||||#qo+",
+".@~:262626262667a767a7aca7acfcfcfgfgfggjgggjnjnjnjn#n#n#{[{[{[r+",
+".@:5:~:5:666666666c696cacacacachcgggcggggglglg#nln#n#n#q#q[q#[s+",
+".@{1[1[1[141434340484b4b8btb8bdbdededmdikikikipipipipoprpspsrsr+",
+".+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"};
diff --git a/buttons.xpm b/buttons.xpm
new file mode 100644
index 0000000..f026b2e
--- /dev/null
+++ b/buttons.xpm
@@ -0,0 +1,1400 @@
+/* XPM */
+static char * buttons_xpm[] = {
+"54 54 1343 2",
+"  	c None",
+". 	c #FFFFFF",
+"+ 	c #000000",
+"@ 	c #AEAAAE",
+"# 	c #727272",
+"$ 	c #A86666",
+"% 	c #AE7575",
+"& 	c #B17878",
+"* 	c #B37979",
+"= 	c #B57979",
+"- 	c #B87979",
+"; 	c #BA7979",
+"> 	c #BC7A7A",
+", 	c #BF7A7A",
+"' 	c #C27C7C",
+") 	c #C37C7C",
+"! 	c #C57A7A",
+"~ 	c #BB8585",
+"{ 	c #ABABAB",
+"] 	c #B4B4B4",
+"^ 	c #6F6F6F",
+"/ 	c #737373",
+"( 	c #5D5D5D",
+"_ 	c #595959",
+": 	c #717170",
+"< 	c #91908F",
+"[ 	c #8D8C8B",
+"} 	c #858683",
+"| 	c #92928E",
+"1 	c #9B9D98",
+"2 	c #B0AEA8",
+"3 	c #9B9C96",
+"4 	c #71736A",
+"5 	c #59594B",
+"6 	c #474743",
+"7 	c #B5B5B5",
+"8 	c #6F706F",
+"9 	c #686868",
+"0 	c #969696",
+"a 	c #9B9B9B",
+"b 	c #9F9F9F",
+"c 	c #A3A3A3",
+"d 	c #A8A8A8",
+"e 	c #ACACAC",
+"f 	c #B1B1B1",
+"g 	c #FF7474",
+"h 	c #FFB9B9",
+"i 	c #FFB1B1",
+"j 	c #FFAAAA",
+"k 	c #FF9C9C",
+"l 	c #FF8D8D",
+"m 	c #FF7F7F",
+"n 	c #FF6565",
+"o 	c #FF5A5A",
+"p 	c #FF5757",
+"q 	c #FF0404",
+"r 	c #D90000",
+"s 	c #8E8E8E",
+"t 	c #EEEDEA",
+"u 	c #FFFBF7",
+"v 	c #FCFBF7",
+"w 	c #F5F7F2",
+"x 	c #E7E8E2",
+"y 	c #D5D4CB",
+"z 	c #BEBFB8",
+"A 	c #AAA99F",
+"B 	c #91928D",
+"C 	c #767879",
+"D 	c #6E7265",
+"E 	c #90917F",
+"F 	c #1A1D12",
+"G 	c #BABABA",
+"H 	c #514E5A",
+"I 	c #1A1729",
+"J 	c #201A30",
+"K 	c #23203B",
+"L 	c #232039",
+"M 	c #211E37",
+"N 	c #616161",
+"O 	c #AE7676",
+"P 	c #FFC4C4",
+"Q 	c #FFFCFC",
+"R 	c #FFD9D9",
+"S 	c #FFA6A6",
+"T 	c #FF9595",
+"U 	c #FF8686",
+"V 	c #FF6F6F",
+"W 	c #FFC0C0",
+"X 	c #FFABAB",
+"Y 	c #FF3333",
+"Z 	c #B60000",
+"` 	c #797979",
+" .	c #A9A9A9",
+"..	c #787878",
+"+.	c #878585",
+"@.	c #9F99A7",
+"#.	c #4E4271",
+"$.	c #342C55",
+"%.	c #1A1141",
+"&.	c #10043F",
+"*.	c #0C0438",
+"=.	c #080435",
+"-.	c #080430",
+";.	c #060428",
+">.	c #000424",
+",.	c #353647",
+"'.	c #A8A99C",
+").	c #212516",
+"!.	c #BEBEBE",
+"~.	c #5B566C",
+"{.	c #353056",
+"].	c #423968",
+"^.	c #48416C",
+"/.	c #484066",
+"(.	c #413969",
+"_.	c #B9B9B9",
+":.	c #B17979",
+"<.	c #FFB3B3",
+"[.	c #FFF3F3",
+"}.	c #FFE3E3",
+"|.	c #FF8484",
+"1.	c #FF7777",
+"2.	c #FF6464",
+"3.	c #FF8888",
+"4.	c #FFD7D7",
+"5.	c #FF0000",
+"6.	c #C40000",
+"7.	c #7A7A7A",
+"8.	c #7D7D7D",
+"9.	c #888785",
+"0.	c #787186",
+"a.	c #170450",
+"b.	c #100448",
+"c.	c #100444",
+"d.	c #10043E",
+"e.	c #0B0438",
+"f.	c #353749",
+"g.	c #ADAC9E",
+"h.	c #2B2E1D",
+"i.	c #ADADAD",
+"j.	c #615C75",
+"k.	c #423A61",
+"l.	c #4F4D70",
+"m.	c #594E85",
+"n.	c #493F66",
+"o.	c #B37A7A",
+"p.	c #FFADAD",
+"q.	c #FFE1E1",
+"r.	c #FFF1F1",
+"s.	c #FF7676",
+"t.	c #FF6868",
+"u.	c #FF6060",
+"v.	c #FF4949",
+"w.	c #FFCFCF",
+"x.	c #FFBCBC",
+"y.	c #FFC5C5",
+"z.	c #CB0000",
+"A.	c #7E7E7E",
+"B.	c #818181",
+"C.	c #888887",
+"D.	c #787187",
+"E.	c #110448",
+"F.	c #080436",
+"G.	c #070428",
+"H.	c #35374A",
+"I.	c #ADAEA0",
+"J.	c #3B3E2B",
+"K.	c #61625F",
+"L.	c #635C75",
+"M.	c #3D3660",
+"N.	c #494169",
+"O.	c #4B4669",
+"P.	c #4F4A6A",
+"Q.	c #8D8F8D",
+"R.	c #C2C2C2",
+"S.	c #B67B7B",
+"T.	c #FF9F9F",
+"U.	c #FFCECE",
+"V.	c #FFBABA",
+"W.	c #FF4C4C",
+"X.	c #FF4848",
+"Y.	c #FF6262",
+"Z.	c #FFB4B4",
+"`.	c #FFCBCB",
+" +	c #C70000",
+".+	c #808080",
+"++	c #AFAFAF",
+"@+	c #868686",
+"#+	c #898A89",
+"$+	c #757084",
+"%+	c #2A185A",
+"&+	c #291D44",
+"*+	c #2E2648",
+"=+	c #170A45",
+"-+	c #B1B3A6",
+";+	c #51533D",
+">+	c #4F514D",
+",+	c #5D5871",
+"'+	c #333158",
+")+	c #3D3460",
+"!+	c #423E65",
+"~+	c #515171",
+"{+	c #9D9E9D",
+"]+	c #626262",
+"^+	c #8A8A8A",
+"/+	c #B87C7C",
+"(+	c #FF8E8E",
+"_+	c #FFC1C1",
+":+	c #FFA7A7",
+"<+	c #FF3535",
+"[+	c #FF2929",
+"}+	c #FFD3D3",
+"|+	c #FFCCCC",
+"1+	c #838383",
+"2+	c #B2B2B2",
+"3+	c #8B8B8B",
+"4+	c #8A8B8A",
+"5+	c #777085",
+"6+	c #3A334E",
+"7+	c #0C0A0C",
+"8+	c #141414",
+"9+	c #373151",
+"0+	c #0C0439",
+"a+	c #080437",
+"b+	c #393C4C",
+"c+	c #B8B9AC",
+"d+	c #64664F",
+"e+	c #565751",
+"f+	c #28233D",
+"g+	c #2E2749",
+"h+	c #373051",
+"i+	c #393561",
+"j+	c #393259",
+"k+	c #352C52",
+"l+	c #6E6E6E",
+"m+	c #BA7B7B",
+"n+	c #FF8989",
+"o+	c #FF2121",
+"p+	c #FFD1D1",
+"q+	c #CA0000",
+"r+	c #878787",
+"s+	c #B8B8B8",
+"t+	c #8F8F8F",
+"u+	c #8C8C8A",
+"v+	c #797487",
+"w+	c #5F5A6C",
+"x+	c #847A4D",
+"y+	c #817D76",
+"z+	c #282634",
+"A+	c #0E083E",
+"B+	c #060429",
+"C+	c #000425",
+"D+	c #3C3E50",
+"E+	c #BDBFB1",
+"F+	c #767860",
+"G+	c #595A54",
+"H+	c #8D8D8D",
+"I+	c #929292",
+"J+	c #959497",
+"K+	c #ACABAE",
+"L+	c #737473",
+"M+	c #302A4F",
+"N+	c #3F3C64",
+"O+	c #4B4274",
+"P+	c #4F4876",
+"Q+	c #3F3C69",
+"R+	c #BD7C7C",
+"S+	c #FAA8A8",
+"T+	c #E93B3B",
+"U+	c #F2C6C6",
+"V+	c #EB9191",
+"W+	c #D12E2E",
+"X+	c #D50000",
+"Y+	c #E88E8E",
+"Z+	c #FFD0D0",
+"`+	c #CE0000",
+" @	c #898989",
+".@	c #BCBCBC",
+"+@	c #949494",
+"@@	c #8D8D8C",
+"#@	c #7C788C",
+"$@	c #776960",
+"%@	c #E6C019",
+"&@	c #B1993D",
+"*@	c #26242E",
+"=@	c #171045",
+"-@	c #07042B",
+";@	c #3D3F52",
+">@	c #C6C5B7",
+",@	c #818368",
+"'@	c #595A53",
+")@	c #393052",
+"!@	c #494261",
+"~@	c #52497A",
+"{@	c #4F487A",
+"]@	c #4D4669",
+"^@	c #463E69",
+"/@	c #BC7B7B",
+"(@	c #E86C6C",
+"_@	c #E1A2A2",
+":@	c #DFA2A2",
+"<@	c #C34141",
+"[@	c #C54343",
+"}@	c #F0D8D8",
+"|@	c #A80000",
+"1@	c #AD0000",
+"2@	c #AB0000",
+"3@	c #AA0000",
+"4@	c #BB0000",
+"5@	c #999999",
+"6@	c #8F8E8C",
+"7@	c #8F8C9A",
+"8@	c #959398",
+"9@	c #E5E4DF",
+"0@	c #FBF8F4",
+"a@	c #383437",
+"b@	c #38334F",
+"c@	c #0B0639",
+"d@	c #06042B",
+"e@	c #47495A",
+"f@	c #C7C8BB",
+"g@	c #858770",
+"h@	c #5C5D57",
+"i@	c #14D121",
+"j@	c #332C54",
+"k@	c #3D3A69",
+"l@	c #494266",
+"m@	c #494666",
+"n@	c #494363",
+"o@	c #3F3B66",
+"p@	c #979897",
+"q@	c #AE7D7D",
+"r@	c #CD6262",
+"s@	c #EABFBF",
+"t@	c #EFCBCB",
+"u@	c #C94646",
+"v@	c #C02929",
+"w@	c #FCF5F5",
+"x@	c #C63A3A",
+"y@	c #B10000",
+"z@	c #B50000",
+"A@	c #B70000",
+"B@	c #A10000",
+"C@	c #BDBDBD",
+"D@	c #9E9E9E",
+"E@	c #90908E",
+"F@	c #707170",
+"G@	c #DEDDDA",
+"H@	c #FEFBF8",
+"I@	c #FAF7F4",
+"J@	c #969592",
+"K@	c #1B1A1C",
+"L@	c #807D8A",
+"M@	c #767580",
+"N@	c #75737C",
+"O@	c #707279",
+"P@	c #939496",
+"Q@	c #C7C5B7",
+"R@	c #797E67",
+"S@	c #999A99",
+"T@	c #58576C",
+"U@	c #5C5874",
+"V@	c #5E5576",
+"W@	c #5C597A",
+"X@	c #5E5778",
+"Y@	c #5C5570",
+"Z@	c #646464",
+"`@	c #B07C7C",
+" #	c #DB8282",
+".#	c #ECBABA",
+"+#	c #E7AFAF",
+"@#	c #DA7F7F",
+"##	c #BA0D0D",
+"$#	c #BD1616",
+"%#	c #B00000",
+"&#	c #B40000",
+"*#	c #BA0000",
+"=#	c #A20000",
+"-#	c #C1C1C1",
+";#	c #A2A2A2",
+">#	c #626362",
+",#	c #737270",
+"'#	c #FFFBF8",
+")#	c #FDFBF8",
+"!#	c #FFFCFA",
+"~#	c #E4E1DE",
+"{#	c #060406",
+"]#	c #ACAEAC",
+"^#	c #EFEEEC",
+"/#	c #EEEDE8",
+"(#	c #E7EAE5",
+"_#	c #E4E2DD",
+":#	c #B9BAAC",
+"<#	c #676C55",
+"[#	c #E9E9E9",
+"}#	c #6B6C6D",
+"|#	c #828282",
+"1#	c #B07B7B",
+"2#	c #D36060",
+"3#	c #CD4D4D",
+"4#	c #C63434",
+"5#	c #B80000",
+"6#	c #B90000",
+"7#	c #9E0000",
+"8#	c #C8C8C8",
+"9#	c #5B543A",
+"0#	c #A19054",
+"a#	c #FDFBF7",
+"b#	c #FCFAF6",
+"c#	c #F2E6B8",
+"d#	c #090608",
+"e#	c #807E6E",
+"f#	c #9A9A8E",
+"g#	c #95958B",
+"h#	c #565947",
+"i#	c #70715E",
+"j#	c #78786D",
+"k#	c #91928E",
+"l#	c #EDEDED",
+"m#	c #A4A4A4",
+"n#	c #B1B0B4",
+"o#	c #B1AFB4",
+"p#	c #858587",
+"q#	c #6B6A6B",
+"r#	c #757475",
+"s#	c #787678",
+"t#	c #7C7A7C",
+"u#	c #AC7171",
+"v#	c #8B0000",
+"w#	c #920000",
+"x#	c #980000",
+"y#	c #970000",
+"z#	c #9A0000",
+"A#	c #990000",
+"B#	c #8F0000",
+"C#	c #880000",
+"D#	c #979797",
+"E#	c #D5D5D5",
+"F#	c #534820",
+"G#	c #EFC522",
+"H#	c #EFC610",
+"I#	c #7D755E",
+"J#	c #FEFBF7",
+"K#	c #E4C261",
+"L#	c #B78C0D",
+"M#	c #C2A92E",
+"N#	c #2C2D1E",
+"O#	c #26281A",
+"P#	c #515341",
+"Q#	c #727370",
+"R#	c #A4A5A3",
+"S#	c #F2F2F2",
+"T#	c #CDBC6E",
+"U#	c #AE6E22",
+"V#	c #6B6A6C",
+"W#	c #A7A6A6",
+"X#	c #8A5858",
+"Y#	c #745050",
+"Z#	c #755050",
+"`#	c #785353",
+" $	c #795454",
+".$	c #7B5656",
+"+$	c #7E5959",
+"@$	c #805B5B",
+"#$	c #815C5C",
+"$$	c #845F5F",
+"%$	c #876363",
+"&$	c #8F6868",
+"*$	c #A58181",
+"=$	c #E7E7E7",
+"-$	c #63511C",
+";$	c #F3C410",
+">$	c #F7CF10",
+",$	c #D7B540",
+"'$	c #A6A3A3",
+")$	c #787773",
+"!$	c #956E0F",
+"~$	c #F6CA10",
+"{$	c #D4B328",
+"]$	c #7F7A62",
+"^$	c #4E4E46",
+"/$	c #2D2E24",
+"($	c #4C4C40",
+"_$	c #90918A",
+":$	c #F7F7F7",
+"<$	c #9B9B9D",
+"[$	c #6E6C6F",
+"}$	c #A7A7A7",
+"|$	c #AAAAAA",
+"1$	c #B3B3B3",
+"2$	c #B6B6B6",
+"3$	c #CBCBCB",
+"4$	c #D4D4D4",
+"5$	c #DFDFDF",
+"6$	c #FAFAFA",
+"7$	c #494847",
+"8$	c #373022",
+"9$	c #755E2F",
+"0$	c #695024",
+"a$	c #2D2B23",
+"b$	c #292921",
+"c$	c #664D24",
+"d$	c #6F5624",
+"e$	c #40403D",
+"f$	c #C6C6C6",
+"g$	c #E4E4E4",
+"h$	c #FCFCFC",
+"i$	c #C7C7C7",
+"j$	c #696869",
+"k$	c #000001",
+"l$	c #FEFEFE",
+"m$	c #020202",
+"n$	c #5C5C5C",
+"o$	c #7F7F7F",
+"p$	c #858585",
+"q$	c #888888",
+"r$	c #707070",
+"s$	c #919397",
+"t$	c #9B9EA4",
+"u$	c #9DA0A7",
+"v$	c #9FA2A9",
+"w$	c #A0A4AB",
+"x$	c #A1A5AD",
+"y$	c #A3A6AB",
+"z$	c #A6A6A6",
+"A$	c #B0B0B0",
+"B$	c #2C2C2C",
+"C$	c #F1F1F1",
+"D$	c #878D94",
+"E$	c #868D94",
+"F$	c #888E94",
+"G$	c #858C93",
+"H$	c #858B92",
+"I$	c #848A91",
+"J$	c #959595",
+"K$	c #82827A",
+"L$	c #A48E74",
+"M$	c #817A73",
+"N$	c #C3C6CC",
+"O$	c #FEFFFF",
+"P$	c #F8FAFF",
+"Q$	c #EEF1FA",
+"R$	c #E0E5F2",
+"S$	c #B3BDD1",
+"T$	c #AFB2B9",
+"U$	c #E5E5E5",
+"V$	c #939393",
+"W$	c #A1805D",
+"X$	c #FFCD81",
+"Y$	c #DD9B55",
+"Z$	c #89827B",
+"`$	c #C4C7CD",
+" %	c #FAFCFF",
+".%	c #F1F4FC",
+"+%	c #E5EAF4",
+"@%	c #DAE0ED",
+"#%	c #B4B7BE",
+"$%	c #202020",
+"%%	c #829BB6",
+"&%	c #F0F0F0",
+"*%	c #EFEFEF",
+"=%	c #ECECEC",
+"-%	c #EBEBEB",
+";%	c #A87E53",
+">%	c #F5800D",
+",%	c #FFCF81",
+"'%	c #DE9E58",
+")%	c #C9C4C3",
+"!%	c #FBFDFF",
+"~%	c #F5F7FD",
+"{%	c #E9EDF7",
+"]%	c #F5F8FD",
+"^%	c #D9DFED",
+"/%	c #BABDC4",
+"(%	c #92D0F5",
+"_%	c #10161B",
+":%	c #1D2931",
+"<%	c #3B5462",
+"[%	c #75A6C4",
+"}%	c #98D3F5",
+"|%	c #7590AE",
+"1%	c #EEEEEE",
+"2%	c #EAEAEA",
+"3%	c #919191",
+"4%	c #9D9D9D",
+"5%	c #A88665",
+"6%	c #FF931E",
+"7%	c #F57F0D",
+"8%	c #FFC87E",
+"9%	c #EBA863",
+"0%	c #F5EEE7",
+"a%	c #FDFFFF",
+"b%	c #F7F9FE",
+"c%	c #EDF0F9",
+"d%	c #A3AFC7",
+"e%	c #41ACFD",
+"f%	c #256391",
+"g%	c #3286C5",
+"h%	c #348ACB",
+"i%	c #163B57",
+"j%	c #3081BE",
+"k%	c #A1A1A1",
+"l%	c #926F59",
+"m%	c #E16E0D",
+"n%	c #FF8F16",
+"o%	c #FFBF64",
+"p%	c #E89F5B",
+"q%	c #F8F0EA",
+"r%	c #EFF3FA",
+"s%	c #E6EAF5",
+"t%	c #DADDE4",
+"u%	c #ABB5CC",
+"v%	c #61BAFA",
+"w%	c #172B3A",
+"x%	c #040608",
+"y%	c #091016",
+"z%	c #5CB1EE",
+"A%	c #D9D9D9",
+"B%	c #B8B5B5",
+"C%	c #7E7775",
+"D%	c #B3AEAD",
+"E%	c #CACACA",
+"F%	c #E8E8E8",
+"G%	c #909090",
+"H%	c #82726B",
+"I%	c #903400",
+"J%	c #E26C0A",
+"K%	c #FC890D",
+"L%	c #FF8808",
+"M%	c #FDB683",
+"N%	c #EEC297",
+"O%	c #FFF6F4",
+"P%	c #F8FBFF",
+"Q%	c #B4BDD1",
+"R%	c #0E2537",
+"S%	c #0A1A26",
+"T%	c #B07B6F",
+"U%	c #C46755",
+"V%	c #E1705A",
+"W%	c #DA6A53",
+"X%	c #D16650",
+"Y%	c #B35846",
+"Z%	c #975C50",
+"`%	c #544441",
+" &	c #7F6A62",
+".&	c #8F3200",
+"+&	c #E26600",
+"@&	c #FF7902",
+"#&	c #FD9D66",
+"$&	c #FFF0D8",
+"%&	c #FEDBCA",
+"&&	c #F9FBFF",
+"*&	c #ECF0F9",
+"=&	c #E1E6F2",
+"-&	c #BBC3D6",
+";&	c #08131D",
+">&	c #716E7A",
+",&	c #D3705C",
+"'&	c #E06C56",
+")&	c #DD6B55",
+"!&	c #D76851",
+"~&	c #CF644F",
+"{&	c #C7614D",
+"]&	c #C05D4A",
+"^&	c #B85A47",
+"/&	c #AE5745",
+"(&	c #66443E",
+"_&	c #7E6861",
+":&	c #8C3301",
+"<&	c #C05410",
+"[&	c #D86E3A",
+"}&	c #FABE97",
+"|&	c #FFE1C6",
+"1&	c #F0E5E7",
+"2&	c #E8ECF6",
+"3&	c #E5E9F4",
+"4&	c #C0C8DA",
+"5&	c #C0C0C0",
+"6&	c #225B85",
+"7&	c #3FA6F5",
+"8&	c #CB7462",
+"9&	c #DF6C55",
+"0&	c #DB6A53",
+"a&	c #D36750",
+"b&	c #CB634E",
+"c&	c #C45F4B",
+"d&	c #BC5B48",
+"e&	c #B55946",
+"f&	c #AD5544",
+"g&	c #A65241",
+"h&	c #A15443",
+"i&	c #948886",
+"j&	c #6A6A6A",
+"k&	c #757575",
+"l&	c #6E5A53",
+"m&	c #4D301B",
+"n&	c #75451E",
+"o&	c #C97750",
+"p&	c #FBCAA9",
+"q&	c #F8D4C8",
+"r&	c #EBEFF8",
+"s&	c #C3CBDC",
+"t&	c #C4C4C4",
+"u&	c #E9F6FD",
+"v&	c #333334",
+"w&	c #4C4C4C",
+"x&	c #606E80",
+"y&	c #E27E67",
+"z&	c #D76852",
+"A&	c #CF654F",
+"B&	c #C8614D",
+"C&	c #B37357",
+"D&	c #6C777D",
+"E&	c #647276",
+"F&	c #5D6B6F",
+"G&	c #566668",
+"H&	c #4F6062",
+"I&	c #7F817F",
+"J&	c #6D6D6D",
+"K&	c #777777",
+"L&	c #7E7F84",
+"M&	c #5F5B57",
+"N&	c #5C3219",
+"O&	c #BD7552",
+"P&	c #EEAE8B",
+"Q&	c #E1E0E2",
+"R&	c #EAEEF7",
+"S&	c #C5CCDD",
+"T&	c #D2ECFB",
+"U&	c #3B4246",
+"V&	c #E5937F",
+"W&	c #CC634E",
+"X&	c #C45F4C",
+"Y&	c #BD5C49",
+"Z&	c #CEB660",
+"`&	c #5B9F93",
+" *	c #26849B",
+".*	c #1F7B90",
+"+*	c #197386",
+"@*	c #297988",
+"#*	c #505F61",
+"$*	c #747474",
+"%*	c #919398",
+"&*	c #9A9B9E",
+"**	c #665D5A",
+"=*	c #4A3423",
+"-*	c #86847E",
+";*	c #EBEFF7",
+">*	c #E7EBF5",
+",*	c #C6CDDE",
+"'*	c #CCCCCC",
+")*	c #597F96",
+"!*	c #989898",
+"~*	c #B48A80",
+"{*	c #D47B68",
+"]*	c #B95A47",
+"^*	c #B25845",
+"/*	c #AE5E46",
+"(*	c #D2D468",
+"_*	c #AEC16D",
+":*	c #237D90",
+"<*	c #197487",
+"[*	c #2C7A89",
+"}*	c #2F5A62",
+"|*	c #6F7272",
+"1*	c #8C8C8C",
+"2*	c #999CA0",
+"3*	c #B2B4B9",
+"4*	c #B0B3B7",
+"5*	c #9D9FA4",
+"6*	c #565759",
+"7*	c #CDD1D8",
+"8*	c #D0D0D0",
+"9*	c #5E879F",
+"0*	c #555352",
+"a*	c #916B62",
+"b*	c #C37968",
+"c*	c #AD5D4D",
+"d*	c #B48451",
+"e*	c #CCCF68",
+"f*	c #C5C769",
+"g*	c #6B957C",
+"h*	c #39727D",
+"i*	c #274B53",
+"j*	c #2D3739",
+"k*	c #CACDD2",
+"l*	c #F0F0F2",
+"m*	c #E8EBF1",
+"n*	c #E5E8EF",
+"o*	c #E3E6EE",
+"p*	c #E2E6EE",
+"q*	c #E4E8F1",
+"r*	c #E6EBF5",
+"s*	c #C6CEDE",
+"t*	c #AEAEAE",
+"u*	c #796D6A",
+"v*	c #765149",
+"w*	c #8C764A",
+"x*	c #97974E",
+"y*	c #838447",
+"z*	c #586347",
+"A*	c #293B3F",
+"B*	c #565858",
+"C*	c #BBBBBB",
+"D*	c #CFD3DA",
+"E*	c #D7DCE7",
+"F*	c #D3DAE6",
+"G*	c #D2D8E5",
+"H*	c #D1D7E5",
+"I*	c #CFD6E3",
+"J*	c #CDD4E3",
+"K*	c #CBD2E1",
+"L*	c #C9D0E0",
+"M*	c #C7CFDF",
+"N*	c #B6BFD2",
+"O*	c #D8D8D8",
+"P*	c #C3C3C3",
+"Q*	c #B7B7B7",
+"R*	c #A0A0A0",
+"S*	c #A5A5A5",
+"T*	c #BFBFBF",
+"U*	c #0B0B0B",
+"V*	c #090909",
+"W*	c #D9D499",
+"X*	c #E4D08D",
+"Y*	c #EABE8D",
+"Z*	c #E3B26B",
+"`*	c #E3B982",
+" =	c #BDA385",
+".=	c #C6C6D5",
+"+=	c #9494AD",
+"@=	c #787879",
+"#=	c #78787D",
+"$=	c #838386",
+"%=	c #80807B",
+"&=	c #79786A",
+"*=	c #868568",
+"==	c #8C8C6B",
+"-=	c #888874",
+";=	c #EDE1C3",
+">=	c #ECC48A",
+",=	c #F69854",
+"'=	c #F78E42",
+")=	c #EB9D54",
+"!=	c #FFC280",
+"~=	c #DA776F",
+"{=	c #EA3166",
+"]=	c #DE2F66",
+"^=	c #D57F6A",
+"/=	c #BBA97D",
+"(=	c #F3C3BC",
+"_=	c #ED6B56",
+":=	c #E8E1E3",
+"<=	c #EEEEF2",
+"[=	c #EAEAF0",
+"}=	c #DEDEE7",
+"|=	c #E0E0E9",
+"1=	c #7F7F83",
+"2=	c #A7A7AE",
+"3=	c #D2D2CB",
+"4=	c #EDEDC5",
+"5=	c #FDF9AE",
+"6=	c #EDE98B",
+"7=	c #D2CF66",
+"8=	c #ADA84D",
+"9=	c #8E8B4B",
+"0=	c #9D9986",
+"a=	c #EED392",
+"b=	c #FFCF86",
+"c=	c #FBBB57",
+"d=	c #E92F00",
+"e=	c #EB2F00",
+"f=	c #D85025",
+"g=	c #F3B366",
+"h=	c #E6466F",
+"i=	c #FF0061",
+"j=	c #DD7075",
+"k=	c #D6B275",
+"l=	c #B89A77",
+"m=	c #C6BFCC",
+"n=	c #F36C55",
+"o=	c #EB3517",
+"p=	c #DCBAB7",
+"q=	c #EDEFF4",
+"r=	c #EDEDF2",
+"s=	c #E1E1E9",
+"t=	c #C9C9D7",
+"u=	c #767675",
+"v=	c #8C8B7D",
+"w=	c #D7D7B9",
+"x=	c #FFFFF0",
+"y=	c #FFFFFA",
+"z=	c #FFFDD8",
+"A=	c #FFFAB0",
+"B=	c #FFF88D",
+"C=	c #FFF566",
+"D=	c #FFF746",
+"E=	c #D1C336",
+"F=	c #82723E",
+"G=	c #9A8F7E",
+"H=	c #F1DCB7",
+"I=	c #FDCF86",
+"J=	c #FFCF72",
+"K=	c #F8BB57",
+"L=	c #D02F00",
+"M=	c #DF2F00",
+"N=	c #EF4310",
+"O=	c #F6B661",
+"P=	c #E44D6C",
+"Q=	c #F00877",
+"R=	c #F80677",
+"S=	c #DD7179",
+"T=	c #CEA764",
+"U=	c #CE9B60",
+"V=	c #C6C3D1",
+"W=	c #F3806D",
+"X=	c #ED2F11",
+"Y=	c #D9BCB9",
+"Z=	c #EDEFF3",
+"`=	c #E4E4EB",
+" -	c #7D7D6B",
+".-	c #D7D79A",
+"+-	c #FFFBBF",
+"@-	c #FFFEDB",
+"#-	c #FFFEE4",
+"$-	c #FFFBB2",
+"%-	c #FFF986",
+"&-	c #FFF658",
+"*-	c #FDEF36",
+"=-	c #D6B832",
+"--	c #926E35",
+";-	c #6F5642",
+">-	c #B5B1AC",
+",-	c #F3D269",
+"'-	c #F8D334",
+")-	c #FFDC45",
+"!-	c #FAC75D",
+"~-	c #DF7D3B",
+"{-	c #E97A2A",
+"]-	c #E7843C",
+"^-	c #EDBD61",
+"/-	c #E3947A",
+"(-	c #DE6C79",
+"_-	c #DB3686",
+":-	c #CE7E9D",
+"<-	c #CE8BA6",
+"[-	c #CE8188",
+"}-	c #996D74",
+"|-	c #D1D1D1",
+"1-	c #F3CDC6",
+"2-	c #E93E23",
+"3-	c #DED3D3",
+"4-	c #F1F1F5",
+"5-	c #E6E6ED",
+"6-	c #DBDBE5",
+"7-	c #CDCDDA",
+"8-	c #BFBFD0",
+"9-	c #76756C",
+"0-	c #A9A669",
+"a-	c #FFF992",
+"b-	c #FFF9A4",
+"c-	c #FFFEE3",
+"d-	c #FDFDED",
+"e-	c #F5F2B4",
+"f-	c #F9F477",
+"g-	c #FFF23D",
+"h-	c #D6BA31",
+"i-	c #A97B33",
+"j-	c #A67133",
+"k-	c #826137",
+"l-	c #A08C69",
+"m-	c #FFEB19",
+"n-	c #FFFF00",
+"o-	c #FFF709",
+"p-	c #F2D135",
+"q-	c #E5C26F",
+"r-	c #D3CE77",
+"s-	c #D1B165",
+"t-	c #CFB875",
+"u-	c #AF7C77",
+"v-	c #B1306F",
+"w-	c #961766",
+"x-	c #9D36B5",
+"y-	c #9F09D6",
+"z-	c #A406CC",
+"A-	c #A55DB4",
+"B-	c #F5EAE9",
+"C-	c #EE391C",
+"D-	c #DCB3AE",
+"E-	c #F0F1F6",
+"F-	c #F0F0F4",
+"G-	c #E7E7EE",
+"H-	c #E3E3EA",
+"I-	c #D0D0DC",
+"J-	c #C4C4D3",
+"K-	c #C2C2D1",
+"L-	c #89865A",
+"M-	c #D2CC62",
+"N-	c #FFF676",
+"O-	c #FFF785",
+"P-	c #FFFA9D",
+"Q-	c #FCFABC",
+"R-	c #E2E3DA",
+"S-	c #C9C9C7",
+"T-	c #BFC0A2",
+"U-	c #CEB94A",
+"V-	c #A5732D",
+"W-	c #AD7933",
+"X-	c #C79333",
+"Y-	c #AD8735",
+"Z-	c #907A4A",
+"`-	c #CDCDCD",
+" ;	c #FBEF0C",
+".;	c #FFF70C",
+"+;	c #DFD148",
+"@;	c #DDC063",
+"#;	c #D0C261",
+"$;	c #D5B46A",
+"%;	c #907059",
+"&;	c #421B10",
+"*;	c #7B0947",
+"=;	c #7C0642",
+"-;	c #B43ED9",
+";;	c #A90BFD",
+">;	c #B853C8",
+",;	c #9F7258",
+"';	c #F0D5D0",
+");	c #EA3A1C",
+"!;	c #E05A44",
+"~;	c #E5E5E8",
+"{;	c #E8E8EE",
+"];	c #CBCBD9",
+"^;	c #C8C8D6",
+"/;	c #868247",
+"(;	c #EDE54C",
+"_;	c #FFF753",
+":;	c #FFF85C",
+"<;	c #FDF76B",
+"[;	c #EBEAC1",
+"};	c #BCBCC5",
+"|;	c #686875",
+"1;	c #878895",
+"2;	c #BFB9B6",
+"3;	c #BE903A",
+"4;	c #D5A730",
+"5;	c #DCB433",
+"6;	c #D1AF34",
+"7;	c #7F713F",
+"8;	c #FAD739",
+"9;	c #F3ED24",
+"0;	c #F8E533",
+"a;	c #D8C763",
+"b;	c #EBA76F",
+"c;	c #D1C260",
+"d;	c #C7A65C",
+"e;	c #311F0F",
+"f;	c #0C0000",
+"g;	c #390012",
+"h;	c #5F1B24",
+"i;	c #AA36BA",
+"j;	c #9B0BD5",
+"k;	c #9D0BD9",
+"l;	c #A4569D",
+"m;	c #EDA093",
+"n;	c #D68678",
+"o;	c #E36B58",
+"p;	c #D78F85",
+"q;	c #E4E7EE",
+"r;	c #DCDCE5",
+"s;	c #D6D6E1",
+"t;	c #D2D2DE",
+"u;	c #D1D1DD",
+"v;	c #CECEDB",
+"w;	c #78703B",
+"x;	c #F0DF34",
+"y;	c #F2E135",
+"z;	c #F2E034",
+"A;	c #E5D645",
+"B;	c #D9D9D3",
+"C;	c #6E6F7D",
+"D;	c #A4A5A6",
+"E;	c #696976",
+"F;	c #DDDFE8",
+"G;	c #DFCE66",
+"H;	c #F4D925",
+"I;	c #F3DC31",
+"J;	c #F2DC32",
+"K;	c #79703C",
+"L;	c #D6D6D6",
+"M;	c #EAC46F",
+"N;	c #F0CB6C",
+"O;	c #D8B36A",
+"P;	c #D1BD6E",
+"Q;	c #D3B375",
+"R;	c #CBB260",
+"S;	c #B28866",
+"T;	c #0C0706",
+"U;	c #020206",
+"V;	c #2B1010",
+"W;	c #5E3D1F",
+"X;	c #CB8B8D",
+"Y;	c #B78394",
+"Z;	c #C27794",
+"`;	c #B0747D",
+" >	c #C3BECB",
+".>	c #E56E5B",
+"+>	c #D6C5C5",
+"@>	c #EAD4D4",
+"#>	c #DE4C37",
+"$>	c #CFAEAF",
+"%>	c #D9D0D8",
+"&>	c #D5D4DF",
+"*>	c #D4D4E0",
+"=>	c #72643C",
+"->	c #B59434",
+";>	c #BA9332",
+">>	c #B48A30",
+",>	c #AD8336",
+"'>	c #B7B1AD",
+")>	c #888A97",
+"!>	c #6A6B78",
+"~>	c #A3A4AB",
+"{>	c #EDE871",
+"]>	c #FFF53F",
+"^>	c #FFF23F",
+"/>	c #EDE03B",
+"(>	c #8D863F",
+"_>	c #DBDBDB",
+":>	c #E5C895",
+"<>	c #DCAF6C",
+"[>	c #D8C065",
+"}>	c #CEBF61",
+"|>	c #C5B677",
+"1>	c #ACA385",
+"2>	c #9E9899",
+"3>	c #434340",
+"4>	c #3F3D1C",
+"5>	c #744232",
+"6>	c #BA7D50",
+"7>	c #9B7687",
+"8>	c #313FDB",
+"9>	c #1E3DF1",
+"0>	c #494FBA",
+"a>	c #C0ABB4",
+"b>	c #DA7767",
+"c>	c #E3CBC9",
+"d>	c #E9C7C4",
+"e>	c #D76A5D",
+"f>	c #D7341C",
+"g>	c #D35847",
+"h>	c #D36858",
+"i>	c #CABCC2",
+"j>	c #D7D7E2",
+"k>	c #705B4A",
+"l>	c #886035",
+"m>	c #A77333",
+"n>	c #B37E33",
+"o>	c #C8952D",
+"p>	c #CAAE4C",
+"q>	c #C1C0AE",
+"r>	c #D0D0D7",
+"s>	c #E7E7EC",
+"t>	c #F3F1DA",
+"u>	c #FDF792",
+"v>	c #FFF67B",
+"w>	c #FFF468",
+"x>	c #D2C957",
+"y>	c #A6A058",
+"z>	c #D3BB6C",
+"A>	c #CFB869",
+"B>	c #D0BB6C",
+"C>	c #B1A5A1",
+"D>	c #8A94A5",
+"E>	c #2D3945",
+"F>	c #444823",
+"G>	c #A17741",
+"H>	c #CF9A61",
+"I>	c #887F9F",
+"J>	c #0B2FFD",
+"K>	c #002FFD",
+"L>	c #324AD8",
+"M>	c #9C725C",
+"N>	c #B0ACAB",
+"O>	c #BE7570",
+"P>	c #DF5F48",
+"Q>	c #D98075",
+"R>	c #D2837B",
+"S>	c #CCB3B2",
+"T>	c #D6A19E",
+"U>	c #D45341",
+"V>	c #C75E4F",
+"W>	c #BFB9C0",
+"X>	c #D9D9E3",
+"Y>	c #857A70",
+"Z>	c #846337",
+"`>	c #CA9633",
+" ,	c #D4A533",
+".,	c #E2BE33",
+"+,	c #F6DD2B",
+"@,	c #F3EA4E",
+"#,	c #E1DF9A",
+"$,	c #EBEAD0",
+"%,	c #FDFCE5",
+"&,	c #FFFBBE",
+"*,	c #FFF8A1",
+"=,	c #FFF68A",
+"-,	c #AFA965",
+";,	c #C3BF82",
+">,	c #C6A47F",
+",,	c #A69F87",
+"',	c #3A364D",
+"),	c #525141",
+"!,	c #A67E41",
+"~,	c #C88B53",
+"{,	c #CF9061",
+"],	c #C88761",
+"^,	c #897F90",
+"/,	c #0F2FF3",
+"(,	c #082FF7",
+"_,	c #4047D8",
+":,	c #81645A",
+"<,	c #CA9C95",
+"[,	c #E25240",
+"},	c #B74331",
+"|,	c #D9A49B",
+"1,	c #D8CED0",
+"2,	c #DDDCE2",
+"3,	c #E4E6ED",
+"4,	c #DCC8CD",
+"5,	c #BDB4BA",
+"6,	c #C5C9D2",
+"7,	c #DADAE4",
+"8,	c #9C9B9A",
+"9,	c #826D48",
+"0,	c #B89535",
+"a,	c #F0D632",
+"b,	c #FEEF37",
+"c,	c #FFF75B",
+"d,	c #FFFB91",
+"e,	c #FFFDC8",
+"f,	c #FFFFF1",
+"g,	c #FFFDDB",
+"h,	c #FFFABD",
+"i,	c #D7D292",
+"j,	c #A39F72",
+"k,	c #DFDEC6",
+"l,	c #B27F5B",
+"m,	c #D4A77A",
+"n,	c #8C6636",
+"o,	c #72491F",
+"p,	c #9D7A45",
+"q,	c #CC9A61",
+"r,	c #CF9361",
+"s,	c #C99061",
+"t,	c #A97E5C",
+"u,	c #906D5F",
+"v,	c #808185",
+"w,	c #8F7885",
+"x,	c #A16773",
+"y,	c #6D4C42",
+"z,	c #B0ABAA",
+"A,	c #D77B6D",
+"B,	c #CB4F40",
+"C,	c #D51E0F",
+"D,	c #AC8183",
+"E,	c #E9EFF2",
+"F,	c #E5E5EC",
+"G,	c #D7D8E1",
+"H,	c #9E9787",
+"I,	c #8D7C3D",
+"J,	c #C9B434",
+"K,	c #FBEA34",
+"L,	c #FFF349",
+"M,	c #FFF56D",
+"N,	c #FFF798",
+"O,	c #FFFDE8",
+"P,	c #FFFEF3",
+"Q,	c #D7D5B9",
+"R,	c #9F9C85",
+"S,	c #D0CFB3",
+"T,	c #99714C",
+"U,	c #DBA97B",
+"V,	c #7B5029",
+"W,	c #767361",
+"X,	c #BBA07C",
+"Y,	c #CA9E68",
+"Z,	c #CA9561",
+"`,	c #CF8761",
+" '	c #B3805C",
+".'	c #322841",
+"+'	c #413759",
+"@'	c #8D7963",
+"#'	c #A7735A",
+"$'	c #A26453",
+"%'	c #DE6253",
+"&'	c #CE2B1C",
+"*'	c #C84030",
+"='	c #BE5245",
+"-'	c #B8BBC9",
+";'	c #F3F3F6",
+">'	c #DFDFE8",
+",'	c #AFA77E",
+"''	c #9A9144",
+")'	c #AFA73D",
+"!'	c #D2C851",
+"~'	c #EDE470",
+"{'	c #FDF598",
+"]'	c #EDE8AF",
+"^'	c #D2D0BC",
+"/'	c #AFAFB3",
+"('	c #A3A3A1",
+"_'	c #D0CFC1",
+":'	c #937257",
+"<'	c #DBAA7B",
+"['	c #714D25",
+"}'	c #C69D70",
+"|'	c #BE8D61",
+"1'	c #A77F54",
+"2'	c #443251",
+"3'	c #606492",
+"4'	c #A39EA3",
+"5'	c #A46959",
+"6'	c #96734D",
+"7'	c #DD6557",
+"8'	c #DC3121",
+"9'	c #C16F64",
+"0'	c #C1C8C8",
+"a'	c #BAB9AC",
+"b'	c #B3B072",
+"c'	c #A29E61",
+"d'	c #8C885F",
+"e'	c #7D7B64",
+"f'	c #8C8A78",
+"g'	c #A6A499",
+"h'	c #C3C3C2",
+"i'	c #DFDFDE",
+"j'	c #D5A96D",
+"k'	c #775529",
+"l'	c #A17E63",
+"m'	c #AC825F",
+"n'	c #936958",
+"o'	c #AC97A9",
+"p'	c #C9B4B3",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . + ",
+". # $ % & * = - ; > , ' ) ! ~ { ] + . ^ / ( _ : < [ } | 1 2 3 4 5 6 7 + . 8 8 8 8 8 8 8 8 9 0 a b c d e f + ",
+". $ g h i j k l m g n o p q r s f + . / : t u v w x y z A B C D E F G + . 8 H I J K L M 8 N a b c d e f 7 + ",
+". O P . Q R h S T U V W X Y Z `  .+ . ..+. at .#.$.%.&.*.=.-.;.>.,.'.).!.+ . 8 ~.{.].^./.(.8 N b c d e f 7 _.+ ",
+". :.<.[.. }.l |.1.2.3.. 4.5.6.7. .+ . 8.9.0.a.b.c.d.e.=.-.;.>.f.g.h.i.+ . 8 j.k.l.m.l.n.8 N c d e f 7 _.!.+ ",
+". o.p.q.r.. s.t.u.v.w.x.y.5.z.A.e + . B.C.D.a.E.c.d.e.F.-.G.>.H.I.J.K.+ . 8 L.M.N.O.P.m.8 Q.d e f 7 _.!.R.+ ",
+". S.T.U.i . V.W.X.Y.|.Z.`.5. +.++++ . @+#+$+%+&+*+=+e.F.-.;.>.H.-+;+>++ . 8 ,+'+)+!+~+{+{+{+{+{+{+{+{+]+^++ ",
+". /+(+_+:+V.. <+[+}+5._+|+5. +1+2++ . 3+4+5+6+7+8+9+0+a+-.G.>.b+c+d+e++ . 8 8 8 8 8 8 {+f+g+h+i+j+k+{+N l++ ",
+". m+m Z.:+W.. n+o+p+5.w.p+5.q+r+s++ . t+u+v+w+x+y+z+A+F.-.B+C+D+E+F+G++ . H+I+J+K+8 L+{+M+N+O+P+N.Q+{+N l++ ",
+". R+g p.S+T+U+. V+W+X+Y+Z+5.`+ @. at + . +@@@#@$@%@&@*@=@a+-.- at C+;@>@,@'@+ . {+{+{+{+{+{+{+)@!@~@{@]@^@{+N l++ ",
+". /@(@_@:@<@[@. }@|@1 at 2@3 at 4@Z ^+G + . 5 at 6@7 at 8@9 at 0@a at b@c at -.d@C+e at f@g at h@+ . {+i@{+{+{+{+{+j at k@l at m@n at o@{+N p at + ",
+". q at r@s at t@u at v@w at x@y at z@z at z@A at B@H+C at + . D at E@F at G@H at I@J at K@L at M@N at O@P at Q@R at S@+ . {+{+{+{+{+{+{+T at U@V at W@X at Y@{+Z at r++ ",
+". `@ #.#+#@###$#%#&#Z Z A@*#=#t+-#+ . ;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#+ . b c d }#f 7 {+{+{+{+{+{+{+{+{+|#+ ",
+". 1#2#3#4#5#z at A@5#5#6#5#Z 5#7#t+8#+ . / 9#0#a#b#u c#d#e#f#g#h#i#j#k#l#+ . c d e }#7 _.d m#n#o#p#q#r#s#t#9 + ",
+". u#=#v#w#x#y#y#z#A#x#B#C#B#A#D#E#+ . F#G#H#I#J#u K#L#M#N#O#P#Q#R#l#S#+ . d e T#U#T#!.{+{+{+{+{+{+{+{+V#_ + ",
+". W#X#Y#Z#`# $.$+$@$#$$$%$&$*$i.=$+ . -$;$>$,$'$)$!$~${$]$^$/$($_$S#:$+ . }#}#U#U#U#}#{+i@{+{+{+{+{+<$[$_ + ",
+". 2+ .;#c }$|$i.1$2$_.R.3$4$5$=$6$+ . 7$8$9$0$a$b$c$d$e$f$g$[#l#S#:$h$+ . f 7 T#U#T#i${+{+{+{+{+{+{+{+j$^ + ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . k$",
+". l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$m$. ^ n$8.o$.+|#1+p$@+q$^+3+H+s r$d + . ^ / ..8.s$t$u$v$w$x$x$y$z$e A$7 + ",
+". l$l$l$l$l$l$l$l$l$l$l$l$+ B$C$C$+ . / 8.+ D$E$+ F$G$H$+ H$I$I$+ + at J$+ . K$L$M$B.N$. . O$P$Q$R$S$T$++7 G + ",
+". l$l$l$l$l$l$l$l$l$l$U$+ 9 l$l$l$+ . ..o$+ + + + + + + + + + + + V$J$+ . W$X$Y$Z$`$. . .  %.%+%S$@%#%_.!.+ ",
+". l$l$l$l$l$l$l$+ + $%+ o$l$l$l$l$+ . 8..++ %%%%+ C$&%*%+ l#=%-%+ I+5 at + . ;%>%,%'%)%. . . !%~%{%S$]%^%/%R.+ ",
+". (%(%(%(%(%(%_%:%<%[%+ (%(%(%}%}%+ . B.|#+ |%|%+ &%*%1%+ =%-%2%+ 3%4%+ . 5%6%7%8%9%0%. . a%b%c%S$S$S$d%. at + ",
+". e%e%e%e%e%f%g%e%e%h%i%j%e%e%e%e%+ . @+1++ + + + + + + + + + + + 3%k%+ . l%m%n%>%o%p%q%. O$P$r%s%t%t%u%7 + ",
+". v%v%v%v%v%v%v%w%x%y%z%v%v%v%v%v%+ . 3+p$+ |%|%+ 1%A%B%C%D%E%F%+ G%m#+ . H%I%J%K%L%M%N%O%O$P%c%s%t%t%Q%s++ ",
+". e%e%e%e%e%e%R%+ S%e%e%e%e%e%e%e%+ . t+ at ++ + + + T%U%V%W%X%Y%Z%`%H+d + . H+ &.&+&@&#&$&%&&&*&=&s%t%t%-&. at + ",
+". e%e%e%e%e%e%+ ;&h%e%e%e%e%e%e%e%+ . + at q$+ |%>&,&'&)&!&~&{&]&^&/&(&|$+ . ` r+_&:&<&[&}&|&1&2&3&s%t%t%4&5&+ ",
+". e%e%e%6&;&+ + 7&e%e%e%e%e%e%e%e%+ . 5@^++ + 8&9&0&a&b&c&d&e&f&g&h&i&+ . j&^ k&l&m&n&o&p&q&r&2&s%t%t%s&t&+ ",
+". u&u&x%+ v&w&B$u&u&u&u&u&u&u&u&u&+ . D at 3++ x&y&z&A&B&]&C&D&E&F&G&H&I&+ . J&r$/ K&L&M&N&O&P&Q&R&s%t%t%S&8#+ ",
+". T&x%U&T&T&T&T&T&T&T&T&T&T&T&T&T&+ . ;#H++ + V&W&X&Y&e&Z&`& *.*+*@*#*+ . $*k&K&7.%*f &***=*-*;*>*t%t%,*'*+ ",
+". )*<%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . }$s + !*~*{*]*^*/*(*_*:*<*[*}*|*+ . a J$1*@+2*_.3*4*5*6*7*>*t%t%,*8*+ ",
+". 9*(%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . e k&+ + 0*a*b*c*d*e*f*g*h*i*j*. at + . e A$1$] k*l*m*n*o*p*q*r*t%t%s*4$+ ",
+". (%(%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . A$t*d |$t*k%u*v*w*x*y*z*A*B*C*-%+ . A$7 G !.D*E*F*G*H*I*J*K*L*M*N*O*+ ",
+". (%(%(%(%(%(%(%(%(%(%(%(%(%(%}%}%+ . 7 G !.P*8#3$i$G D#A.A.J$C*A%C$h$+ . 7 G !.P*Q*R*;#S* .e ++1$2$_.T*F%+ ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + U*V*V*+ + + + + + + + + + + + ",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . k$. . . . . . . . . . . . . . . . . + ",
+". ^ / ..8.B. at +W*X*Y*Z*`* =e e A$7 + . ^ / ..8..=.=.=.=.=.=.=.=+=e A$7 + . ^ / ..@=#=$=%=&=*===-=a }$e A$7 + ",
+". / ..;=>=,='=)=!=~={=]=^=/=. at 7 G + . / ..8.B..=(=_=:=<=[=}=|=+=+=7 G + . / ..K&1=2=3=4=5=6=7=8=9=0=A$7 G + ",
+". / a=b=c=d=e=f=g=h=i=i=j=k=l=G !.+ . ..8.B. at +m=n=o=p=q=r=s=|=+=t=+=!.+ . ..u=v=w=x=y=z=A=B=C=D=E=F=G=G !.+ ",
+". H=I=J=K=L=M=N=O=P=Q=R=S=T=U=l=P*+ . 8.B. at +3+V=W=X=Y=Z=<=`=|=+=+=+=+=+ . @= -.-+- at -y=#-$-%-&-*-=---;->-P*+ ",
+". ,-'-)-!-~-{-]-^-/-(-_-:-<-[-}-|-+ . B. at +3+t+.=1-2-3-4-<=5-|=6-7-8-+=+ . 9-0-a-b-+-c-d-e-f-g-h-i-j-k-l-8#+ ",
+". m-n-o-p-q-r-s-t-u-v-w-x-y-z-A-l=+ . @+3+t++ at .=B-C-D-E-F-G-H-I-J-K-+=+ . L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-`-+ ",
+".  ;n-.;+;@;#;$;%;&;*;=;-;;;;;>;,;+ . 3+t++ at 5@.=';);!;~;F-{;|=];^;.=+=+ . /;(;_;:;<;[;};|;1;2;3;4;5;6;7;|-+ ",
+". 8;9;0;a;b;c;d;e;f;g;h;i;j;k;l;,;+ . t++ at 5@D at .=m;n;o;p;q;r;s;t;u;v;+=+ . w;x;y;z;A;B;C;D;E;F;G;H;I;J;K;L;+ ",
+". M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;`;,;+ . + at 5@D@;# >.>+>@>#>$>%>%>&>*>t;+=+ . =>->;>>>,>'>)>!>~>4-{>]>^>/>(>_>+ ",
+". :><>[>}>|>1>2>3>4>5>6>7>8>9>0>,;+ . 5 at D@;#}$a>b>c>d>e>f>g>h>i>j>s;+=+ . k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>5$+ ",
+". ;#z>A>B>C>D>E>F>G>H>H>I>J>K>L>M>+ . D@;#}$N>O>P>Q>R>S>T>U>V>W>X>s;+=+ . Y>Z>`> ,.,+,@,#,$,%,&,*,=,-,;,g$+ ",
+". ;#}$;#>,,,',),!,~,{,],^,/,(,_,:,+ . ;#}$<,[,},|,1,2,3,`=4,5,6,7,j>+=+ . 8,9,0,.,a,b,c,d,e,f,g,h,i,j,k,[#+ ",
+". }$;#l,m,n,o,p,q,r,s,t,u,v,w,x,y,+ . z,A,B,C,D,E,[={;5-F,H-}=G,7,j>+=+ . }$H,I,J,K,L,M,N,h,O,P,Q,R,S,[#l#+ ",
+". ;#T,U,V,W,X,Y,Z,`, '.'+'@'#'$'l=+ . %'&'*'='-';'{;G-F,`=s=>'6-7,j>+=+ . e A$,''')'!'~'{']'^'/'('_'[#l#S#+ ",
+". :'<'['!.P*8#|-}'|'1'2'3'4'5'6':$+ . 7'8'9'0'.=F-{;{;5-`=|=>'r;7,j>+=+ . A$7 G a'b'c'd'e'f'g'h'i'[#l#S#:$+ ",
+". j'k'!.P*8#`-|-|-l'm'n'o'p'l=:$h$+ . 7 G !.P*+=+=+=+=+=+=+=+=+=+=+=+=+ . 7 G !.P*8#`-|-L;_>5$g$[#l#S#:$h$+ ",
+"+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "};
diff --git a/icons/audio.xpm b/icons/audio.xpm
new file mode 100644
index 0000000..638b921
--- /dev/null
+++ b/icons/audio.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * audio_xpm[] = {
+"18 18 11 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #D5D6D5",
+"#	c #090909",
+"$	c #E609EA",
+"%	c #850589",
+"&	c #2F2F2F",
+"*	c #BDBEBD",
+"=	c #8E8E8E",
+"-	c #A6A7A6",
+".................+",
+".@@@@@@@@#@@@@@@@+",
+".$$$$$$$#%#$$$$$$+",
+".@@@@@@@#@#@@@@@@+",
+".@@@@@@@#@#@@@@@@+",
+".$$$$$$$#%#$$$$$$+",
+".@@@@@@@#&*@@@@@@+",
+".@@@@@@=#*@@@@@@@+",
+".$$$$$%##%$$$$$$$+",
+".@@@@@#-###=@@@@@+",
+".@@@@@#@#@@#@@@@@+",
+".$$$$$#%#%$#$$$$$+",
+".@@@@@#=#==#@@@@@+",
+".@@@@@@####@@@@@@+",
+".$$$$$$$%#%$$$$$$+",
+".@@@@@@###@@@@@@@+",
+".@@@@@@##=@@@@@@@+",
+"++++++++++++++++++"};
diff --git a/icons/blankbutton.xpm b/icons/blankbutton.xpm
new file mode 100644
index 0000000..cac8490
--- /dev/null
+++ b/icons/blankbutton.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * blankbutton_xpm[] = {
+"18 18 4 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #D5D6D5",
+".................+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+"++++++++++++++++++"};
diff --git a/icons/buttons2.xpm b/icons/buttons2.xpm
new file mode 100644
index 0000000..ddb5f12
--- /dev/null
+++ b/icons/buttons2.xpm
@@ -0,0 +1,854 @@
+/* XPM */
+static char * buttons_xpm[] = {
+"54 54 797 2",
+"  	c None",
+". 	c #FFFFFF",
+"+ 	c #AEAAAE",
+"@ 	c #000000",
+"# 	c #EDEDED",
+"$ 	c #E7E7E8",
+"% 	c #DCDCDE",
+"& 	c #D0D1D5",
+"* 	c #878D9B",
+"= 	c #858E9F",
+"- 	c #808793",
+"; 	c #7A869E",
+"> 	c #8C94A1",
+", 	c #A2A5AD",
+"' 	c #C6C6C9",
+") 	c #C2C2C5",
+"! 	c #FCFCFC",
+"~ 	c #F9F9F9",
+"{ 	c #F4F4F4",
+"] 	c #EFEFEF",
+"^ 	c #EAEAEA",
+"/ 	c #E6E6E6",
+"( 	c #E1E1E1",
+"_ 	c #DCDCDC",
+": 	c #D7D7D7",
+"< 	c #D3D3D3",
+"[ 	c #CFCFCF",
+"} 	c #CACACA",
+"| 	c #C5C5C5",
+"1 	c #C0C0C0",
+"2 	c #BCBCBC",
+"3 	c #B7B7B7",
+"4 	c #6F706F",
+"5 	c #686868",
+"6 	c #C5C7CF",
+"7 	c #717E92",
+"8 	c #889CA3",
+"9 	c #CFE3D8",
+"0 	c #D1E6D5",
+"a 	c #D1E7D4",
+"b 	c #D6EFD3",
+"c 	c #D8F0D3",
+"d 	c #B6C9C3",
+"e 	c #B8C1BE",
+"f 	c #ABAEB8",
+"g 	c #BCBCC0",
+"h 	c #EFEEEE",
+"i 	c #F6F6F4",
+"j 	c #F6F7F3",
+"k 	c #F3F4EE",
+"l 	c #E2E3DF",
+"m 	c #C5C5BE",
+"n 	c #B3B2A9",
+"o 	c #9F9F94",
+"p 	c #868685",
+"q 	c #6E706A",
+"r 	c #949685",
+"s 	c #B2B2B2",
+"t 	c #514E5A",
+"u 	c #1A1729",
+"v 	c #201A30",
+"w 	c #23203B",
+"x 	c #232039",
+"y 	c #211E37",
+"z 	c #616161",
+"A 	c #6E6E6E",
+"B 	c #C4C7D0",
+"C 	c #76899C",
+"D 	c #ADD1B9",
+"E 	c #CCFBB9",
+"F 	c #C5F1B5",
+"G 	c #B3D5AF",
+"H 	c #BAE1AB",
+"I 	c #C5F6A7",
+"J 	c #C3F4A2",
+"K 	c #BFF09E",
+"L 	c #AAD39E",
+"M 	c #86A197",
+"N 	c #B6B6BA",
+"O 	c #B4B3B6",
+"P 	c #898297",
+"Q 	c #554A75",
+"R 	c #40365E",
+"S 	c #241A4B",
+"T 	c #170B46",
+"U 	c #12093E",
+"V 	c #0E0737",
+"W 	c #0A0530",
+"X 	c #060429",
+"Y 	c #030325",
+"Z 	c #00031F",
+"` 	c #A1A2A0",
+" .	c #575747",
+"..	c #ADADAD",
+"+.	c #5B566C",
+"@.	c #353056",
+"#.	c #423968",
+"$.	c #48416C",
+"%.	c #484066",
+"&.	c #413969",
+"*.	c #546586",
+"=.	c #90C39C",
+"-.	c #E2FF9C",
+";.	c #93B38F",
+">.	c #79899E",
+",.	c #7585AA",
+"'.	c #96BA9B",
+").	c #B2EC86",
+"!.	c #B0EB7F",
+"~.	c #ACE777",
+"{.	c #A9E571",
+"].	c #A5DF6F",
+"^.	c #1C3078",
+"/.	c #B2B2B6",
+"(.	c #ACACB1",
+"_.	c #B2B2B3",
+":.	c #4D436A",
+"<.	c #160350",
+"[.	c #13034B",
+"}.	c #110346",
+"|.	c #0F0340",
+"1.	c #0C033A",
+"2.	c #0A0335",
+"3.	c #07032F",
+"4.	c #05032A",
+"5.	c #A3A4A3",
+"6.	c #5C5C4D",
+"7.	c #A8A8A8",
+"8.	c #615C75",
+"9.	c #423A61",
+"0.	c #4F4D70",
+"a.	c #594E85",
+"b.	c #493F66",
+"c.	c #BEC3CF",
+"d.	c #3E6C75",
+"e.	c #98D080",
+"f.	c #5D6C8D",
+"g.	c #6174A4",
+"h.	c #5F73AC",
+"i.	c #6985A2",
+"j.	c #9ADA69",
+"k.	c #9CE05B",
+"l.	c #9ADC58",
+"m.	c #98DA58",
+"n.	c #96D758",
+"o.	c #95D358",
+"p.	c #296B42",
+"q.	c #6E7A9B",
+"r.	c #B1B0B1",
+"s.	c #4E436A",
+"t.	c #070330",
+"u.	c #A4A5A3",
+"v.	c #61614F",
+"w.	c #3B3B2E",
+"x.	c #635C75",
+"y.	c #3D3660",
+"z.	c #494169",
+"A.	c #4B4669",
+"B.	c #4F4A6A",
+"C.	c #8D8F8D",
+"D.	c #878787",
+"E.	c #A4A4A4",
+"F.	c #63778E",
+"G.	c #5EA750",
+"H.	c #638F72",
+"I.	c #4D659F",
+"J.	c #4B61A2",
+"K.	c #5B7E8A",
+"L.	c #87CD4C",
+"M.	c #8BD442",
+"N.	c #89D142",
+"O.	c #88CD42",
+"P.	c #87CA42",
+"Q.	c #84C742",
+"R.	c #83C342",
+"S.	c #74DD00",
+"T.	c #0B2668",
+"U.	c #A6A6AC",
+"V.	c #AEAEAF",
+"W.	c #4D4269",
+"X.	c #261459",
+"Y.	c #281C4E",
+"Z.	c #2A1E4E",
+"`.	c #150945",
+" +	c #0C033B",
+".+	c #0A0336",
+"++	c #A7A7A5",
+"@+	c #6A6B59",
+"#+	c #454632",
+"$+	c #5D5871",
+"%+	c #333158",
+"&+	c #3D3460",
+"*+	c #423E65",
+"=+	c #515171",
+"-+	c #9D9E9D",
+";+	c #626262",
+">+	c #8A8A8A",
+",+	c #2B4B70",
+"'+	c #56A62B",
+")+	c #396362",
+"!+	c #3C598C",
+"~+	c #354C99",
+"{+	c #507D6E",
+"]+	c #76BF33",
+"^+	c #78C32D",
+"/+	c #77C02D",
+"(+	c #74BC2D",
+"_+	c #73B82D",
+":+	c #71B42D",
+"<+	c #6BAE28",
+"[+	c #5EB800",
+"}+	c #002F32",
+"|+	c #ACADB5",
+"1+	c #ADACAE",
+"2+	c #52476D",
+"3+	c #38314A",
+"4+	c #0A0809",
+"5+	c #181618",
+"6+	c #362F50",
+"7+	c #0F053D",
+"8+	c #000320",
+"9+	c #ABACAB",
+"0+	c #757764",
+"a+	c #565842",
+"b+	c #28233D",
+"c+	c #2E2749",
+"d+	c #373051",
+"e+	c #393561",
+"f+	c #393259",
+"g+	c #352C52",
+"h+	c #1F4B59",
+"i+	c #60C004",
+"j+	c #5EB70D",
+"k+	c #4C8A39",
+"l+	c #2A4C7E",
+"m+	c #264386",
+"n+	c #417257",
+"o+	c #4F8A3D",
+"p+	c #62AC17",
+"q+	c #5FA717",
+"r+	c #5DA317",
+"s+	c #599C18",
+"t+	c #4A881A",
+"u+	c #488C00",
+"v+	c #0F4D20",
+"w+	c #848FAC",
+"x+	c #5A5072",
+"y+	c #5F5A67",
+"z+	c #676149",
+"A+	c #777570",
+"B+	c #25232F",
+"C+	c #170E43",
+"D+	c #05032B",
+"E+	c #030326",
+"F+	c #B0B0AF",
+"G+	c #7E826D",
+"H+	c #666751",
+"I+	c #959497",
+"J+	c #ACABAE",
+"K+	c #737473",
+"L+	c #302A4F",
+"M+	c #3F3C64",
+"N+	c #4B4274",
+"O+	c #4F4876",
+"P+	c #3F3C69",
+"Q+	c #0A3455",
+"R+	c #5CB800",
+"S+	c #58B100",
+"T+	c #6BD600",
+"U+	c #2D5E1B",
+"V+	c #1A3884",
+"W+	c #1D3A85",
+"X+	c #234573",
+"Y+	c #4D9502",
+"Z+	c #4B9203",
+"`+	c #478D01",
+" @	c #38770F",
+".@	c #1D454C",
+"+@	c #1F4B5B",
+"@@	c #000E78",
+"#@	c #8692B2",
+"$@	c #AAABAB",
+"%@	c #645C7A",
+"&@	c #776349",
+"*@	c #E5C319",
+"=@	c #A78F32",
+"-@	c #27232C",
+";@	c #1E1448",
+">@	c #080330",
+",@	c #010320",
+"'@	c #B2B3B2",
+")@	c #888A75",
+"!@	c #6D6F59",
+"~@	c #393052",
+"{@	c #494261",
+"]@	c #52497A",
+"^@	c #4F487A",
+"/@	c #4D4669",
+"(@	c #463E69",
+"_@	c #30517B",
+":@	c #54A800",
+"<@	c #52A700",
+"[@	c #1F3A7F",
+"}@	c #25408A",
+"|@	c #27428B",
+"1@	c #294782",
+"2@	c #468E00",
+"3@	c #428203",
+"4@	c #428600",
+"5@	c #23466B",
+"6@	c #224542",
+"7@	c #437E00",
+"8@	c #08083D",
+"9@	c #84848C",
+"0@	c #A7A7AA",
+"a@	c #6D677D",
+"b@	c #9A9798",
+"c@	c #DBD0B1",
+"d@	c #ECE9E0",
+"e@	c #353334",
+"f@	c #362F4E",
+"g@	c #0F073A",
+"h@	c #080331",
+"i@	c #BBBCBB",
+"j@	c #8B8E79",
+"k@	c #72735E",
+"l@	c #14D121",
+"m@	c #332C54",
+"n@	c #3D3A69",
+"o@	c #494266",
+"p@	c #494666",
+"q@	c #494363",
+"r@	c #3F3B66",
+"s@	c #979897",
+"t@	c #7185A6",
+"u@	c #3D7E21",
+"v@	c #3E7B1A",
+"w@	c #253E82",
+"x@	c #2C478F",
+"y@	c #304B90",
+"z@	c #334D92",
+"A@	c #344D92",
+"B@	c #335C3A",
+"C@	c #3B7800",
+"D@	c #315660",
+"E@	c #233D6F",
+"F@	c #264A37",
+"G@	c #316902",
+"H@	c #294489",
+"I@	c #A8A7A8",
+"J@	c #636264",
+"K@	c #D9D8D7",
+"L@	c #FAFAF8",
+"M@	c #8D8D8D",
+"N@	c #18171B",
+"O@	c #514D66",
+"P@	c #434058",
+"Q@	c #403E53",
+"R@	c #3D3C4F",
+"S@	c #3A3B4A",
+"T@	c #CACBC8",
+"U@	c #8A8D78",
+"V@	c #64665B",
+"W@	c #58576C",
+"X@	c #5C5874",
+"Y@	c #5E5576",
+"Z@	c #5C597A",
+"`@	c #5E5778",
+" #	c #5C5570",
+".#	c #646464",
+"+#	c #B7BAC1",
+"@#	c #325B60",
+"##	c #34623B",
+"$#	c #324B91",
+"%#	c #385194",
+"&#	c #3C5497",
+"*#	c #3F5698",
+"=#	c #405799",
+"-#	c #3F5699",
+";#	c #3B5496",
+">#	c #375095",
+",#	c #2D486C",
+"'#	c #2A4877",
+")#	c #224372",
+"!#	c #9F9EA1",
+"~#	c #7F7E7E",
+"{#	c #F9FAF8",
+"]#	c #FBFBF9",
+"^#	c #DEDFDD",
+"/#	c #131313",
+"(#	c #959695",
+"_#	c #F0EFEA",
+":#	c #ECECE7",
+"<#	c #E9E9E4",
+"[#	c #E7E7DE",
+"}#	c #DEDED3",
+"|#	c #858773",
+"1#	c #555551",
+"2#	c #6B6C6D",
+"3#	c #828282",
+"4#	c #C1C2C7",
+"5#	c #7789A4",
+"6#	c #375966",
+"7#	c #435A9A",
+"8#	c #485E9D",
+"9#	c #4B609F",
+"0#	c #4B619F",
+"a#	c #475E9C",
+"b#	c #42599A",
+"c#	c #3B5396",
+"d#	c #354E90",
+"e#	c #364F91",
+"f#	c #7A7A82",
+"g#	c #A7A293",
+"h#	c #F9F9F8",
+"i#	c #F8F8F6",
+"j#	c #F0EEDF",
+"k#	c #1D1D19",
+"l#	c #5D5C58",
+"m#	c #C9C9BE",
+"n#	c #C7C7BD",
+"o#	c #939388",
+"p#	c #929484",
+"q#	c #9A9A8B",
+"r#	c #595953",
+"s#	c #515161",
+"t#	c #B1B0B4",
+"u#	c #B1AFB4",
+"v#	c #858587",
+"w#	c #6B6A6B",
+"x#	c #757475",
+"y#	c #787678",
+"z#	c #7C7A7C",
+"A#	c #C0C0C4",
+"B#	c #8694BA",
+"C#	c #0D2A87",
+"D#	c #4F6795",
+"E#	c #456952",
+"F#	c #586BA6",
+"G#	c #5E6DBC",
+"H#	c #5F6DC0",
+"I#	c #5966CC",
+"J#	c #5B6EA8",
+"K#	c #3A5195",
+"L#	c #3A5293",
+"M#	c #C7C1B4",
+"N#	c #ECC635",
+"O#	c #C4A420",
+"P#	c #AFADA8",
+"Q#	c #F9F9F6",
+"R#	c #F9F9F7",
+"S#	c #E6CD79",
+"T#	c #7C5B09",
+"U#	c #AB922F",
+"V#	c #343326",
+"W#	c #1E1E14",
+"X#	c #313125",
+"Y#	c #504F4F",
+"Z#	c #CDBC6E",
+"`#	c #AE6E22",
+" $	c #6B6A6C",
+".$	c #595959",
+"+$	c #BFC7E0",
+"@$	c #5369A2",
+"#$	c #234C37",
+"$$	c #30600E",
+"%$	c #336407",
+"&$	c #235A00",
+"*$	c #406736",
+"=$	c #1F397E",
+"-$	c #6C7EAF",
+";$	c #6D6D76",
+">$	c #DBC475",
+",$	c #F5CC10",
+"'$	c #F4CA10",
+")$	c #C1AC62",
+"!$	c #EEEEEC",
+"~$	c #C2C2C0",
+"{$	c #A07F2F",
+"]$	c #F5C80E",
+"^$	c #F3CB17",
+"/$	c #B0A263",
+"($	c #626254",
+"_$	c #595949",
+":$	c #747474",
+"<$	c #9B9B9D",
+"[$	c #6E6C6F",
+"}$	c #B7BFD7",
+"|$	c #8695BE",
+"1$	c #7484B4",
+"2$	c #929EC4",
+"3$	c #8997BF",
+"4$	c #A4A5AF",
+"5$	c #9A9693",
+"6$	c #B9A478",
+"7$	c #CBA133",
+"8$	c #967432",
+"9$	c #6F6D6D",
+"0$	c #6F6B6D",
+"a$	c #957642",
+"b$	c #C59D35",
+"c$	c #8D8D86",
+"d$	c #8C8C8C",
+"e$	c #7D7D7D",
+"f$	c #797979",
+"g$	c #6F6F6F",
+"h$	c #9F9F9F",
+"i$	c #696869",
+"j$	c #F8F8F8",
+"k$	c #F3F3F3",
+"l$	c #EEEEEE",
+"m$	c #E9E9E9",
+"n$	c #090909",
+"o$	c #D5D6D5",
+"p$	c #CCCCCC",
+"q$	c #C6C6C6",
+"r$	c #C1C1C1",
+"s$	c #DD0D8A",
+"t$	c #0909EF",
+"u$	c #E4E4E4",
+"v$	c #DFDFDF",
+"w$	c #DADADA",
+"x$	c #D1D1D1",
+"y$	c #A56721",
+"z$	c #A3A3A3",
+"A$	c #AFB505",
+"B$	c #F79B31",
+"C$	c #9E9E9E",
+"D$	c #EFF707",
+"E$	c #0D8214",
+"F$	c #989898",
+"G$	c #9A9A9A",
+"H$	c #939393",
+"I$	c #959595",
+"J$	c #8E8E8E",
+"K$	c #919191",
+"L$	c #050591",
+"M$	c #898989",
+"N$	c #848484",
+"O$	c #7F7F7F",
+"P$	c #7A7A7A",
+"Q$	c #757575",
+"R$	c #F4C844",
+"S$	c #707070",
+"T$	c #6B6B6B",
+"U$	c #676767",
+"V$	c #E8E5E0",
+"W$	c #E7E2C7",
+"X$	c #D9D499",
+"Y$	c #E4D08D",
+"Z$	c #EABE8D",
+"`$	c #E3B26B",
+" %	c #E3B982",
+".%	c #BDA385",
+"+%	c #EDE1C3",
+"@%	c #ECC48A",
+"#%	c #F69854",
+"$%	c #F78E42",
+"%%	c #EB9D54",
+"&%	c #FFC280",
+"*%	c #DA776F",
+"=%	c #EA3166",
+"-%	c #DE2F66",
+";%	c #D57F6A",
+">%	c #BBA97D",
+",%	c #95939B",
+"'%	c #E609EA",
+")%	c #850589",
+"!%	c #EED392",
+"~%	c #FFCF86",
+"{%	c #FBBB57",
+"]%	c #E92F00",
+"^%	c #EB2F00",
+"/%	c #D85025",
+"(%	c #F3B366",
+"_%	c #E6466F",
+":%	c #FF0061",
+"<%	c #DD7075",
+"[%	c #D6B275",
+"}%	c #B89A77",
+"|%	c #88888E",
+"1%	c #ECECEC",
+"2%	c #FEFEFE",
+"3%	c #F1DCB7",
+"4%	c #FDCF86",
+"5%	c #FFCF72",
+"6%	c #F8BB57",
+"7%	c #D02F00",
+"8%	c #DF2F00",
+"9%	c #EF4310",
+"0%	c #F6B661",
+"a%	c #E44D6C",
+"b%	c #F00877",
+"c%	c #F80677",
+"d%	c #DD7179",
+"e%	c #CEA764",
+"f%	c #CE9B60",
+"g%	c #FDFDFD",
+"h%	c #9B9B9B",
+"i%	c #F3D269",
+"j%	c #F8D334",
+"k%	c #FFDC45",
+"l%	c #FAC75D",
+"m%	c #DF7D3B",
+"n%	c #E97A2A",
+"o%	c #E7843C",
+"p%	c #EDBD61",
+"q%	c #E3947A",
+"r%	c #DE6C79",
+"s%	c #DB3686",
+"t%	c #CE7E9D",
+"u%	c #CE8BA6",
+"v%	c #CE8188",
+"w%	c #996D74",
+"x%	c #7F7D85",
+"y%	c #4F4F4F",
+"z%	c #C4C4C4",
+"A%	c #727272",
+"B%	c #F6F6F6",
+"C%	c #FFEB19",
+"D%	c #FFFF00",
+"E%	c #FFF709",
+"F%	c #F2D135",
+"G%	c #E5C26F",
+"H%	c #D3CE77",
+"I%	c #D1B165",
+"J%	c #CFB875",
+"K%	c #AF7C77",
+"L%	c #B1306F",
+"M%	c #961766",
+"N%	c #9D36B5",
+"O%	c #9F09D6",
+"P%	c #A406CC",
+"Q%	c #A55DB4",
+"R%	c #898A8F",
+"S%	c #ACACAC",
+"T%	c #B0B0B1",
+"U%	c #434343",
+"V%	c #2F2F2F",
+"W%	c #BDBEBD",
+"X%	c #FBEF0C",
+"Y%	c #FFF70C",
+"Z%	c #DFD148",
+"`%	c #DDC063",
+" &	c #D0C261",
+".&	c #D5B46A",
+"+&	c #907059",
+"@&	c #421B10",
+"#&	c #7B0947",
+"$&	c #7C0642",
+"%&	c #B43ED9",
+"&&	c #A90BFD",
+"*&	c #B853C8",
+"=&	c #9F7258",
+"-&	c #999999",
+";&	c #F0F0F0",
+">&	c #6C6C6D",
+",&	c #FAD739",
+"'&	c #F3ED24",
+")&	c #F8E533",
+"!&	c #D8C763",
+"~&	c #EBA76F",
+"{&	c #D1C260",
+"]&	c #C7A65C",
+"^&	c #311F0F",
+"/&	c #0C0000",
+"(&	c #390012",
+"_&	c #5F1B24",
+":&	c #AA36BA",
+"<&	c #9B0BD5",
+"[&	c #9D0BD9",
+"}&	c #A4569D",
+"|&	c #7E7E7E",
+"1&	c #D9D9D9",
+"2&	c #EAC46F",
+"3&	c #F0CB6C",
+"4&	c #D8B36A",
+"5&	c #D1BD6E",
+"6&	c #D3B375",
+"7&	c #CBB260",
+"8&	c #B28866",
+"9&	c #0C0706",
+"0&	c #020206",
+"a&	c #2B1010",
+"b&	c #5E3D1F",
+"c&	c #CB8B8D",
+"d&	c #B78394",
+"e&	c #C27794",
+"f&	c #B0747D",
+"g&	c #A8A9AF",
+"h&	c #A6A7A6",
+"i&	c #E5C895",
+"j&	c #DCAF6C",
+"k&	c #D8C065",
+"l&	c #CEBF61",
+"m&	c #C5B677",
+"n&	c #ACA385",
+"o&	c #9E9899",
+"p&	c #434340",
+"q&	c #3F3D1C",
+"r&	c #744232",
+"s&	c #BA7D50",
+"t&	c #9B7687",
+"u&	c #313FDB",
+"v&	c #1E3DF1",
+"w&	c #494FBA",
+"x&	c #9E9BA5",
+"y&	c #D4D4D4",
+"z&	c #D3BB6C",
+"A&	c #CFB869",
+"B&	c #D0BB6C",
+"C&	c #B1A5A1",
+"D&	c #8A94A5",
+"E&	c #2D3945",
+"F&	c #444823",
+"G&	c #A17741",
+"H&	c #CF9A61",
+"I&	c #887F9F",
+"J&	c #0B2FFD",
+"K&	c #002FFD",
+"L&	c #324AD8",
+"M&	c #9C725C",
+"N&	c #3F4046",
+"O&	c #C6A47F",
+"P&	c #A69F87",
+"Q&	c #3A364D",
+"R&	c #525141",
+"S&	c #A67E41",
+"T&	c #C88B53",
+"U&	c #CF9061",
+"V&	c #C88761",
+"W&	c #897F90",
+"X&	c #0F2FF3",
+"Y&	c #082FF7",
+"Z&	c #4047D8",
+"`&	c #81645A",
+" *	c #CECECE",
+".*	c #B27F5B",
+"+*	c #D4A77A",
+"@*	c #8C6636",
+"#*	c #72491F",
+"$*	c #9D7A45",
+"%*	c #CC9A61",
+"&*	c #CF9361",
+"**	c #C99061",
+"=*	c #A97E5C",
+"-*	c #906D5F",
+";*	c #808185",
+">*	c #8F7885",
+",*	c #A16773",
+"'*	c #6D4C42",
+")*	c #DDDDDD",
+"!*	c #F2F2F2",
+"~*	c #99714C",
+"{*	c #DBA97B",
+"]*	c #7B5029",
+"^*	c #767361",
+"/*	c #BBA07C",
+"(*	c #CA9E68",
+"_*	c #CA9561",
+":*	c #CF8761",
+"<*	c #B3805C",
+"[*	c #322841",
+"}*	c #413759",
+"|*	c #8D7963",
+"1*	c #A7735A",
+"2*	c #A26453",
+"3*	c #E0E0E0",
+"4*	c #D2D2D2",
+"5*	c #937257",
+"6*	c #DBAA7B",
+"7*	c #714D25",
+"8*	c #C69D70",
+"9*	c #BE8D61",
+"0*	c #A77F54",
+"a*	c #443251",
+"b*	c #606492",
+"c*	c #A39EA3",
+"d*	c #A46959",
+"e*	c #96734D",
+"f*	c #636364",
+"g*	c #737373",
+"h*	c #BEBEBE",
+"i*	c #979797",
+"j*	c #AFAFAF",
+"k*	c #D5A96D",
+"l*	c #775529",
+"m*	c #A17E63",
+"n*	c #AC825F",
+"o*	c #936958",
+"p*	c #AC97A9",
+"q*	c #C9B4B3",
+"r*	c #737375",
+"s*	c #B5B5B7",
+"t*	c #B7B7B9",
+"u*	c #616163",
+"v*	c #0B0B0B",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ ",
+"# $ $ % & % * = - ; > , ' ' ) ) ) @ . ! ~ { ] ^ / ( _ : < [ } | 1 2 3 @ . 4 4 4 4 4 4 4 4 5 < [ } | 1 2 3 @ ",
+"# $ % 6 7 8 9 0 a b c d e f g g g @ . ~ { h i j k l : m n o p q r 3 s @ . 4 t u v w x y 4 z A } | 1 2 3 s @ ",
+"# % B C D E F G H I J K L M N N N @ . { O P Q R S T U V W X Y Z `  ...@ . 4 +. at .#.$.%.&.4 z A | 1 2 3 s ..@ ",
+"# % *.=.-.;.>.,.'.).!.~.{.].^./.(.@ . ] _.:.<.[.}.|.1.2.3.4.Y Z 5.6.7.@ . 4 8.9.0.a.0.b.4 z A 1 2 3 s ..7.@ ",
+"# c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.(.@ . ^ r.s.<.[.}.|.1.2.t.4.Y Z u.v.w.@ . 4 x.y.z.A.B.a.4 C.D.2 3 s ..7.E.@ ",
+"# F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.@ . / V.W.X.Y.Z.`. +.+t.4.Y Z ++ at +#+@ . 4 $+%+&+*+=+-+-+-+-+-+-+-+-+;+>+@ ",
+"# ,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+@ . ( 1+2+3+4+5+6+7+.+t.4.Y 8+9+0+a+@ . 4 4 4 4 4 4 -+b+c+d+e+f+g+-+z A @ ",
+"# h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+@ . _ 1+x+y+z+A+B+C+.+t.D+E+8+F+G+H+@ . _ : I+J+4 K+-+L+M+N+O+z.P+-+z A @ ",
+"# Q+R+S+T+U+V+W+X+Y+Z+`+ @. at +@@@#@@ . : $@%@&@*@=@-@;@.+>@D+E+,@'@)@!@@ . -+-+-+-+-+-+-+~@{@]@^@/@(@-+z A @ ",
+"# _@:@:@<@[@}@|@1 at 2@3 at 4@5 at 6@7 at 8@9@@ . < 0 at a@b at c@d at e@f at g@h at D+E+, at i@j at k@@ . -+l at -+-+-+-+-+m@n at o@p at q@r at -+z s@@ ",
+"# t at u@v at w@x at y@z at A@B at C@D at E@F at G@H at 9@@ . [ I at J@K at L@i M at N@O at P@Q at R@S at T@U at V@@ . -+-+-+-+-+-+-+W at X@Y at Z@`@ #-+.#D.@ ",
+"# +#@###$#%#&#*#=#-#;#>#,#'#)#9 at 9@@ . } !#~#{#]#]#^#/#(#_#:#<#[#}#|#1#@ . } | 1 2#3 s -+-+-+-+-+-+-+-+-+3#@ ",
+"# 4#5#6#&#7#8#9#0#9#a#b#c#d#e#f#f#@ . | 1 g#h#i#L at j#k#l#m#n#o#p#q#r#s#@ . | 1 2 2#s ..7.E.t#u#v#w#x#y#z#5 @ ",
+"# ) A#B#C#D#E#F#G#H#I#J#K#L#f#f#f#@ . M#N#O#P#Q#R#S#T#U#V#W#X#Y#s#s#s#@ . 1 2 Z#`#Z#7.-+-+-+-+-+-+-+-+ $.$@ ",
+"# ) g N +$@$#$$$%$&$*$=$-$f#f#f#;$@ . >$,$'$)$!$~${$]$^$/$($_$s#s#s#:$@ . 2#2#`#`#`#2#-+l at -+-+-+-+-+<$[$.$@ ",
+"# ) g N (.(.}$|$1$2$3$4$9 at f#f#;$;$@ . 5$6$7$8$9$0$a$b$c$d$D.3#e$f$:$g$@ . 3 s Z#`#Z#h$-+-+-+-+-+-+-+-+i$g$@ ",
+"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ",
+". . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . @ ",
+". ! ~ { ] ^ / ( _ : < [ } | 1 2 3 @ . ! j$k$l$m$n$o$o$o$n$p$q$r$2 3 s @ . ! ~ { ] ^ / ( _ : < [ } | s$s$3 @ ",
+". t$t$t$^ t$t$t$t$< t$t$t$1 2 3 s @ . j$k$l$m$u$n$n$n$n$n$n$r$2 3 s ..@ . ~ { ] ^ / ( _ : < [ } | s$s$s$s$@ ",
+". { t$t$/ ( t$t$< [ t$t$1 2 3 s ..@ . k$n$m$u$v$w$o$x$p$q$r$2 3 s ..7.@ . { ] ^ / ( _ : < [ } | @ @ s$s$s$@ ",
+". ] t$t$( _ t$t$[ } t$1 2 3 s ..7.@ . l$n$u$v$w$o$x$p$q$r$2 3 y$y$7.z$@ . ] ^ / ( _ : < [ } | @ @ A$@ s$7.@ ",
+". ^ t$t$_ t$t$t$} t$t$2 3 s ..7.E.@ . m$n$v$w$o$x$p$q$r$2 3 B$B$y$z$C$@ . ^ / ( _ : < [ } | A$D$@ @ @ 7.E.@ ",
+". / t$t$: t$[ t$| t$2 3 s ..7.E.h$@ . n$n$w$o$E$E$q$r$2 3 s B$B$y$C$F$@ . / ( _ : < [ } | A$D$D$D$@ 7.E.h$@ ",
+". ( _ t$t$t$} t$1 t$t$t$t$t$t$h$G$@ . n$n$o$l at l@E$r$2 3 s ..B$B$y$F$H$@ . ( _ : < [ } | A$D$D$D$A$7.E.h$G$@ ",
+". _ : t$t$} | t$t$3 s t$t$E.t$t$I$@ . n$n$x$l at l@E$2 3 s ..7.B$B$y$H$J$@ . _ : < [ } | A$D$D$D$A$7.E.h$G$I$@ ",
+". : < t$t$| 1 t$t$s ..t$t$h$t$t$K$@ . n$n$p$l at l@E$3 s L$L$z$B$B$y$J$M$@ . : < [ } | A$D$D$D$A$7.E.h$G$I$K$@ ",
+". < [ t$| 1 2 t$s ..t$t$h$G$t$t$d$@ . n$n$q$l at l@E$s t$t$L$C$B$B$y$M$N$@ . < [ } | A$D$D$D$A$7.E.h$G$I$K$d$@ ",
+". [ } | 1 2 3 s ..7.t$t$G$t$t$d$D.@ . p$n$r$l at l@E$..t$t$L$F$B$B$y$N$O$@ . [ } | A$D$D$D$A$7.E.h$G$I$K$d$D.@ ",
+". } | 1 2 3 s ..7.E.t$t$t$t$d$D.3#@ . q$n$2 l at l@E$7.t$t$L$H$B$B$y$O$P$@ . } | A$D$D$D$A$7.E.h$G$I$K$d$D.3#@ ",
+". | 1 2 3 s ..7.E.t$t$I$K$d$D.3#e$@ . r$n$3 l at l@E$z$t$t$L$J$B$B$y$P$Q$@ . | 1 R$D$D$A$7.E.h$G$I$K$d$D.3#e$@ ",
+". 1 2 3 s ..7.E.h$t$t$K$d$D.3#e$f$@ . 2 n$n$n$n$n$n$n$n$n$n$n$n$n$n$S$@ . 1 R$R$R$A$7.E.h$G$I$K$d$D.3#e$f$@ ",
+". 2 3 s ..7.E.h$t$t$t$t$D.3#e$f$:$@ . 3 s ..7.z$n$n$n$n$n$N$O$P$Q$S$T$@ . 2 R$R$..7.E.h$G$I$K$d$D.3#e$f$:$@ ",
+". 3 s ..7.E.h$G$I$K$d$D.3#e$f$:$g$@ . s ..7.z$C$F$H$J$M$N$O$P$Q$S$T$U$@ . @ s ..7.E.h$G$I$K$d$D.3#e$f$:$g$@ ",
+"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ",
+". . . . . . . . . . . . . . . . . @ . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . @ ",
+". ! ~ { ] V$W$X$Y$Z$`$ %.%| 1 2 3 @ . ! ~ { ] ^ / ( _ : < [ } | 1 2 3 @ . ! ~ { ] ^ / ( _ n$< [ } | 1 2 3 @ ",
+". ~ { +%@%#%$%%%&%*%=%-%;%>%2 3 s @ . ~ { ] ^ / ,%n$n$n$n$n$| 1 2 3 s @ . '%'%'%'%'%'%'%n$)%n$'%'%'%'%'%'%@ ",
+". { !%~%{%]%^%/%(%_%:%:%<%[%}%s ..@ . { ] ^ / |%n$1%2%. j$x$n$2 3 s ..@ . { ] ^ / ( _ : n$[ n$| 1 2 3 s ..@ ",
+". 3%4%5%6%7%8%9%0%a%b%c%d%e%f%}%7.@ . ] ^ / ( n$j$g%. . . . h%n$s ..7.@ . ] ^ / ( _ : < n$} n$1 2 3 s ..7.@ ",
+". i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%E.@ . ^ / ( x%n$: y%z%] A%M$B%n$..7.E.@ . '%'%'%'%'%'%'%n$)%n$'%'%'%'%'%'%@ ",
+". C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%}%@ . / R%n$n$S%T%n$I$v$n$U%. n$n$n$h$@ . / ( _ : < [ } n$V%W%3 s ..7.E.h$@ ",
+". X%D%Y%Z%`% &.&+&@&#&$&%&&&&&*&=&@ . ( n$] B%{ g%g%. . . . . -&;&>&n$@ . ( _ : < [ } J$n$W%3 s ..7.E.h$G$@ ",
+". ,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&=&@ . _ n$|&k$. g%g%. . . . . ! 1&d$n$@ . '%'%'%'%'%)%n$n$)%'%'%'%'%'%'%'%@ ",
+". 2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&=&@ . : g&n$M$k$g%g%. . . . . 2 n$n$K$@ . : < [ } | n$h&n$n$n$J$E.h$G$I$K$@ ",
+". i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&=&@ . < [ x&n$y&g%g%. . . . . n$I$K$d$@ . < [ } | 1 n$3 n$..7.n$h$G$I$K$d$@ ",
+". [ z&A&B&C&D&E&F&G&H&H&I&J&K&L&M&@ . [ } | n$y&g%g%. . . . . n$N&d$D.@ . '%'%'%'%'%n$)%n$)%'%n$'%'%'%'%'%@ ",
+". } | 1 O&P&Q&R&S&T&U&V&W&X&Y&Z&`&@ . } | 1 n$y&g%g%. . . . .  *n$D.3#@ . } | 1 2 3 n$J$n$J$J$n$I$K$d$D.3#@ ",
+". | 1 .*+*@*#*$*%*&***=*-*;*>*,*'*@ . | 1 2 n$)*g%!*# . . . } j$x$n$e$@ . | 1 2 3 s ..n$n$n$n$I$K$d$D.3#e$@ ",
+". 1 ~*{*]*^*/*(*_*:*<*[*}*|*1*2*}%@ . 1 2 n$K$! g%3 -&!*. 3*n$4*g%z%n$@ . '%'%'%'%'%'%'%)%n$)%'%'%'%'%'%'%@ ",
+". 5*6*7*..7.E.h$8*9*0*a*b*c*d*e*:$@ . 2 n$f*w$g%;&n$g*h*r$i*n$j*r$j*n$@ . 2 3 s ..7.E.n$n$n$K$d$D.3#e$f$:$@ ",
+". k*l*..7.E.h$G$I$m*n*o*p*q*}%:$g$@ . 3 n$r*s*t*n$n$n$n$n$n$3#n$n$u*g$@ . 3 s ..7.E.h$n$n$J$d$D.3#e$f$:$g$@ ",
+"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ v*n$n$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ "};
diff --git a/icons/edit.xpm b/icons/edit.xpm
new file mode 100644
index 0000000..55a0905
--- /dev/null
+++ b/icons/edit.xpm
@@ -0,0 +1,29 @@
+/* XPM */
+static char * edit_xpm[] = {
+"18 18 8 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #D5D6D5",
+"#	c #DD0D8A",
+"$	c #AFB505",
+"%	c #EFF707",
+"&	c #F4C844",
+".................+",
+".@@@@@@@@@@@@@##@+",
+".@@@@@@@@@@@@####+",
+".@@@@@@@@@@@++###+",
+".@@@@@@@@@@++$+#@+",
+".@@@@@@@@@$%+++@@+",
+".@@@@@@@@$%%%+@@@+",
+".@@@@@@@$%%%$@@@@+",
+".@@@@@@$%%%$@@@@@+",
+".@@@@@$%%%$@@@@@@+",
+".@@@@$%%%$@@@@@@@+",
+".@@@$%%%$@@@@@@@@+",
+".@@$%%%$@@@@@@@@@+",
+".@@&%%$@@@@@@@@@@+",
+".@&&&$@@@@@@@@@@@+",
+".@&&@@@@@@@@@@@@@+",
+".+@@@@@@@@@@@@@@@+",
+"++++++++++++++++++"};
diff --git a/icons/ftp.xpm b/icons/ftp.xpm
new file mode 100644
index 0000000..68aad12
--- /dev/null
+++ b/icons/ftp.xpm
@@ -0,0 +1,111 @@
+/* XPM */
+static char * ftp_xpm[] = {
+"18 18 90 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #6F706F",
+"#	c #686868",
+"$	c #D5D6D5",
+"%	c #514E5A",
+"&	c #1A1729",
+"*	c #201A30",
+"=	c #23203B",
+"-	c #232039",
+";	c #211E37",
+">	c #616161",
+",	c #6E6E6E",
+"'	c #5B566C",
+")	c #353056",
+"!	c #423968",
+"~	c #48416C",
+"{	c #484066",
+"]	c #413969",
+"^	c #615C75",
+"/	c #423A61",
+"(	c #4F4D70",
+"_	c #594E85",
+":	c #493F66",
+"<	c #635C75",
+"[	c #3D3660",
+"}	c #494169",
+"|	c #4B4669",
+"1	c #4F4A6A",
+"2	c #8D8F8D",
+"3	c #878787",
+"4	c #5D5871",
+"5	c #333158",
+"6	c #3D3460",
+"7	c #423E65",
+"8	c #515171",
+"9	c #9D9E9D",
+"0	c #626262",
+"a	c #8A8A8A",
+"b	c #28233D",
+"c	c #2E2749",
+"d	c #373051",
+"e	c #393561",
+"f	c #393259",
+"g	c #352C52",
+"h	c #959497",
+"i	c #ACABAE",
+"j	c #737473",
+"k	c #302A4F",
+"l	c #3F3C64",
+"m	c #4B4274",
+"n	c #4F4876",
+"o	c #3F3C69",
+"p	c #393052",
+"q	c #494261",
+"r	c #52497A",
+"s	c #4F487A",
+"t	c #4D4669",
+"u	c #463E69",
+"v	c #14D121",
+"w	c #332C54",
+"x	c #3D3A69",
+"y	c #494266",
+"z	c #494666",
+"A	c #494363",
+"B	c #3F3B66",
+"C	c #979897",
+"D	c #58576C",
+"E	c #5C5874",
+"F	c #5E5576",
+"G	c #5C597A",
+"H	c #5E5778",
+"I	c #5C5570",
+"J	c #646464",
+"K	c #6B6C6D",
+"L	c #B1B0B4",
+"M	c #B1AFB4",
+"N	c #858587",
+"O	c #6B6A6B",
+"P	c #757475",
+"Q	c #787678",
+"R	c #7C7A7C",
+"S	c #CDBC6E",
+"T	c #AE6E22",
+"U	c #6B6A6C",
+"V	c #595959",
+"W	c #9B9B9D",
+"X	c #6E6C6F",
+"Y	c #696869",
+".................+",
+".@@@@@@@@#$$$$$$$+",
+".@%&*=-;@>,$$$$$$+",
+".@')!~{]@>,$$$$$$+",
+".@^/(_(:@>,$$$$$$+",
+".@<[}|1_ at 23$$$$$$+",
+". at 45678999999990a+",
+".@@@@@@9bcdefg9>,+",
+".$$hi at j9klmn}o9>,+",
+".9999999pqrstu9>,+",
+".9v99999wxyzAB9>C+",
+".9999999DEFGHI9J$+",
+".$$$K$$999999999$+",
+".$$$K$$$$LMNOPQR#+",
+".$$STS$99999999UV+",
+".KKTTTK9v99999WXV+",
+".$$STS$99999999Y$+",
+"++++++++++++++++++"};
diff --git a/icons/graph.xpm b/icons/graph.xpm
new file mode 100644
index 0000000..a72ed0a
--- /dev/null
+++ b/icons/graph.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * graph_xpm[] = {
+"18 18 11 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #D5D6D5",
+"#	c #090909",
+"$	c #A56721",
+"%	c #F79B31",
+"&	c #0D8214",
+"*	c #14D121",
+"=	c #050591",
+"-	c #0909EF",
+".................+",
+".@@@@@#@@@#@@@@@@+",
+".@@@@@######@@@@@+",
+".@#@@@@@@@@@@@@@@+",
+".@#@@@@@@@@@@$$@@+",
+".@#@@@@@@@@@%%$@@+",
+".##@@&&@@@@@%%$@@+",
+".##@**&@@@@@%%$@@+",
+".##@**&@@@@@%%$@@+",
+".##@**&@@==@%%$@@+",
+".##@**&@--=@%%$@@+",
+".@#@**&@--=@%%$@@+",
+".@#@**&@--=@%%$@@+",
+".@#@**&@--=@%%$@@+",
+".@##############@+",
+".@@@@@#####@@@@@@+",
+".@@@@@@@@@@@@@@@@+",
+"++++++++++++++++++"};
diff --git a/icons/gv.xpm b/icons/gv.xpm
new file mode 100644
index 0000000..1240fdd
--- /dev/null
+++ b/icons/gv.xpm
@@ -0,0 +1,84 @@
+/* XPM */
+static char * gv_xpm[] = {
+"18 18 63 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #AEAAAE",
+"@	c #D5D6D5",
+"#	c #000000",
+"$	c #95939B",
+"%	c #090909",
+"&	c #88888E",
+"*	c #ECECEC",
+"=	c #FEFEFE",
+"-	c #F8F8F8",
+";	c #D1D1D1",
+">	c #FDFDFD",
+",	c #9B9B9B",
+"'	c #7F7D85",
+")	c #D7D7D7",
+"!	c #4F4F4F",
+"~	c #C4C4C4",
+"{	c #EFEFEF",
+"]	c #727272",
+"^	c #898989",
+"/	c #F6F6F6",
+"(	c #898A8F",
+"_	c #ACACAC",
+":	c #B0B0B1",
+"<	c #959595",
+"[	c #DFDFDF",
+"}	c #434343",
+"|	c #F4F4F4",
+"1	c #999999",
+"2	c #F0F0F0",
+"3	c #6C6C6D",
+"4	c #7E7E7E",
+"5	c #F3F3F3",
+"6	c #FCFCFC",
+"7	c #D9D9D9",
+"8	c #8C8C8C",
+"9	c #A8A9AF",
+"0	c #BCBCBC",
+"a	c #9E9BA5",
+"b	c #D4D4D4",
+"c	c #3F4046",
+"d	c #CECECE",
+"e	c #DDDDDD",
+"f	c #F2F2F2",
+"g	c #EDEDED",
+"h	c #CACACA",
+"i	c #919191",
+"j	c #B7B7B7",
+"k	c #E0E0E0",
+"l	c #D2D2D2",
+"m	c #636364",
+"n	c #DADADA",
+"o	c #737373",
+"p	c #BEBEBE",
+"q	c #C1C1C1",
+"r	c #979797",
+"s	c #AFAFAF",
+"t	c #737375",
+"u	c #B5B5B7",
+"v	c #B7B7B9",
+"w	c #616163",
+"x	c #0B0B0B",
+".................+",
+".@@@@@@@@@@@@@@@@#",
+".@@@@@$%%%%%@@@@@#",
+".@@@@&%*=.-;%@@@@#",
+".@@@@%->....,%@@@#",
+".@@@'%)!~{]^/%@@@#",
+".@(%%_:%<[%}.%%%@#",
+".@%{/|>>.....123%#",
+".@%45.>>.....678%#",
+". at 9%^5>>.....0%%@#",
+".@@a%b>>.....%@@@#",
+".@@@%b>>.....%c@@#",
+".@@@%b>>.....d%@@#",
+".@@@%e>fg...h-;%@#",
+".@@%i6>j1f.k%l>~%#",
+".@%mn>2%opqr%sqs%#",
+".@%tuv%%%%%%@%%w@#",
+"###x%%############"};
diff --git a/icons/netscape.xpm b/icons/netscape.xpm
new file mode 100644
index 0000000..17d339d
--- /dev/null
+++ b/icons/netscape.xpm
@@ -0,0 +1,135 @@
+/* XPM */
+static char * netscape_xpm[] = {
+"18 18 114 2",
+"  	c None",
+". 	c #FFFFFF",
+"+ 	c #000000",
+"@ 	c #000A0D",
+"# 	c #000F11",
+"$ 	c #001111",
+"% 	c #001113",
+"& 	c #001114",
+"* 	c #001112",
+"= 	c #000E10",
+"- 	c #00080A",
+"; 	c #001718",
+"> 	c #00171B",
+", 	c #00191D",
+"' 	c #001A1F",
+") 	c #001C1F",
+"! 	c #001C21",
+"~ 	c #001C20",
+"{ 	c #00191C",
+"] 	c #001D20",
+"^ 	c #001F23",
+"/ 	c #173337",
+"( 	c #F0F2F3",
+"_ 	c #001F26",
+": 	c #002129",
+"< 	c #24434A",
+"[ 	c #001F24",
+"} 	c #001F22",
+"| 	c #00181D",
+"1 	c #002128",
+"2 	c #00242B",
+"3 	c #00252C",
+"4 	c #1D4349",
+"5 	c #849A9F",
+"6 	c #002A32",
+"7 	c #002C34",
+"8 	c #002830",
+"9 	c #385A61",
+"0 	c #00272E",
+"a 	c #00242A",
+"b 	c #001E25",
+"c 	c #002B33",
+"d 	c #002D35",
+"e 	c #003038",
+"f 	c #003139",
+"g 	c #678186",
+"h 	c #00343C",
+"i 	c #002F37",
+"j 	c #00272F",
+"k 	c #00363E",
+"l 	c #00373F",
+"m 	c #003941",
+"n 	c #36666F",
+"o 	c #577D83",
+"p 	c #003C44",
+"q 	c #003841",
+"r 	c #003E47",
+"s 	c #004049",
+"t 	c #00414C",
+"u 	c #00444D",
+"v 	c #4D7B83",
+"w 	c #4D7A82",
+"x 	c #00444F",
+"y 	c #00424B",
+"z 	c #00414B",
+"A 	c #003F49",
+"B 	c #003840",
+"C 	c #004951",
+"D 	c #004A54",
+"E 	c #004C57",
+"F 	c #00505A",
+"G 	c #00515C",
+"H 	c #578C95",
+"I 	c #3E7982",
+"J 	c #004E57",
+"K 	c #004C56",
+"L 	c #004953",
+"M 	c #004851",
+"N 	c #00414E",
+"O 	c #00505B",
+"P 	c #005360",
+"Q 	c #005563",
+"R 	c #005964",
+"S 	c #005A69",
+"T 	c #005C69",
+"U 	c #72A5AF",
+"V 	c #2B7480",
+"W 	c #005864",
+"X 	c #005462",
+"Y 	c #00525F",
+"Z 	c #004F59",
+"` 	c #005C6A",
+" .	c #025D6A",
+"..	c #025F6F",
+"+.	c #066676",
+"@.	c #1F6875",
+"#.	c #09515B",
+"$.	c #034C56",
+"%.	c #054F59",
+"&.	c #90A4A7",
+"*.	c #026372",
+"=.	c #006170",
+"-.	c #025C6A",
+";.	c #005967",
+">.	c #0E535E",
+",.	c #0F4048",
+"'.	c #182E33",
+").	c #0E1315",
+"!.	c #0F1112",
+"~.	c #1A1D1D",
+"{.	c #152C30",
+"].	c #16454B",
+"^.	c #185C68",
+"/.	c #0F1315",
+". . . . . . . . . . . . . . . . . + ",
+". @ # # $ $ % & & & & * $ $ # = - + ",
+". ; > , ' ) ) ! ! ! ~ ) ) ' { > % + ",
+". ] ^ / ( ( _ : : : < ( ( ( [ } | + ",
+". 1 2 3 4 ( 5 6 7 7 8 9 ( 0 3 a b + ",
+". c d e f ( ( g h h h f ( f i 7 j + ",
+". h k l m ( n ( o p p q ( m l l e + ",
+". p r s t ( u v ( w x y ( z A r B + ",
+". x C D E ( F G H ( I J ( K L M N + ",
+". O P Q R ( S T T U ( V ( W X Y Z + ",
+". `  ...+.( @.#.$.%.&.( ( *.=.-.;.+ ",
+". >.,.'.).( !.+ + + + + + ~.{.].^.+ ",
+". + + + ( ( ( /.+ + + + + + + + + + ",
+". + + + + + + + + + + + + + + + + + ",
+". + + + + + + + + + + + + + + + + + ",
+". + + + + + + + + + + + + + + + + + ",
+". + + + + + + + + + + + + + + + + + ",
+"+ + + + + + + + + + + + + + + + + + "};
diff --git a/icons/paint.xpm b/icons/paint.xpm
new file mode 100644
index 0000000..265c6a3
--- /dev/null
+++ b/icons/paint.xpm
@@ -0,0 +1,232 @@
+/* XPM */
+static char * paint_xpm[] = {
+"18 18 211 2",
+"  	c None",
+". 	c #FFFFFF",
+"+ 	c #000000",
+"@ 	c #D5D6D5",
+"# 	c #E2D7C3",
+"$ 	c #E8E2C0",
+"% 	c #DAD499",
+"& 	c #E4D08D",
+"* 	c #EABE8D",
+"= 	c #E3B26B",
+"- 	c #E3B982",
+"; 	c #BDA385",
+"> 	c #EDE1C3",
+", 	c #EDC48A",
+"' 	c #F79854",
+") 	c #F88E42",
+"! 	c #EC9D54",
+"~ 	c #FFC280",
+"{ 	c #DA776F",
+"] 	c #EA3166",
+"^ 	c #DE2F66",
+"/ 	c #D67F6A",
+"( 	c #BBA97D",
+"_ 	c #EED392",
+": 	c #FFCF86",
+"< 	c #FCBB57",
+"[ 	c #EA2F00",
+"} 	c #EC2F00",
+"| 	c #D95025",
+"1 	c #F3B366",
+"2 	c #E6466F",
+"3 	c #FF0061",
+"4 	c #DE7075",
+"5 	c #D7B275",
+"6 	c #B89A77",
+"7 	c #F2DDB7",
+"8 	c #FDCF86",
+"9 	c #FFCF72",
+"0 	c #F9BB57",
+"a 	c #D02F00",
+"b 	c #E02F00",
+"c 	c #F04310",
+"d 	c #F6B661",
+"e 	c #E44D6C",
+"f 	c #F00877",
+"g 	c #F80677",
+"h 	c #DE7179",
+"i 	c #CEA764",
+"j 	c #CE9B60",
+"k 	c #F3D269",
+"l 	c #F8D334",
+"m 	c #FFDC45",
+"n 	c #FBC75D",
+"o 	c #E07D3B",
+"p 	c #EA7A2A",
+"q 	c #E8843C",
+"r 	c #EDBD61",
+"s 	c #E3947A",
+"t 	c #DE6C79",
+"u 	c #DB3686",
+"v 	c #CE7E9D",
+"w 	c #CE8BA6",
+"x 	c #CE8188",
+"y 	c #996D74",
+"z 	c #FFEB19",
+"A 	c #FFFF00",
+"B 	c #FFF709",
+"C 	c #F3D135",
+"D 	c #E6C26F",
+"E 	c #D3CE77",
+"F 	c #D1B165",
+"G 	c #CFB875",
+"H 	c #AF7C77",
+"I 	c #B1306F",
+"J 	c #961766",
+"K 	c #9D36B5",
+"L 	c #9F09D7",
+"M 	c #A406CC",
+"N 	c #A55DB4",
+"O 	c #FCF00C",
+"P 	c #FFF70C",
+"Q 	c #E0D148",
+"R 	c #DEC063",
+"S 	c #D0C261",
+"T 	c #D5B46A",
+"U 	c #907059",
+"V 	c #421B10",
+"W 	c #7B0947",
+"X 	c #7C0642",
+"Y 	c #B43EDA",
+"Z 	c #A90BFE",
+"` 	c #B853C8",
+" .	c #9F7258",
+"..	c #FAD739",
+"+.	c #F3ED24",
+"@.	c #F8E533",
+"#.	c #D9C763",
+"$.	c #ECA76F",
+"%.	c #D1C260",
+"&.	c #C7A65C",
+"*.	c #311F0F",
+"=.	c #0C0000",
+"-.	c #390012",
+";.	c #5F1B24",
+">.	c #AA36BA",
+",.	c #9B0BD6",
+"'.	c #9D0BDA",
+").	c #A4569D",
+"!.	c #EAC46F",
+"~.	c #F0CB6C",
+"{.	c #D8B36A",
+"].	c #D1BD6E",
+"^.	c #D3B375",
+"/.	c #CBB260",
+"(.	c #B28866",
+"_.	c #0C0706",
+":.	c #020206",
+"<.	c #2B1010",
+"[.	c #5E3D1F",
+"}.	c #CB8B8D",
+"|.	c #B78394",
+"1.	c #C27794",
+"2.	c #B0747D",
+"3.	c #E6C895",
+"4.	c #DCAF6C",
+"5.	c #D8C065",
+"6.	c #CEBF61",
+"7.	c #C5B677",
+"8.	c #ACA385",
+"9.	c #9E9899",
+"0.	c #434340",
+"a.	c #3F3D1C",
+"b.	c #744232",
+"c.	c #BA7D50",
+"d.	c #9B7687",
+"e.	c #313FDC",
+"f.	c #1E3DF2",
+"g.	c #494FBA",
+"h.	c #D3BB6C",
+"i.	c #CFB869",
+"j.	c #D0BB6C",
+"k.	c #B1A5A1",
+"l.	c #8A94A5",
+"m.	c #2D3945",
+"n.	c #444823",
+"o.	c #A17741",
+"p.	c #CF9A61",
+"q.	c #887F9F",
+"r.	c #0B2FFE",
+"s.	c #002FFE",
+"t.	c #324AD9",
+"u.	c #9C725C",
+"v.	c #C6A47F",
+"w.	c #A69F87",
+"x.	c #3A364D",
+"y.	c #525141",
+"z.	c #A67E41",
+"A.	c #C88B53",
+"B.	c #CF9061",
+"C.	c #C88761",
+"D.	c #897F90",
+"E.	c #0F2FF4",
+"F.	c #082FF8",
+"G.	c #4047D9",
+"H.	c #81645A",
+"I.	c #B27F5B",
+"J.	c #D4A77A",
+"K.	c #8C6636",
+"L.	c #72491F",
+"M.	c #9D7A45",
+"N.	c #CC9A61",
+"O.	c #CF9361",
+"P.	c #C99061",
+"Q.	c #A97E5C",
+"R.	c #906D5F",
+"S.	c #808185",
+"T.	c #8F7885",
+"U.	c #A16773",
+"V.	c #6D4C42",
+"W.	c #966B43",
+"X.	c #DBA97B",
+"Y.	c #7B5029",
+"Z.	c #767361",
+"`.	c #BBA07C",
+" +	c #CA9E68",
+".+	c #CA9561",
+"++	c #CF8761",
+"@+	c #B3805C",
+"#+	c #322841",
+"$+	c #413759",
+"%+	c #8D7963",
+"&+	c #A7735A",
+"*+	c #A26453",
+"=+	c #845B3A",
+"-+	c #DBAA7B",
+";+	c #714D25",
+">+	c #C69D70",
+",+	c #BE8D61",
+"'+	c #A77F54",
+")+	c #443251",
+"!+	c #606492",
+"~+	c #A39EA3",
+"{+	c #A46959",
+"]+	c #96734D",
+"^+	c #D6A96D",
+"/+	c #775529",
+"(+	c #A17E63",
+"_+	c #AC825F",
+":+	c #936958",
+"<+	c #AC97A9",
+"[+	c #C9B4B3",
+". . . . . . . . . . . . . . . . . + ",
+". @ @ @ @ # $ % & * = - ; @ @ @ @ + ",
+". @ @ > , ' ) ! ~ { ] ^ / ( @ @ @ + ",
+". @ _ : < [ } | 1 2 3 3 4 5 6 @ @ + ",
+". 7 8 9 0 a b c d e f g h i j 6 @ + ",
+". k l m n o p q r s t u v w x y @ + ",
+". z A B C D E F G H I J K L M N 6 + ",
+". O A P Q R S T U V W X Y Z Z `  .+ ",
+". ..+. at .#.$.%.&.*.=.-.;.>.,.'.). .+ ",
+". !.~.{.].^./.(._.:.<.[.}.|.1.2. .+ ",
+". 3.4.5.6.7.8.9.0.a.b.c.d.e.f.g. .+ ",
+". @ h.i.j.k.l.m.n.o.p.p.q.r.s.t.u.+ ",
+". @ @ @ v.w.x.y.z.A.B.C.D.E.F.G.H.+ ",
+". @ @ I.J.K.L.M.N.O.P.Q.R.S.T.U.V.+ ",
+". @ W.X.Y.Z.`. +.+++ at +#+$+%+&+*+6 + ",
+". =+-+;+@ @ @ @ >+,+'+)+!+~+{+]+@ + ",
+". ^+/+@ @ @ @ @ @ (+_+:+<+[+6 @ @ + ",
+"+ + + + + + + + + + + + + + + + + + "};
diff --git a/icons/wp.xpm b/icons/wp.xpm
new file mode 100644
index 0000000..08d9558
--- /dev/null
+++ b/icons/wp.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * wp_xpm[] = {
+"18 18 6 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #AEAAAE",
+"@	c #D5D6D5",
+"#	c #000000",
+"$	c #0909EF",
+".................+",
+".@@@@@@@@@@@@@@@@#",
+".$$$@$$$$@$$$@@@@#",
+".@$$@@$$@@$$@@@@@#",
+".@$$@@$$@@$@@@@@@#",
+".@$$@$$$@$$@@@@@@#",
+".@$$@$@$@$@@@@@@@#",
+".@@$$$@$@$$$$$$@@#",
+".@@$$@@$$@@$$@$$@#",
+".@@$$@@$$@@$$@$$@#",
+".@@$@@@$@@$$@@$$@#",
+".@@@@@@@@@$$@$$@@#",
+".@@@@@@@@@$$$$@@@#",
+".@@@@@@@@$$@@@@@@#",
+".@@@@@@@@$$@@@@@@#",
+".@@@@@@@$$$$@@@@@#",
+".@@@@@@@@@@@@@@@@#",
+"##################"};
diff --git a/icons/xterm.xpm b/icons/xterm.xpm
new file mode 100644
index 0000000..60e0b13
--- /dev/null
+++ b/icons/xterm.xpm
@@ -0,0 +1,202 @@
+/* XPM */
+static char * xterm_xpm[] = {
+"18 18 181 2",
+"  	c None",
+". 	c #FFFFFF",
+"+ 	c #AEAAAE",
+"@ 	c #D5D6D5",
+"# 	c #000000",
+"$ 	c #EFEEEE",
+"% 	c #F6F6F4",
+"& 	c #F6F7F3",
+"* 	c #F3F4EE",
+"= 	c #E8E9E1",
+"- 	c #D6D7CF",
+"; 	c #C5C5BE",
+"> 	c #B3B2A9",
+", 	c #9F9F94",
+"' 	c #868685",
+") 	c #6E706A",
+"! 	c #949685",
+"~ 	c #B4B3B6",
+"{ 	c #898297",
+"] 	c #554A75",
+"^ 	c #40365E",
+"/ 	c #241A4B",
+"( 	c #170B46",
+"_ 	c #12093E",
+": 	c #0E0737",
+"< 	c #0A0530",
+"[ 	c #060429",
+"} 	c #030325",
+"| 	c #00031F",
+"1 	c #A1A2A0",
+"2 	c #575747",
+"3 	c #B2B2B3",
+"4 	c #4D436A",
+"5 	c #160350",
+"6 	c #13034B",
+"7 	c #110346",
+"8 	c #0F0340",
+"9 	c #0C033A",
+"0 	c #0A0335",
+"a 	c #07032F",
+"b 	c #05032A",
+"c 	c #A3A4A3",
+"d 	c #5C5C4D",
+"e 	c #B1B0B1",
+"f 	c #4E436A",
+"g 	c #070330",
+"h 	c #A4A5A3",
+"i 	c #61614F",
+"j 	c #3B3B2E",
+"k 	c #AEAEAF",
+"l 	c #4D4269",
+"m 	c #261459",
+"n 	c #281C4E",
+"o 	c #2A1E4E",
+"p 	c #150945",
+"q 	c #0C033B",
+"r 	c #0A0336",
+"s 	c #A7A7A5",
+"t 	c #6A6B59",
+"u 	c #454632",
+"v 	c #ADACAE",
+"w 	c #52476D",
+"x 	c #38314A",
+"y 	c #0A0809",
+"z 	c #181618",
+"A 	c #362F50",
+"B 	c #0F053D",
+"C 	c #000320",
+"D 	c #ABACAB",
+"E 	c #757764",
+"F 	c #565842",
+"G 	c #5A5072",
+"H 	c #5F5A67",
+"I 	c #676149",
+"J 	c #777570",
+"K 	c #25232F",
+"L 	c #170E43",
+"M 	c #05032B",
+"N 	c #030326",
+"O 	c #B0B0AF",
+"P 	c #7E826D",
+"Q 	c #666751",
+"R 	c #AAABAB",
+"S 	c #645C7A",
+"T 	c #776349",
+"U 	c #E5C319",
+"V 	c #A78F32",
+"W 	c #27232C",
+"X 	c #1E1448",
+"Y 	c #080330",
+"Z 	c #010320",
+"` 	c #B2B3B2",
+" .	c #888A75",
+"..	c #6D6F59",
+"+.	c #A7A7AA",
+"@.	c #6D677D",
+"#.	c #9A9798",
+"$.	c #DBD0B1",
+"%.	c #ECE9E0",
+"&.	c #353334",
+"*.	c #362F4E",
+"=.	c #0F073A",
+"-.	c #080331",
+";.	c #BBBCBB",
+">.	c #8B8E79",
+",.	c #72735E",
+"'.	c #A8A7A8",
+").	c #636264",
+"!.	c #D9D8D7",
+"~.	c #FAFAF8",
+"{.	c #8D8D8D",
+"].	c #18171B",
+"^.	c #514D66",
+"/.	c #434058",
+"(.	c #403E53",
+"_.	c #3D3C4F",
+":.	c #3A3B4A",
+"<.	c #CACBC8",
+"[.	c #8A8D78",
+"}.	c #64665B",
+"|.	c #9F9EA1",
+"1.	c #7F7E7E",
+"2.	c #F9FAF8",
+"3.	c #FBFBF9",
+"4.	c #DEDFDD",
+"5.	c #131313",
+"6.	c #959695",
+"7.	c #F0EFEA",
+"8.	c #ECECE7",
+"9.	c #E9E9E4",
+"0.	c #E7E7DE",
+"a.	c #DEDED3",
+"b.	c #858773",
+"c.	c #555551",
+"d.	c #A7A293",
+"e.	c #F9F9F8",
+"f.	c #F8F8F6",
+"g.	c #F0EEDF",
+"h.	c #1D1D19",
+"i.	c #5D5C58",
+"j.	c #C9C9BE",
+"k.	c #C7C7BD",
+"l.	c #939388",
+"m.	c #929484",
+"n.	c #9A9A8B",
+"o.	c #595953",
+"p.	c #515161",
+"q.	c #C7C1B4",
+"r.	c #ECC635",
+"s.	c #C4A420",
+"t.	c #AFADA8",
+"u.	c #F9F9F6",
+"v.	c #F9F9F7",
+"w.	c #E6CD79",
+"x.	c #7C5B09",
+"y.	c #AB922F",
+"z.	c #343326",
+"A.	c #1E1E14",
+"B.	c #313125",
+"C.	c #504F4F",
+"D.	c #DBC475",
+"E.	c #F5CC10",
+"F.	c #F4CA10",
+"G.	c #C1AC62",
+"H.	c #EEEEEC",
+"I.	c #C2C2C0",
+"J.	c #A07F2F",
+"K.	c #F5C80E",
+"L.	c #F3CB17",
+"M.	c #B0A263",
+"N.	c #626254",
+"O.	c #595949",
+"P.	c #9A9693",
+"Q.	c #B9A478",
+"R.	c #CBA133",
+"S.	c #967432",
+"T.	c #6F6D6D",
+"U.	c #6F6B6D",
+"V.	c #957642",
+"W.	c #C59D35",
+"X.	c #8D8D86",
+". . . . . . . . . . . . . . . . . + ",
+". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # ",
+". @ @ $ % & * = - ; > , ' ) ! @ @ # ",
+". @ ~ { ] ^ / ( _ : < [ } | 1 2 @ # ",
+". @ 3 4 5 6 7 8 9 0 a b } | c d @ # ",
+". @ e f 5 6 7 8 9 0 g b } | h i j # ",
+". @ k l m n o p q r g b } | s t u # ",
+". @ v w x y z A B r g b } C D E F # ",
+". @ v G H I J K L r g M N C O P Q # ",
+". @ R S T U V W X r Y M N Z `  ...# ",
+". @ +. at .#.$.%.&.*.=.-.M N Z ;.>.,.# ",
+". @ '.).!.~.% {.].^./.(._.:.<.[.}.# ",
+". @ |.1.2.3.3.4.5.6.7.8.9.0.a.b.c.# ",
+". @ @ d.e.f.~.g.h.i.j.k.l.m.n.o.p.# ",
+". q.r.s.t.u.v.w.x.y.z.A.B.C.p.p.p.# ",
+". D.E.F.G.H.I.J.K.L.M.N.O.p.p.p.@ # ",
+". P.Q.R.S.T.U.V.W.X.@ @ @ @ @ @ @ # ",
+"# # # # # # # # # # # # # # # # # # "};
diff --git a/mask.xbm b/mask.xbm
new file mode 100644
index 0000000..0efa91f
--- /dev/null
+++ b/mask.xbm
@@ -0,0 +1,68 @@
+#define mask_width 64
+#define mask_height 64
+
+static char mask_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,	
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,	
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,	
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,	
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/wmb_libs.c b/wmb_libs.c
new file mode 100644
index 0000000..c9ea4c8
--- /dev/null
+++ b/wmb_libs.c
@@ -0,0 +1,692 @@
+/* wmb_libs.c - Edward H. Flora - ehf_dockapps at cox.net */
+/* Last Modified: 4/3/04 */
+/* 
+ * These functions are designed to work with wmbutton.
+ */
+
+/* PORTABILITY:
+******************
+* Coded in ANSI C, using ANSI prototypes.
+*/
+
+/******  Include Files  *************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "wmbutton.h"
+
+
+/******  ToolTip Globals  ***********************************************/
+
+static struct timeval _tStart;
+
+extern struct Config_t Config;
+int _bTooltip = 0;
+XFontStruct* _fTooltip;
+int _nFontHeight, _nFontY;
+int _nScreenWidth, _nScreenHeight;
+GC _gcMono= 0;
+Window _wTooltip;
+
+/******  Parse Command Line  ********************************************/
+void parseargs(int argc, char **argv) {
+  int current;
+  char *Home = getenv("HOME");
+
+  while (-1 != (current = getopt(argc, argv, "vhnmsF:b:g:d:f:"))) {
+    switch (current) {
+    case 'v': 
+      Config.Verbose = 1;
+      break;
+    case '?':
+    case 'h':
+      show_usage();
+      break;
+    case 'm':
+      Config.mmouse = 1;
+      break;
+    case 'n':
+      Config.bTooltipDisable = 1;
+      break;
+    case 's':
+      Config.bTooltipSwapColors = 1;
+      break;
+    case 'g':
+      Config.Geometry_str = strdup(optarg);
+      break;
+    case 'd':
+      Config.Display_str = strdup(optarg);
+      break;
+    case 'f':
+      Config.configfile = strdup(optarg);
+      break;
+    case 'F':
+      Config.szTooltipFont = strdup(optarg);
+      break;
+    case 'b':
+      Config.buttonfile = strdup(optarg);
+      break;
+    }
+  }
+
+  if (!Config.configfile) {
+    if (Home != NULL) {
+      Config.configfile = malloc(
+          strlen(Home) + strlen(CONFFILENAME) + 1);
+      sprintf(Config.configfile, "%s%s", Home, CONFFILENAME);
+    }
+  }
+
+  if (!Config.buttonfile) {
+    if (Home != NULL) {
+      Config.buttonfile = malloc(
+          strlen(Home) + strlen(BUTTONFILENAME) + 1);
+      sprintf(Config.buttonfile, "%s%s", Home, BUTTONFILENAME);
+    }
+  }
+
+  if (!Config.Geometry_str)
+    Config.Geometry_str = "64x64+0+0";
+
+  if (!Config.Display_str)
+    Config.Display_str = "";
+
+  if (!Config.szTooltipFont)
+    Config.szTooltipFont = TOOLTIP_FONT;
+
+  if (!Config.bTooltipDisable)
+    Config.bTooltipDisable = !TOOLTIP_SUPPORT;
+
+}
+
+/******  Show Usage Information  ****************************************/
+void show_usage() {
+  extern char *app_name;
+
+  fprintf(stderr,"\n");
+  fprintf(stderr,"usage: %s [-g geom] [-d dpy] [-f cfgfile] [-b btnfile] "\
+	  "[-F <font>] [-v] [-s] [-n]\n",app_name);
+  fprintf(stderr,"\n");
+  fprintf(stderr," wmbutton Ver %d Rel %d\n",VER,REL);
+  fprintf(stderr,"\n");
+  fprintf(stderr,"-g <geometry>  Window Geometry - ie: 64x64+10+10\n");
+  fprintf(stderr,"-d <display>   Display -  ie: 127.0.0.1:0.0\n"); 
+  fprintf(stderr,"-f <filename>  Full path to configuration file.\n");
+  fprintf(stderr,"-b <filename>  Full path to button xpm.\n");
+  fprintf(stderr,"-F <font>      Custom tooltip font (e.g. -b\\&h-lucidatypewriter-medium-*-*-*-12-*)\n");
+  fprintf(stderr,"-v             Verbose Mode.\n");
+  fprintf(stderr,"-h             Help. This message.\n");
+#if MIDMOUSE
+  fprintf(stderr,"-m             Disable Middle Mouse functionality.\n");
+#else
+  fprintf(stderr,"-m             Enable Middle Mouse functionality.\n");
+#endif
+  fprintf(stderr,"-s             Swap tooltip colors.\n");
+  fprintf(stderr,"-n             Turn off tooltips.\n");
+  fprintf(stderr,"\n");
+  exit(0);
+}/***********************************************************************/
+
+
+/******  Error Handler Routine  *****************************************/
+void err_mess(int err, char *str) {
+
+  switch (err) {
+  case FAILDISP:
+    fprintf(stderr,"Fail: XOpenDisplay for %s\n", str);	
+    exit(err);
+  case FAILSWIN:
+    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
+    exit(err);
+  case FAILICON: 
+    fprintf(stderr,"Fail: XCreateSimpleWindow\n");	
+    exit(err);
+  case FAILXPM:
+    fprintf(stderr,"Fail: XCreateBitmapFromData\n");
+    break;
+  case FAILWNAM:
+    fprintf(stderr,"%s: Can't set up window name\n", str);
+    exit(err);
+  case FAILGC:
+    fprintf(stderr,"Fail: XCreateGC\n");	
+    exit(err);
+  case FAILCONF:
+    fprintf(stderr, "Fail: Can't Find configuration file %s\n",str);
+    exit(err);
+  case FAILTMPL:
+    fprintf(stderr, "Fail: Can't Create 'template' Pixmap\n");
+    exit(err);
+  case FAILVIS:
+    fprintf(stderr, "Fail: Can't Create 'visible' Pixmap\n");
+    exit(err);
+  case FAILBUT:
+    fprintf(stderr, "Fail: Can't Create 'buttons' Pixmap\n");
+    exit(err);
+  default:
+    fprintf(stderr, "Fail:  UnSpecified Error: %d\n",err);
+    fprintf(stderr, "Fail:  %s\n",str);
+    exit(err);
+  }
+
+}/***********************************************************************/
+
+/***********************************************************************
+ * RunAppN(int app)
+ *
+ * Run the command given in the configuration file 'configfile'
+ ***********************************************************************/
+void RunAppN( int app ) {
+  char *cmndstr;
+  extern struct Config_t Config;
+
+  cmndstr = Parse(app);                  // Get command to pass to system
+
+  if (Config.Verbose) fprintf(stderr, "Command String: %s", cmndstr);
+
+  if (cmndstr != NULL) {
+    system(cmndstr);  // if there's a command, run it
+    free(cmndstr);
+  }
+}/***********************************************************************/
+
+/***********************************************************************
+ * Parse(int app)
+ *
+ * Parses the file 'configfile' for command to execute.
+ ***********************************************************************/
+char *Parse(int app) {
+  FILE *fp;
+  char Buf[BUFFER_SIZE];
+  char *Ptr;
+
+  if ((fp = fopen(Config.configfile, "r")) == NULL)
+    err_mess(FAILCONF,Config.configfile);
+
+  while ((Ptr = fgets(Buf, BUFFER_SIZE, fp))) {
+    if (atoi(Buf) == app)
+    break;
+  }
+
+  fclose(fp);
+  
+  if (!Ptr)
+    return Ptr;
+
+  Ptr = strchr(Buf, '\t');                      // find first tab
+  if (Ptr == NULL) Ptr = strchr(Buf, ' ');      // or space charater
+  if (Ptr == NULL) return(NULL);
+  Ptr++;
+
+  Ptr = strdup(Ptr);
+
+  return(Ptr);
+}/**********************************************************************/
+
+/***********************************************************************
+ *   initTime
+ *
+ *     Copyright (c) 2001 Bruno Essmann <essmann at users.sourceforge.net>
+ ***********************************************************************/
+
+void initTime () {
+  extern struct Config_t Config;
+
+  if (Config.Verbose) {
+    fprintf(stdout, "[        ] initializing time\n");
+  }
+
+  gettimeofday(&_tStart, NULL);
+}/**********************************************************************/
+
+long currentTimeMillis () {
+  struct timeval tNow;
+  struct timeval tElapsed;
+  
+  gettimeofday(&tNow, NULL);
+  
+  if (_tStart.tv_usec > tNow.tv_usec) {
+    tNow.tv_usec+= 1000000;
+    tNow.tv_sec--;
+  }
+  tElapsed.tv_sec= tNow.tv_sec - _tStart.tv_sec;
+  tElapsed.tv_usec= tNow.tv_usec - _tStart.tv_usec;
+  return (tElapsed.tv_sec * 1000) + (tElapsed.tv_usec / 1000);
+}/**********************************************************************/
+
+
+void getWindowOrigin (Window w, int* nX, int* nY) {
+  extern Display *display;
+  Window wWindow, wParent, wRoot;
+  Window* wChildren;
+  unsigned int nChildren;
+  unsigned int ww, wh, wb, wd;
+  int wx, wy;
+
+  wParent= w;
+  do {
+    wWindow= wParent;
+    if (!XQueryTree(display, wParent, &wRoot, &wParent, &wChildren, &nChildren))
+      return;
+
+    if (wChildren)
+      XFree(wChildren);
+
+  } while (wParent != wRoot);
+
+  if (XGetGeometry(display, wWindow, &wRoot, &wx, &wy, &ww, &wh, &wb, &wd)) {
+    if (nX) {
+      *nX= wx;
+    }
+    if (nY) {
+      *nY= wy;
+    }
+  }
+}/**********************************************************************/
+
+/***********************************************************************
+ *  getButtonLocation
+ *
+ *  compute location for each button's tooltip (not perfect)
+ ***********************************************************************/
+void getButtonLocation (int nButton, int* nLocationX, int* nLocationY) {
+  *nLocationX = 0;
+  *nLocationY = 8;
+  while (nButton > BUTTON_COLS) {
+    *nLocationY += BUTTON_SIZE;
+    nButton -= BUTTON_COLS;
+  }
+  while (nButton > 0) {
+    *nLocationX += BUTTON_SIZE - 1;
+    nButton--;
+  }
+}/**********************************************************************/
+
+/* SkipWord & SkipSpaces: utility functions for getNicenedString */
+char *SkipWord(char *Text) {
+  char *Result = Text;
+
+  while ((*Result != ' ')&&(*Result != '\t')&&
+         (*Result != '\n')&&(*Result != 0x00))
+    Result++;
+  return Result;
+}
+
+char *SkipSpaces(char *Text) {
+  char *Result = Text;
+
+  while ((*Result == ' ')||(*Result == '\t')||(*Result == '\n'))
+    Result++;
+  return Result;
+}
+
+/***********************************************************************
+ *  getNicenedString
+ *
+ *  nicen the parsed command from the .wmbutton config file
+ *    - cut if too long
+ *    - remove parameters, whitespace and the '&'...
+ ***********************************************************************/
+char* getNicenedString (char *old, int andAddSeparator) {
+  char *WorkStr;
+  char *WorkStrEnd;
+  char *StartPtr;
+  char *EndPtr;
+
+  char *RetStr;
+
+  if (!old) {
+    if (andAddSeparator)
+      return strdup("-- | ");
+    else
+      return strdup("--");
+  }
+
+  RetStr = malloc(strlen(old) + 3 + 1); // 3 for Seperator
+  *RetStr = 0x00;
+
+  WorkStr = strdup(old);
+  WorkStrEnd = strchr(WorkStr, 0x00);
+  StartPtr = WorkStr;
+
+  while(StartPtr < WorkStrEnd) {
+    StartPtr = SkipSpaces(StartPtr);
+    EndPtr = SkipWord(StartPtr);
+    *EndPtr = 0x00;
+
+    if ((*StartPtr == '&')||(*StartPtr == '-'))
+      break;
+
+    strcat(RetStr, StartPtr);
+    strcat(RetStr, " ");
+    StartPtr = EndPtr+1;
+  }
+
+  free(WorkStr);
+
+  if (andAddSeparator) {
+    strcat(RetStr, "| ");
+  }
+  
+  return RetStr;
+}
+
+/***********************************************************************
+ *  getButtonAppNames
+ *
+ *  returns the 1..3 application names / commands to be shown in tooltip
+ ***********************************************************************/
+char* getButtonAppNames (int nButton) {
+  char *str = NULL;
+  char *tmp1,*tmp2;
+    
+  if (!( nButton < 0 || nButton > 9 )) {
+
+    // FIXME: _Might_ overflow, but it's unlikely.
+    // Perhaps one should fix this sometime ;)
+    str = (char*) calloc (sizeof(char), BUFFER_SIZE);
+    
+    tmp1 = Parse(nButton + LMASK);
+    tmp2 = getNicenedString(tmp1, 1);
+    strcat(str, tmp2);
+    free(tmp1);
+    free(tmp2);
+    
+    tmp1 = Parse(nButton + MMASK);
+    tmp2 = getNicenedString(tmp1, 1);
+    strcat(str, tmp2);
+    free(tmp1);
+    free(tmp2);
+    
+    tmp1 = Parse(nButton + RMASK);
+    tmp2 = getNicenedString(tmp1, 0);
+    strcat(str, tmp2);
+    free(tmp1);
+    free(tmp2);
+  }
+
+  return(str);
+}/**********************************************************************/
+
+
+int hasTooltipSupport () {
+  return !Config.bTooltipDisable;
+}/**********************************************************************/
+
+void showTooltip (int nButton, int nMouseX, int nMouseY) {
+  Pixmap pixmap, mask;
+  int nMainWinX, nMainWinY;
+  int nButtonX = 0, nButtonY = 0, nButtonWidth = 0, nButtonHeight = 0;
+  int nTextY, nX, nY, nWidth, nHeight, nSide;
+  char* szText;
+  extern struct Config_t Config;
+  extern Window iconwin;
+  extern Pixel bg_pixel, fg_pixel;
+  extern Display *display;
+  extern GC gc;
+
+  if (Config.bTooltipDisable ||  nButton == -1) {
+    return;
+  }
+  if (_bTooltip) {
+    hideTooltip();
+  }
+
+
+  if (Config.Verbose) { 
+    fprintf(stdout, "[%8ld] showing tooltip for button %d at %d, %d\n", 
+	    currentTimeMillis(),
+	    nButton, nMouseX, nMouseY);
+  } 
+
+  szText = getButtonAppNames(nButton);
+  if(!szText)
+    return;
+
+  _bTooltip= 1;
+
+  nWidth= XTextWidth(_fTooltip, szText, strlen(szText)) + 16;
+  nHeight= _nFontHeight + 4;
+  if (nHeight < 16) {
+    nHeight= 16;
+  }
+  if (nWidth < nHeight) {
+    nWidth= nHeight;
+  }
+  if (Config.Verbose) { 
+    fprintf(stdout, "[%8ld] tooltip size: %d, %d\n", 
+	    currentTimeMillis(), nWidth, nHeight);
+  }
+	
+  getWindowOrigin(iconwin, &nMainWinX, &nMainWinY);
+  getButtonLocation(nButton, &nButtonX, &nButtonY);
+  nButtonX+= nMainWinX;
+  nButtonY+= nMainWinY;
+  nButtonWidth  = BUTTON_SIZE;
+  nButtonHeight = BUTTON_SIZE;
+	
+  if (nButtonX + nWidth > _nScreenWidth) {
+    nSide= TOOLTIP_RIGHT;
+    nX= nButtonX - nWidth + nButtonWidth / 2;
+    if (nX < 0) {
+      nX= 0;
+    }
+  } else {
+    nSide= TOOLTIP_LEFT;
+    nX= nButtonX + nButtonWidth / 2;
+  }
+  if (nX + nWidth > _nScreenWidth) {
+    nX= _nScreenWidth - nWidth;
+  }
+
+  if (nButtonY - (nHeight + TOOLTIP_SPACE) < 0) {
+    nSide|= TOOLTIP_TOP;
+    nY= nButtonY + nButtonHeight - 1;
+    nTextY= TOOLTIP_SPACE;
+  } else {
+    nSide|= TOOLTIP_BOTTOM;
+    nY= nButtonY - (nHeight + TOOLTIP_SPACE);
+    nTextY= 0;
+  }
+	
+  pixmap= createTooltipPixmap(nWidth, nHeight, nSide, &mask);
+
+  XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
+  XSetFont(display, gc, _fTooltip->fid);
+  XDrawString(display, pixmap, gc, 
+	      8, nTextY + (nHeight - _nFontHeight) / 2 + _nFontY, 
+	      szText, strlen(szText));
+		
+  XSetWindowBackgroundPixmap(display, _wTooltip, pixmap);
+
+  XResizeWindow(display, _wTooltip, nWidth, nHeight + TOOLTIP_SPACE);
+  XShapeCombineMask(display, _wTooltip, ShapeBounding, 0, 0, mask, ShapeSet);
+  XFreePixmap(display, mask);
+  XMoveWindow(display, _wTooltip, nX, nY);
+  XMapRaised(display, _wTooltip);
+  XFreePixmap(display, pixmap);
+
+  free(szText);
+}/**********************************************************************/
+
+void hideTooltip () {
+  extern struct Config_t Config;
+  extern Display *display;
+
+  if (Config.bTooltipDisable) {
+    return;
+  }
+  if (_bTooltip) {
+    if (Config.Verbose) {
+      fprintf(stdout, "[%8ld] hiding tooltip\n", currentTimeMillis());
+    }
+    XUnmapWindow(display, _wTooltip);
+    _bTooltip= 0;
+  }
+}/**********************************************************************/
+
+int hasTooltip () {
+  if (Config.bTooltipDisable) {
+    return 0;
+  }
+  return _bTooltip;
+}/**********************************************************************/
+
+void initTooltip () {
+  XSetWindowAttributes attribs;
+  unsigned long vmask;
+  extern Display *display;
+  extern char *app_name;
+  extern int screen;
+  extern Window rootwin, win;
+
+  if (Config.bTooltipDisable) {
+    if (Config.Verbose) {
+      fprintf(stdout, "[%8ld] initializing tooltips (disabled)\n", 
+	      currentTimeMillis());
+    }
+
+    return;
+  }
+  if (Config.Verbose) {
+    fprintf(stdout, "[%8ld] initializing tooltips\n", currentTimeMillis());
+  }
+  _fTooltip= XLoadQueryFont(display, Config.szTooltipFont);
+  if (!_fTooltip) {
+    fprintf(stderr, "%s: couldn't allocate font '%s'.\n", app_name, Config.szTooltipFont);
+    if (!strcmp(Config.szTooltipFont, TOOLTIP_FONT))
+      fprintf(stderr, "%s: Use option -F <font>\n", app_name);
+    exit(-1);
+  }
+  _nFontHeight= _fTooltip->ascent + _fTooltip->descent;
+  _nFontY= _fTooltip->ascent;
+  _nScreenWidth= WidthOfScreen(ScreenOfDisplay(display, screen));
+  _nScreenHeight= HeightOfScreen(ScreenOfDisplay(display, screen));
+  if (Config.Verbose) {
+    fprintf(stdout, "[%8ld] configuring tooltip font:\n" \
+	    "[%8ld] - '%s'\n" \
+	    "[%8ld] - font-height= %d, font-ascent= %d\n" \
+	    "[%8ld] configuring screen size: %dx%d\n",
+	    currentTimeMillis(), 
+	    currentTimeMillis(), Config.szTooltipFont, 
+	    currentTimeMillis(), _nFontHeight, _nFontY,
+	    currentTimeMillis(), _nScreenWidth, _nScreenHeight  );
+  }
+
+  vmask= CWSaveUnder | CWOverrideRedirect | CWBorderPixel;
+  attribs.save_under= True;
+  attribs.override_redirect= True;
+  attribs.border_pixel= 0;
+  _wTooltip= XCreateWindow(display, rootwin, 1, 1, 10, 10, 1,
+			   CopyFromParent, CopyFromParent, 
+			   CopyFromParent, vmask, &attribs);
+  if (win == 0) {
+    fprintf(stderr, "Cannot create tooltip window.\n");
+    exit(-1);
+  }
+}/**********************************************************************/
+
+void destroyTooltip () {
+  extern Display *display;
+
+  if (Config.bTooltipDisable) {
+    return;
+  }
+  if (_gcMono) {
+    XFreeGC(display, _gcMono);
+    _gcMono= 0;
+  }
+  XDestroyWindow(display, _wTooltip);
+}/**********************************************************************/
+
+void drawTooltipBalloon (Pixmap pix, GC gc, int x, int y, int w, int h, int side) {
+  extern Display *display;
+  int rad = h*3/10;
+  XPoint pt[3];
+
+  XFillArc(display, pix, gc, x, y, rad, rad, 90*64, 90*64);
+  XFillArc(display, pix, gc, x, y+h-1-rad, rad, rad, 180*64, 90*64);
+
+  XFillArc(display, pix, gc, x+w-1-rad, y, rad, rad, 0*64, 90*64);
+  XFillArc(display, pix, gc, x+w-1-rad, y+h-1-rad, rad, rad, 270*64, 90*64);
+
+  XFillRectangle(display, pix, gc, x, y+rad/2, w, h-rad);
+  XFillRectangle(display, pix, gc, x+rad/2, y, w-rad, h);
+
+  if (side & TOOLTIP_BOTTOM) {
+    pt[0].y = y+h-1;
+    pt[1].y = y+h-1+TOOLTIP_SPACE;
+    pt[2].y = y+h-1;
+  } else {
+    pt[0].y = y;
+    pt[1].y = y-TOOLTIP_SPACE;
+    pt[2].y = y;
+  }
+  if (side & TOOLTIP_RIGHT) {
+    pt[0].x = x+w-h+2*h/16;
+    pt[1].x = x+w-h+11*h/16;
+    pt[2].x = x+w-h+7*h/16;
+  } else {
+    pt[0].x = x+h-2*h/16;
+    pt[1].x = x+h-11*h/16;
+    pt[2].x = x+h-7*h/16;
+  }
+  XFillPolygon(display, pix, gc, pt, 3, Convex, CoordModeOrigin);
+}/**********************************************************************/
+
+Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask) {
+  extern Display *display;
+  extern GC gc;
+  extern Pixel bg_pixel, fg_pixel;
+  extern int depth;
+  extern Window rootwin;
+  Pixmap bitmap;
+  Pixmap pixmap;
+  int x, y;
+
+  bitmap = XCreatePixmap(display, rootwin, 
+			 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE, 1);
+
+  if (!_gcMono) {
+    _gcMono= XCreateGC(display, bitmap, 0, NULL);
+  }
+  XSetForeground(display, _gcMono, 0); 
+  XFillRectangle(display, bitmap, _gcMono, 0, 0, 
+		 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE);
+
+  pixmap = XCreatePixmap(display, rootwin, 
+			 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE, depth);
+  XSetForeground(display, gc, Config.bTooltipSwapColors ? fg_pixel : bg_pixel);
+  XFillRectangle(display, pixmap, gc, 0, 0, 
+		 width+TOOLTIP_SPACE, height+TOOLTIP_SPACE);
+
+  if (side & TOOLTIP_BOTTOM) {
+    y = 0;
+  } else {
+    y = TOOLTIP_SPACE;
+  }
+  x = 0;
+
+  XSetForeground(display, _gcMono, 1);
+  drawTooltipBalloon(bitmap, _gcMono, x, y, width, height, side);
+  XSetForeground(display, gc, Config.bTooltipSwapColors ? bg_pixel : fg_pixel);
+  drawTooltipBalloon(pixmap, gc, x+1, y+1, width-2, height-2, side);
+
+  *mask = bitmap;
+
+  return pixmap;
+}/***********************************************************************/
+
+
+/***********************************************************************
+ *   flush_expose
+ *
+ *   Everyone else has one of these... Can't hurt to throw it in.
+ ***********************************************************************/
+int flush_expose(Window w) {
+  extern Display *display;
+  XEvent         dummy;
+  int            i=0;
+
+  while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) i++;
+  return(i);
+}/***********************************************************************/
diff --git a/wmbutton.c b/wmbutton.c
new file mode 100644
index 0000000..a2e46ac
--- /dev/null
+++ b/wmbutton.c
@@ -0,0 +1,557 @@
+/***********************************************************************
+ *   Code is based on wmppp, wmload, wmtime, wmcp, and asbutton
+ *   Author: Edward H. Flora <ehflora at ksu.edu>
+ *   Ver 0 Rel 6.1    Jan 23, 2005
+ *
+ *   Contributors:
+ *              Christian 'Greek0' Aichinger <Greek0 at gmx.net>
+ *                  Did some code cleanup and fixed several memory leaks.
+ *              Ralf Horstmann <ralf.horstmann at gmx.de>
+ *                  Added ability to load pixmaps at startup,
+ *                  without having to re-compile
+ *              Michael Cohrs <camico at users.sourceforge.net> 
+ *                  Added Tool Tips, and updated graphics
+ *              Bruno Essmann <essmann at users.sourceforge.net>)
+ *                  Creator of wmpager
+ *              Casey Harkins <charkins at cs.wisc.edu> 
+ *                  Bug fix reading config file path - 3/6/99
+ *                  Added button-presses, and other - denoted by *charkins*
+ *              Ben Cohen <buddog at aztec.asu.edu>
+ *                  original author of wmcp (et al.)
+ *              Thomas Nemeth <tnemeth at multimania.com>
+ *                  contributor to wmcp
+ *              Michael Henderson <mghenderson at lanl.gov>
+ *                  Application ideas, suggestions
+ *              Ryan ?? <pancake at mindspring.com> 
+ *                  Modified wmbutton to asbutton.
+ *                  Note: asbutton is a seperate program, not associated 
+ *                        with wmbutton (just as wmbutton is not associated
+ *                        with wmcp)
+ *              Jon Bruno
+ *                  Web Page Development
+ *    The contributors listed above are not necessarily involved with the 
+ *    development of wmbutton.  I'm listing them here partially as thanks for 
+ *    helping out, catching bugs in the code, etc.
+ ***********************************************************************/
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+
+#include "wmbutton.h"
+
+#include "backdrop.xpm"           /* background graphic */
+#include "buttons.xpm"            /* graphic of 9 buttons */
+#include "mask.xbm"               /* Border Graphic */
+
+/*************** Function Prototypes ***********************************/
+void redraw(void);                 
+void getPixmaps(void);
+int  whichButton(int x, int y);   // determine which button has been pressed
+void SetWmHints();
+void SetClassHints();
+
+/***********************************************************************
+ * 		Globals..    OK.. there's too many globals.
+ *                           Feel free and fix it, if you'd like.
+ ***********************************************************************/
+Display *display;
+int screen;
+Window rootwin, win, iconwin;
+GC gc;
+int depth;
+Pixel bg_pixel, fg_pixel;
+
+struct Config_t Config;
+
+typedef struct _XpmIcon {
+  Pixmap pixmap;
+  Pixmap mask;
+  XpmAttributes attributes;
+} XpmIcon;
+
+typedef struct _button_region {
+  int x,y;
+  int i,j;
+} ButtonArea;
+
+ButtonArea button_region[9];
+
+XpmIcon template, visible, buttons;
+
+int border  = 0;
+int button_pressed = -1;	/* button to be drawn pressed *charkins*/
+
+char *app_name = "wmbutton";
+
+/***********************************************************************
+ * 		Main
+ ***********************************************************************/
+int main( int argc, char ** argv ) {
+
+  XEvent report;
+  XGCValues xgcValues;	
+  XTextProperty app_name_atom;
+  XSizeHints xsizehints;
+
+  Pixmap pixmask;
+
+  int dummy = 0;
+  int N = 1;		        /* Button number pressed to goto app # */
+  
+  /* Added for Tool Tip Support */
+  long nTooltipShowDelay = TOOLTIP_SHOW_DELAY;
+  long nTooltipReshowDelay = TOOLTIP_RESHOW_DELAY;
+  long nTooltipTimer = -1;
+  long nTooltipHideTimer = -1;
+  long nNow;
+  int nTooltipButton = 0, nTooltipX = 0, nTooltipY = 0;
+
+  /* Parse Command Line Arguments */  
+  parseargs(argc, argv);
+
+  /* Open Display */
+  if ( (display = XOpenDisplay(Config.Display_str)) == NULL ) 
+    err_mess(FAILDISP, Config.Display_str);
+  
+  screen  = DefaultScreen(display);
+  rootwin = RootWindow(display,screen);
+  depth   = DefaultDepth(display, screen);
+  
+  bg_pixel = WhitePixel(display, screen ); 
+  fg_pixel = BlackPixel(display, screen ); 
+  
+  xsizehints.flags  = USSize | USPosition;
+  xsizehints.width  = 64;
+  xsizehints.height = 64;
+  
+  /* Parse Geometry string and fill in sizehints fields */
+  XWMGeometry(display, screen, 
+	      Config.Geometry_str, 
+	      NULL, 	
+	      border, 
+	      &xsizehints,
+	      &xsizehints.x, 
+	      &xsizehints.y,
+	      &xsizehints.width,
+	      &xsizehints.height, 
+	      &dummy);
+  
+  if ( (win = XCreateSimpleWindow(display,
+				  rootwin,
+				  xsizehints.x,
+				  xsizehints.y,
+				  xsizehints.width,
+				  xsizehints.height,
+				  border,
+				  fg_pixel, bg_pixel) ) == 0 )
+    err_mess(FAILSWIN, NULL);
+
+  
+  if ( (iconwin = XCreateSimpleWindow(display,
+				      win,
+				      xsizehints.x,
+				      xsizehints.y,
+				      xsizehints.width,
+				      xsizehints.height,
+				      border,
+				      fg_pixel, bg_pixel) ) == 0 )
+    err_mess(FAILICON, NULL);
+
+  /* Set up shaped windows */
+  /*Gives the appicon a border so you can grab and move it. */
+
+  if ( ( pixmask = XCreateBitmapFromData(display, 
+					 win,
+					 mask_bits,
+					 mask_width,
+					 mask_height) )  == 0 )
+    err_mess(FAILXPM,NULL);
+
+  
+  XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet );
+  XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
+
+  /* Convert in pixmaps from .xpm includes. */
+  getPixmaps();
+
+  /* Interclient Communication stuff */
+  /* Appicons don't work with out this stuff */
+  SetWmHints();
+  SetClassHints();
+
+
+  XSetWMNormalHints( display, win, &xsizehints );
+  
+  /* Tell window manager what the title bar name is. We never see */
+  /* this anyways in the WithdrawnState      */
+  if ( XStringListToTextProperty(&app_name, 1, &app_name_atom) == 0 )
+    err_mess(FAILWNAM,app_name);
+  XSetWMName( display, win, &app_name_atom );
+  
+  /* Create Graphic Context */	
+  if (( gc = XCreateGC(display, win,(GCForeground | GCBackground), &xgcValues))
+       == NULL )
+    err_mess(FAILGC,NULL);
+
+  /* XEvent Masks. We want both window to process X events */
+  XSelectInput(display, win,
+	       ExposureMask | 
+	       ButtonPressMask | 
+	       ButtonReleaseMask |    	/* added ButtonReleaseMask *charkins*/
+	       PointerMotionMask |
+	       StructureNotifyMask |
+	       LeaveWindowMask );  
+  XSelectInput(display, iconwin,
+	       ExposureMask | 
+	       ButtonPressMask | 
+	       ButtonReleaseMask |	/* added ButtonReleaseMask *charkins*/
+	       PointerMotionMask |
+	       StructureNotifyMask |
+	       LeaveWindowMask );
+  
+  /* Store the 'state' of the application for restarting */
+  XSetCommand( display, win, argv, argc );	
+
+  /* Window won't ever show up until it is mapped.. then drawn after a 	*/
+  /* ConfigureNotify */
+  XMapWindow( display, win );
+
+  /* Initialize Tooltip Support */
+  initTime();
+  initTooltip(!Config.bTooltipDisable, Config.szTooltipFont, Config.bTooltipSwapColors);
+
+  /* X Event Loop */
+  while (1) {
+    while (XPending(display) || nTooltipTimer == -1) {
+      XNextEvent(display, &report );
+      switch (report.type) {
+      case Expose:
+	if (report.xexpose.count != 0) {	
+	  break;
+	}
+	if ( Config.Verbose ) fprintf(stdout,"Event: Expose\n");	
+	redraw();
+	break;      
+
+      case ConfigureNotify:
+	if ( Config.Verbose ) fprintf(stdout,"Event: ConfigureNotify\n");	
+	redraw();
+	break;
+
+      case MotionNotify:
+	if (hasTooltipSupport()) {
+	  if (!hasTooltip()) {
+	    nTooltipTimer= currentTimeMillis();
+	    nTooltipX= report.xbutton.x;
+	    nTooltipY= report.xbutton.y;
+	    nTooltipButton= whichButton(report.xbutton.x, report.xbutton.y);
+	  } else {
+	    int nButton = whichButton(report.xbutton.x, report.xbutton.y);
+	    if (nButton != nTooltipButton) {
+	      hideTooltip();
+	      nTooltipTimer= -1;
+	      nTooltipX = report.xbutton.x;
+	      nTooltipY = report.xbutton.y;
+	      nTooltipButton = nButton;
+	      showTooltip(nTooltipButton, nTooltipX, nTooltipY);
+	    }
+	  }
+	}
+	break;
+      
+      case LeaveNotify:
+	if ( Config.Verbose ) fprintf(stdout,"Event: LeaveNotify\n");	
+	if (hasTooltip()) {
+	  hideTooltip();
+	  nTooltipHideTimer= currentTimeMillis();
+	}
+	nTooltipTimer= -1;
+	break;
+
+      case ButtonPress:	/* draw button pressed, don't launch *charkins*/
+	if (hasTooltip()) {
+	  hideTooltip();
+	  nTooltipHideTimer= currentTimeMillis();
+	}	switch (report.xbutton.button) {
+	case Button1:
+	  N = whichButton(report.xbutton.x, report.xbutton.y );
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) ) {
+	    button_pressed = N + LMASK;
+	    redraw();
+	  }
+
+	  if ( Config.Verbose ) 
+	    fprintf(stdout,"Button 1:x=%d y=%d N=%d\n", 
+		    report.xbutton.x, report.xbutton.y, N+LMASK);	
+
+	  break;
+	case Button2:
+	  if (Config.mmouse) {
+	    N = whichButton(report.xbutton.x, report.xbutton.y );
+	    if ( (N >= 0) && (N <= NUMB_OF_APPS) ) {
+	      button_pressed = N + MMASK;
+	      redraw();
+	    }
+
+	    if ( Config.Verbose ) 
+	      fprintf(stdout,"Button 2:x=%d y=%d N=%d\n", 
+		      report.xbutton.x, report.xbutton.y, N+MMASK);
+
+	  }
+	  break;
+	case Button3:
+	  N = whichButton(report.xbutton.x, report.xbutton.y );
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) ) {
+	    button_pressed = N + RMASK;
+	    redraw();
+	  }
+
+	  if ( Config.Verbose ) 
+	    fprintf(stdout,"Button 3:x=%d y=%d N=%d\n", 
+		    report.xbutton.x, report.xbutton.y, N+RMASK);
+
+	  break;
+	}
+	break;
+      case ButtonRelease:   /* launch app here if still over button *charkins*/
+	switch (report.xbutton.button) {
+	case Button1:
+	  N = whichButton(report.xbutton.x, report.xbutton.y );
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) && (N == button_pressed))
+	    RunAppN( N + LMASK);
+	  button_pressed=-1;
+	  redraw();
+
+	  if ( Config.Verbose ) 
+	    fprintf(stdout,"Button 1:x=%d y=%d N=%d\n", 
+		    report.xbutton.x, report.xbutton.y, N+LMASK);	
+
+	  break;
+	case Button2:
+	  if (Config.mmouse) {
+	    N = whichButton(report.xbutton.x, report.xbutton.y );
+	    if ( (N >= 0) && (N <= NUMB_OF_APPS) && (N == button_pressed))
+	      RunAppN( N + MMASK);
+	    button_pressed=-1;
+	    redraw();
+
+	    if ( Config.Verbose ) 
+	      fprintf(stdout,"Button 2:x=%d y=%d N=%d\n", 
+		      report.xbutton.x, report.xbutton.y, N+MMASK);
+
+	  }
+	  break;
+	case Button3:
+	  N = whichButton(report.xbutton.x, report.xbutton.y );
+	  if ( (N >= 0) && (N <= NUMB_OF_APPS) && (N == button_pressed))
+	    RunAppN( N + RMASK);
+	  button_pressed=-1;
+	  redraw();
+
+	  if ( Config.Verbose ) 
+	    fprintf(stdout,"Button 3:x=%d y=%d N=%d\n", 
+		    report.xbutton.x, report.xbutton.y, N+RMASK);
+
+	  break;
+	}
+	break;
+      case DestroyNotify:
+
+	if ( Config.Verbose ) fprintf(stdout, "Bye\n");
+
+	destroyTooltip();
+	XFreeGC(display, gc);
+	XDestroyWindow(display,win);
+	XDestroyWindow(display,iconwin);
+	XCloseDisplay(display);
+	exit(0);
+	break;
+      }
+    }
+
+    usleep(50000);
+    nNow = currentTimeMillis();
+    if ( nTooltipTimer != -1 && 
+	 ( (nNow > nTooltipTimer + nTooltipShowDelay) || (nNow < nTooltipHideTimer + nTooltipReshowDelay) ) ) {
+      showTooltip(nTooltipButton, nTooltipX, nTooltipY);
+      nTooltipTimer = -1;
+    }
+    
+  }
+
+  return (0);
+}/***********************************************************************/
+
+/***********************************************************************
+ *   redraw
+ *
+ *	 Map the button region coordinates.
+ *
+ *   Draw the appropriate number of buttons on the 'visible' Pixmap 
+ *   using data from the 'buttons' pixmap.
+ *
+ *   Then, copy the 'visible' pixmap to the two windows ( the withdrawn
+ *   main window and the icon window which is the main window's icon image.)
+ ***********************************************************************/
+void redraw() {
+  int n;
+  int i,j;
+  int dest_x, dest_y;
+  int space;
+  int offset;
+  int bsize = 18;
+
+  if ( Config.Verbose ) fprintf(stdout,"In Redraw()\n");	
+  space = 0;
+  offset = 5;
+  XCopyArea(display, template.pixmap, visible.pixmap, gc, 0, 0,
+	    template.attributes.width, template.attributes.height, 0, 0 ); 
+ 
+  for ( j=0; j < 3; j++ ) {
+    for ( i=0; i < 3; i++ ) {
+      n = i + j * 3;
+      dest_x = i*(bsize + space) + offset + space;
+      dest_y = j*(bsize + space) + offset + space;
+      
+      /* Define button mouse coords */
+      button_region[n].x = dest_x;
+      button_region[n].y = dest_y;
+      button_region[n].i = dest_x + bsize - 1;
+      button_region[n].j = dest_y + bsize - 1; 
+      
+      /* Copy button images for valid apps */
+      if (  (n + 1) <= NUMB_OF_APPS ) {
+        XCopyArea(display, buttons.pixmap, visible.pixmap, gc, 
+	          i * bsize, j * bsize, bsize, bsize, dest_x, dest_y);
+      } 
+    }
+  }
+
+  if ( button_pressed>0 ) {	/* draw pressed button *charkins*/
+    if(button_pressed>RMASK) button_pressed-=RMASK;
+    else if(button_pressed>MMASK) button_pressed-=MMASK;
+    else if(button_pressed>LMASK) button_pressed-=LMASK;
+    i = (button_pressed-1) % 3;	/* get col of button */
+    j = (button_pressed-1) / 3;	/* get row of button */
+    dest_x = i * (bsize + space) + offset + space;
+    dest_y = j * (bsize + space) + offset + space;
+    XSetForeground(display, gc, bg_pixel);
+    XDrawLine(display, visible.pixmap, gc,
+	      dest_x+1, dest_y+bsize-1, dest_x+bsize-1, dest_y+bsize-1);
+    XDrawLine(display, visible.pixmap, gc,
+	      dest_x+bsize-1, dest_y+bsize-1, dest_x+bsize-1, dest_y+1);
+    XSetForeground(display, gc, fg_pixel);
+    XDrawLine(display, visible.pixmap, gc,
+	      dest_x, dest_y, dest_x+bsize-2, dest_y);
+    XDrawLine(display, visible.pixmap, gc,
+	      dest_x, dest_y, dest_x, dest_y+bsize-2);
+  } /*charkins*/
+  
+  flush_expose( win ); 
+  XCopyArea(display, visible.pixmap, win, gc, 0, 0,
+	    visible.attributes.width, visible.attributes.height, 0, 0 ); 
+  flush_expose( iconwin ); 
+  XCopyArea(display, visible.pixmap, iconwin, gc, 0, 0,
+	    visible.attributes.width, visible.attributes.height, 0, 0 );
+
+}/***********************************************************************/
+
+/***********************************************************************
+ *  whichButton
+ *
+ *  Return the button that at the x,y coordinates. The button need not
+ *  be visible ( drawn ). Return -1 if no button match.
+ ***********************************************************************/
+int whichButton( int x, int y ) {
+  int index;
+
+  for ( index=0; index < NUMB_OF_APPS; index++ ) {
+    if ( x >= button_region[index].x &&
+	 x <= button_region[index].i &&
+	 y >= button_region[index].y &&
+	 y <= button_region[index].j  ) {
+      return( index + 1);
+    }
+  }
+  return(-1);
+}/***********************************************************************/
+
+
+/***********************************************************************
+ *   getPixmaps
+ *    
+ *   Load XPM data into X Pixmaps.
+ *  
+ *   Pixmap template contains the untouched window backdrop image.
+ *   Pixmap visible is the template pixmap with buttons drawn on it.
+ *          -- what is seen by the user.
+ *   Pixmap buttons holds the images for individual buttons that are
+ *          later copied onto Pixmap visible.
+ ***********************************************************************/
+void getPixmaps() {
+  int loaded = 0;
+  template.attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions);
+  visible.attributes.valuemask  |= (XpmReturnPixels | XpmReturnExtensions);
+  buttons.attributes.valuemask  |= (XpmReturnPixels | XpmReturnExtensions);
+  
+
+  if (Config.Verbose) fprintf(stdout, "In getPixmaps\n");
+  /* Template Pixmap. Never Drawn To. */
+  if ( XpmCreatePixmapFromData(	display, rootwin, backdrop_xpm,
+				&template.pixmap, &template.mask, 
+				&template.attributes) != XpmSuccess )
+    err_mess(FAILTMPL, NULL);
+
+  /* Visible Pixmap. Copied from template Pixmap and then drawn to. */
+  if ( XpmCreatePixmapFromData(	display, rootwin, backdrop_xpm,
+				&visible.pixmap, &visible.mask, 
+				&visible.attributes) != XpmSuccess )
+    err_mess(FAILVIS, NULL);
+  
+  /* Button Pixmap.  */
+  if ( access( Config.buttonfile, R_OK  ) == 0 ) {
+    /* load buttons from file */
+    if ( XpmReadFileToPixmap( display, rootwin, Config.buttonfile,
+      			      &buttons.pixmap, &buttons.mask, 
+			      &buttons.attributes) != XpmSuccess ) {
+      err_mess(FAILBUT, NULL); 
+    } else {
+      loaded = 1;
+    }
+  }
+  if (! loaded) { 
+    /* Use Builtin Button Pixmap.  */
+    if (Config.Verbose) fprintf(stdout, "Using builtin buttons pixmap\n");
+    if ( XpmCreatePixmapFromData( display, rootwin, buttons_xpm,
+				  &buttons.pixmap, &buttons.mask, 
+				  &buttons.attributes) != XpmSuccess )
+      err_mess(FAILBUT, NULL); 
+  }
+  if (Config.Verbose) fprintf(stdout, "Leaving getPixmaps\n");
+
+}/*********************************************************************/
+
+void SetWmHints() {
+  XWMHints *xwmhints;
+
+  xwmhints = XAllocWMHints();
+  xwmhints->flags = WindowGroupHint | IconWindowHint | StateHint;	
+  xwmhints->icon_window = iconwin;
+  xwmhints->window_group = win;
+  xwmhints->initial_state = WithdrawnState;  
+  XSetWMHints( display, win, xwmhints );
+	XFree(xwmhints);
+	xwmhints = NULL;
+}
+
+void SetClassHints() {
+  XClassHint xclasshint;
+
+  xclasshint.res_name = "wmbutton";
+  xclasshint.res_class = "Wmbutton";
+  XSetClassHint( display, win, &xclasshint );
+}
+
diff --git a/wmbutton.h b/wmbutton.h
new file mode 100644
index 0000000..178f896
--- /dev/null
+++ b/wmbutton.h
@@ -0,0 +1,107 @@
+/* wmbutton.h - Edward H. Flora - ehf_dockapps at cox.net */
+/* Last Modified 3/27/04 */
+
+/******  Include Files ***************************************************/
+#include <Xlib.h>
+#include <Xutil.h>
+#include <xpm.h>
+#include <extensions/shape.h>
+#include <keysym.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+/******  Define Config File Info  ***************************************/
+#define CONFFILENAME  "/.wmbutton"   /* Default conf filename $HOME/.wmbutton */
+#define BUTTONFILENAME "/.wmbutton.xpm"
+
+/******  Version / Release Number ***************************************/
+#define VER           0     /* Version Number */     
+#define REL           6     /* Release Number */
+
+/******  Define Error Codes *********************************************/
+#define FAILDISP      20
+#define FAILSWIN      21
+#define FAILICON      22
+#define FAILXPM       23
+#define FAILWNAM      24
+#define FAILGC        25
+#define FAILCONF      26
+#define FAILTMPL      27
+#define FAILVIS       28
+#define FAILBUT       29
+
+/******   Define Other Options  ****************************************/
+#define VERB          0      /* Enable=1, Disable=0: Debugging (verbose) Mode*/
+#define MIDMOUSE      1      /* Define Middle Mouse functionality */
+#define LMASK         0      /* left button mask: run app # mask + button #*/
+#define MMASK         10     /* middle button mask: run app # mask + button #*/
+#define RMASK         20     /* right button mask: run app # mask + button #*/
+#define NUMB_OF_APPS  9      /* Define number of apps */
+
+#define EOLN '\n'	     /* Defines the new line character */
+#define SIZE1 20	     /* Defines the increment to increase the */
+			     /*   string by until a newline of EOF is found */
+
+/******   Defines for Tool Tips  ***************************************/
+#define TOOLTIP_SUPPORT      1
+#define TOOLTIP_FONT         "-*-helvetica-medium-r-normal-*-10-*-*-*-*-*-*-*"
+#define TOOLTIP_FONT_LEN     128
+#define TOOLTIP_SHOW_DELAY   750
+#define TOOLTIP_RESHOW_DELAY 1500
+
+#define TOOLTIP_SPACE   12
+#define TOOLTIP_TOP	 0
+#define TOOLTIP_BOTTOM	 1
+#define TOOLTIP_LEFT	 0
+#define TOOLTIP_RIGHT	 2
+
+#define BUTTON_SIZE     18
+#define BUTTON_COLS      3
+
+#define BUFFER_SIZE 1024
+
+/******  Typedefs  *******************************************/
+
+struct Config_t {
+  char *configfile;
+  char *buttonfile;
+  char *Geometry_str;
+  char *Display_str;
+  int mmouse;
+  int Verbose;
+  char* szTooltipFont;
+  int bTooltipSwapColors;
+  int bTooltipDisable;
+};
+
+/******  Function Prototyes  *******************************************/
+void RunAppN(int app);             // function to run app N as found in conf file
+char *Parse(int app);              // parse data in config file
+void parseargs(int argc, char **argv);
+char *readln(FILE *fp);            // read line from file, return pointer to it
+void err_mess(int err, char *str); // Error Handling Routine
+void show_usage(void);            // show usage message to stderr
+int  flush_expose(Window w);
+
+
+/******  Tooltip Function Prototypes  **********************************/
+void initTooltip();
+void destroyTooltip ();
+int hasTooltipSupport ();
+void showTooltip (int nButton, int nMouseX, int nMouseY);
+void hideTooltip ();
+int hasTooltip ();
+void drawTooltipBalloon (Pixmap pix, GC gc, int x, int y, int w, int h, int side);
+Pixmap createTooltipPixmap (int width, int height, int side, Pixmap *mask);
+
+void initTime ();
+long currentTimeMillis ();
+void getWindowOrigin (Window w, int* nX, int* nY);
+void getButtonLocation (int nButton, int* nLocationX, int* nLocationY);
+char *getButtonAppNames (int nButton);
+
+/**********************************************************************/

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



More information about the Pkg-wmaker-commits mailing list