[comp.sources.x] v09i060: xdesk - a simple desktop command manager, Part01/01

kevin@ttidcb.tti.com (Kevin Carothers) (09/30/90)

Submitted-by: kevin@ttidcb.tti.com (Kevin Carothers)
Posting-number: Volume 9, Issue 60
Archive-name: xdesk/part01



This is a program inspired from an example I saw in the O'Reilly 
X11 Programming series, Vol. VII. It builds a scrollable XView 
canvas of X11 bitmap images and lets you execute a configurable command
'attached' to that particular image, somewhat like a Macintosh desktop.

Unfortunately (at least currently), this program doesn't  allow 
re-arranging the bitmaps within the canvas. This whole program probably
violates most Openlook  GUI guidelines, but I find it immensely useful
for executing common, but gruesomly long  commands, without having a 
bunch of shell script lying around.
--

    Kevin Carothers           {philabs,csun,psivax}!ttidca!kevin

-----------------------------------------------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	Imakefile
#	README
#	cfg.examp.a
#	cfg.examp.b
#	icons  (directory)
#	patchlevel.h
#	xdesk.1
#	xdesk.c
#	xdesk.h
#	Makefile
# This archive created: Thu Sep 27 12:30:17 1990
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'Imakefile'
then
	echo shar: "will not over-write existing file 'Imakefile'"
else
cat << \SHAR_EOF > 'Imakefile'
        DEPLIBS = $(DEPXLIB)
LOCAL_LIBRARIES = $(XLIB)
           SRCS = xdesk.c
           OBJS = xdesk.o

ComplexProgramTarget(xdesk)

SHAR_EOF
fi
if test -f 'README'
then
	echo shar: "will not over-write existing file 'README'"
else
cat << \SHAR_EOF > 'README'


                                XDESK
                      A SIMPLE X-BITMAP DRIVEN 
                  COMMAND EXECUTION PROGRAM WRITTEN
                             IN X/XVIEW


Xdesk is a program which attaches a command to a particular bitmap
file name. Although it is simple, it has many features. Namely;

    * Adjustable canvas size.
    * Ability to configure  scrollbars
    * Adjustable cell-structure size for each area which is "clicked".
    * optional display of click "margins".
    * Otional title (default is the executable name)

The canvas is a VERY "crude" approximation of a "desktop", but hey, it's
free!

There are many thing that can be done to enhance this program. Namely:

    * Ability to move/clean up the bitmap images displayed on the
      canvas.
    * Better handling of command  arguments.
    * double, instead of single-clicking commands.

If you make any enhancements/fixes to this program, please forward e-mail
the author (that's me) at the .sig below;

--
    Kevin Carothers 
    Citicorp/TTI
    3100 Ocean Park Blvd.
    Santa Monica, CA  90405     {philabs,csun,psivax}!ttidca!kevin

SHAR_EOF
fi
if test -f 'cfg.examp.a'
then
	echo shar: "will not over-write existing file 'cfg.examp.a'"
else
cat << \SHAR_EOF > 'cfg.examp.a'
./icons/xgr.xbm,xsetroot -gray &
./icons/xrn.icon,xrn &
./icons/xlogo64,xterm &
SHAR_EOF
fi
if test -f 'cfg.examp.b'
then
	echo shar: "will not over-write existing file 'cfg.examp.b'"
else
cat << \SHAR_EOF > 'cfg.examp.b'
./icons/plonk.xbm,xsetroot -bitmap ./icons/plonk.xbm -fg Gray &
./icons/gr.xbm,xsetroot -gray &
./icons/dither.xbm,xsetroot -bitmap ./icons/dither.xbm &
./icons/calctool.icon,calctool &
./icons/xchess.icon,xchess -c &
./icons/xrn.icon,xrn &
./icons/icon_open.h,xman &
SHAR_EOF
fi
if test ! -d 'icons'
then
	mkdir 'icons'
fi
cd 'icons'
if test -f 'xgr.xbm'
then
	echo shar: "will not over-write existing file 'xgr.xbm'"
else
cat << \SHAR_EOF > 'xgr.xbm'
#define x_width 32
#define x_height 32
static char x_bits[] = {
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa};
SHAR_EOF
fi
if test -f 'xrn.icon'
then
	echo shar: "will not over-write existing file 'xrn.icon'"
else
cat << \SHAR_EOF > 'xrn.icon'
#define xrn_width 50
#define xrn_height 50

static char xrn_bits[] = {
 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x40, 0xc8,
 0x23, 0x04, 0x00, 0x02, 0x01, 0x80, 0x44, 0x64, 0x04, 0x00, 0x02, 0x01,
 0x80, 0x44, 0x64, 0x04, 0x00, 0x02, 0x01, 0x00, 0x43, 0xa2, 0x04, 0x00,
 0x02, 0x01, 0x00, 0xc3, 0x21, 0x05, 0x00, 0x02, 0x01, 0x80, 0x44, 0x23,
 0x06, 0x00, 0x02, 0x01, 0x80, 0x44, 0x22, 0x06, 0x00, 0x02, 0x01, 0x40,
 0x48, 0x24, 0x04, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x02, 0x01, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x02, 0x81, 0x00, 0x00,
 0x00, 0x00, 0x0c, 0x02, 0x41, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x02, 0xe1,
 0xff, 0xff, 0xff, 0xff, 0x09, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x09,
 0x02, 0x21, 0xae, 0x66, 0xae, 0x14, 0x09, 0x02, 0x21, 0xe4, 0xa2, 0xaa,
 0x08, 0x09, 0x02, 0x21, 0xa4, 0x66, 0xaa, 0x09, 0x09, 0x02, 0x21, 0x00,
 0x00, 0x00, 0x00, 0x09, 0x02, 0x21, 0x40, 0x2d, 0x0d, 0x00, 0x09, 0x02,
 0x21, 0xc0, 0xc5, 0x08, 0x00, 0x09, 0x02, 0x21, 0x40, 0xcd, 0x0c, 0x00,
 0x09, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x21, 0xff, 0xff,
 0xff, 0x3f, 0x09, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x21,
 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x21, 0x28, 0xf8, 0xff, 0x2c, 0x09,
 0x02, 0x21, 0xd6, 0x09, 0x80, 0x30, 0x09, 0x02, 0x21, 0x00, 0xa8, 0x80,
 0x00, 0x09, 0x02, 0x21, 0x18, 0x48, 0x92, 0x3c, 0x09, 0x02, 0x21, 0xe6,
 0x89, 0x80, 0x00, 0x09, 0x02, 0x21, 0x00, 0x88, 0x90, 0x3c, 0x09, 0x02,
 0x21, 0xe6, 0x48, 0xaf, 0x10, 0x09, 0x02, 0x21, 0x38, 0x09, 0x80, 0x00,
 0x09, 0x02, 0x21, 0x00, 0xf8, 0xff, 0x3c, 0x09, 0x02, 0x21, 0xee, 0x01,
 0x00, 0x00, 0x09, 0x02, 0x21, 0x30, 0xb8, 0xf5, 0x00, 0x05, 0x02, 0x21,
 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x01,
 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb9, 0x1a, 0x00, 0x00,
 0xc0, 0x65, 0x02, 0x99, 0x0b, 0x00, 0x00, 0x40, 0x25, 0x02, 0x99, 0x12,
 0x00, 0x00, 0xc0, 0x44, 0x02, 0xb9, 0x1a, 0x00, 0x00, 0x40, 0x6d, 0x02,
 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff,
 0xff, 0x03 };
SHAR_EOF
fi
if test -f 'Xdesk.icon'
then
	echo shar: "will not over-write existing file 'Xdesk.icon'"
else
cat << \SHAR_EOF > 'Xdesk.icon'
/* Format_version=1, Width=64, Height=50, Depth=1, Valid_bits_per_item=16
 */
	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
	0x7fff,0xffff,0xffff,0xfffe,0x4000,0x0000,0x0000,0x0002,
	0x4000,0x0000,0x0000,0x0002,0x4000,0x0000,0x0000,0x0002,
	0x4000,0x0000,0x0000,0x0002,0x4000,0x0000,0x0000,0x0002,
	0x4000,0x0000,0x0000,0x0002,0x4000,0x0000,0x0000,0x0002,
	0x4000,0x0000,0x0000,0x0002,0x4000,0x0000,0x0000,0x0002,
	0x4000,0x0000,0x0000,0x0002,0x4000,0x07ff,0xffff,0xf802,
	0x4000,0x0e3f,0xff1f,0xf802,0x4000,0x1c7f,0xfeaf,0xf802,
	0x4000,0x38ff,0xff1f,0xf002,0x4000,0x7ff8,0x021f,0xf002,
	0x4000,0xfff7,0xfdff,0xf002,0x4001,0xffef,0xfbff,0xd002,
	0x4003,0xffde,0x77ff,0xd002,0x4007,0xff80,0x0fff,0x9002,
	0x4007,0xffff,0xffff,0x1002,0x400f,0xffff,0xffff,0x2002,
	0x400f,0xffff,0xfffe,0x6002,0x4000,0x8084,0x2020,0x6002,
	0x4000,0x8084,0x2020,0xa002,0x4000,0x8084,0x2021,0x0002,
	0x4000,0x9c84,0x2722,0x0002,0x4000,0x808c,0x2024,0x0002,
	0x4000,0x8094,0x2024,0x0002,0x4000,0x80a0,0x2028,0x0002,
	0x4000,0x80c0,0x2030,0x0002,0x4000,0xff80,0x3fe0,0x0002,
	0x4000,0x4100,0x1040,0x0002,0x4000,0x0000,0x0000,0x0002,
	0x4000,0x0000,0x0000,0x0002,0x4000,0x0000,0x0000,0x0002,
	0x4000,0x0000,0x0000,0x0002,0x4042,0x3800,0x0000,0x0002,
	0x4024,0x2400,0x0004,0x2002,0x4024,0x220f,0x0704,0x4002,
	0x4018,0x2210,0x8804,0x8002,0x4018,0x2220,0x8805,0x0002,
	0x7f98,0x223f,0x0e07,0x83fe,0x0018,0x2220,0x0104,0x4000,
	0x0024,0x2220,0x0104,0x2000,0x0024,0x2420,0x0104,0x2000,
	0x0042,0x381e,0x1e04,0x2000,0x0000,0x0000,0x0000,0x0000
SHAR_EOF
fi
if test -f 'gr.xbm'
then
	echo shar: "will not over-write existing file 'gr.xbm'"
else
cat << \SHAR_EOF > 'gr.xbm'
#define x_width 32
#define x_height 32
static char x_bits[] = {
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
   0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
   0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa};
SHAR_EOF
fi
if test -f 'xlogo64'
then
	echo shar: "will not over-write existing file 'xlogo64'"
else
cat << \SHAR_EOF > 'xlogo64'
#define xlogo64_width 64
#define xlogo64_height 64
static char xlogo64_bits[] = {
   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x01, 0x00,
   0x00, 0x00, 0x00, 0xf8, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c,
   0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xf8, 0xff, 0x07, 0x00,
   0x00, 0x00, 0x00, 0x1f, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f,
   0xe0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xc0, 0xff, 0x3f, 0x00,
   0x00, 0x00, 0xc0, 0x07, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x03,
   0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xff, 0xff, 0x00,
   0x00, 0x00, 0xf8, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00,
   0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0xfc, 0xff, 0x03,
   0x00, 0x00, 0x3e, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x1f, 0x00,
   0x00, 0xf0, 0xff, 0x0f, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0x0f,
   0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xc0, 0x07, 0x00,
   0x00, 0xc0, 0xff, 0x3f, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0xff, 0x7f,
   0x00, 0xf0, 0x01, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0xf8, 0x00, 0x00,
   0x00, 0x00, 0xff, 0xff, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
   0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x3e, 0x00, 0x00,
   0x00, 0x00, 0xfc, 0xff, 0x03, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
   0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xcf, 0x07, 0x00, 0x00,
   0x00, 0x00, 0xe0, 0xff, 0xcf, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
   0xe7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xf3, 0x01, 0x00, 0x00,
   0x00, 0x00, 0x80, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
   0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x7e, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0x07, 0x00, 0x00,
   0x00, 0x00, 0x80, 0xcf, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe7,
   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe7, 0xff, 0x1f, 0x00, 0x00,
   0x00, 0x00, 0xe0, 0xc3, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc1,
   0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x80, 0xff, 0x7f, 0x00, 0x00,
   0x00, 0x00, 0x7c, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00,
   0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0x01, 0x00,
   0x00, 0x00, 0x1f, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x80, 0x0f, 0x00,
   0xf8, 0xff, 0x07, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xf0, 0xff, 0x0f, 0x00,
   0x00, 0xe0, 0x03, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0x03, 0x00,
   0xe0, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0xff, 0x3f, 0x00,
   0x00, 0xf8, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x7c, 0x00, 0x00,
   0x80, 0xff, 0x7f, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00,
   0x00, 0x3e, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x1f, 0x00, 0x00,
   0x00, 0xfc, 0xff, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03,
   0xc0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0xe0, 0x03, 0x00, 0x00,
   0x00, 0xf0, 0xff, 0x0f, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f,
   0xf0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 0xf8, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xff, 0x3f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f,
   0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff};
SHAR_EOF
fi
if test -f 'Ent.icon'
then
	echo shar: "will not over-write existing file 'Ent.icon'"
else
cat << \SHAR_EOF > 'Ent.icon'
#define Enterprise_width 50
#define Enterprise_height 50
static char Enterprise_bits[] = {
   0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0x7f, 0xef, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xf7, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff,
   0xfb, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0x7f, 0xff, 0xf7,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00,
   0xfe, 0x7f, 0x00, 0xe0, 0x0f, 0x00, 0xf6, 0xfe, 0x03, 0x00, 0x00, 0xf0,
   0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xf0, 0x01, 0xff, 0xff, 0x3f, 0x00,
   0x00, 0xff, 0x81, 0xff, 0xff, 0xff, 0xff, 0xa9, 0xff, 0x81, 0xff, 0xff,
   0xff, 0xff, 0x01, 0xf0, 0xd5, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00,
   0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xfb, 0x1f,
   0x40, 0xe5, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xf7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfb, 0xff,
   0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff,
   0x7f, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xf3, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7,
   0xf3, 0xfc, 0x37, 0x9c, 0xf7, 0xff, 0xa7, 0x6d, 0xfb, 0xf3, 0x6d, 0xf3,
   0xff, 0xa7, 0x7d, 0xff, 0xf7, 0x6d, 0xf7, 0xff, 0x97, 0x7d, 0x0f, 0xf7,
   0x6e, 0xf7, 0xff, 0x97, 0x6d, 0xfb, 0x77, 0x6f, 0xf7, 0xff, 0xb7, 0xf3,
   0xfc, 0xb7, 0x9f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
   0xff, 0xff};
SHAR_EOF
fi
if test -f 'alert_qmark32.pr'
then
	echo shar: "will not over-write existing file 'alert_qmark32.pr'"
else
cat << \SHAR_EOF > 'alert_qmark32.pr'
/* Format_version=1, Width=32, Height=32, Depth=1, Valid_bits_per_item=16
 */
	0xAAAA,0xAAAA,
	0x5555,0x5555,
	0xAAAA,0xAAAA,
	0x5540,0x0555,
	0xAA80,0x02AA,
	0x5500,0x0155,
	0xAA00,0x00AA,
	0x5405,0x4055,
	0xAA0A,0xA02A,
	0x5405,0x5055,
	0xAA0A,0xA02A,
	0x5555,0x4055,
	0xAAAA,0x80AA,
	0x5555,0x0155,
	0xAAAA,0x02AA,
	0x5554,0x0555,
	0xAAA8,0x0AAA,
	0x5554,0x1555,
	0xAAA8,0x0AAA,
	0x5554,0x1555,
	0xAAA8,0x0AAA,
	0x5554,0x1555,
	0xAAAA,0xAAAA,
	0x5555,0x5555,
	0xAAAA,0xAAAA,
	0x5554,0x1555,
	0xAAA8,0x0AAA,
	0x5554,0x1555,
	0xAAA8,0x0AAA,
	0x5554,0x1555,
	0xAAAA,0xAAAA,
	0x5555,0x5555
SHAR_EOF
fi
if test -f 'calctool.icon'
then
	echo shar: "will not over-write existing file 'calctool.icon'"
else
cat << \SHAR_EOF > 'calctool.icon'
#define noname_width 64
#define noname_height 64
static char noname_bits[] = {
 0xa9,0xaa,0xaa,0xaa,0xaa,0x02,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x01,0x00,
 0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0x02,0x00,0x00,0xff,0xff,0xff,0xff,0x7f,0x01,
 0x00,0x00,0x01,0x00,0x00,0x00,0xc0,0x02,0x00,0x00,0xfd,0xff,0xff,0xff,0x5f,
 0x01,0x00,0x00,0x05,0x00,0x00,0x00,0xd0,0x02,0x00,0x00,0x05,0x00,0x00,0x00,
 0x50,0x01,0x00,0x00,0x05,0xc0,0x00,0x0c,0xd3,0x02,0x00,0x00,0x05,0x20,0x01,
 0x92,0x54,0x01,0x00,0x00,0x05,0xa0,0x01,0x9a,0xd6,0x02,0x00,0x00,0x05,0x60,
 0x01,0x96,0x55,0x01,0x00,0x00,0x05,0x20,0x21,0x92,0xd4,0x02,0x00,0x00,0x05,
 0xc0,0x20,0x0c,0x53,0x01,0x00,0x00,0x05,0x00,0x00,0x00,0xd0,0x02,0x00,0x00,
 0x05,0x00,0x00,0x00,0x50,0x01,0x00,0x00,0xfd,0xff,0xff,0xff,0xdf,0x02,0x00,
 0x00,0x01,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0xc0,0x02,
 0x00,0x00,0xfd,0xfb,0xf7,0xef,0x5f,0x01,0x00,0x00,0x05,0x0a,0x14,0x28,0xd0,
 0x02,0x00,0x00,0xf5,0xca,0x94,0x29,0x50,0x01,0x00,0x00,0x85,0x2a,0x55,0xaa,
 0xc8,0x02,0x00,0x00,0x45,0xca,0x54,0x2a,0x55,0x01,0x00,0x00,0x45,0x2a,0x95,
 0x2b,0xd2,0x02,0x00,0x00,0x25,0x2a,0x15,0x2a,0x55,0x01,0x00,0x00,0x25,0xca,
 0x94,0xa9,0xd8,0x02,0x00,0x00,0x05,0x0a,0x14,0x28,0x50,0x01,0x00,0x00,0xfd,
 0xfb,0xf7,0xef,0xdf,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x01,0x00,0x00,
 0xfd,0xfb,0xf7,0xef,0xdf,0x02,0x00,0x00,0x05,0x0a,0x14,0x28,0x50,0x01,0x00,
 0x00,0x45,0xea,0x95,0x29,0xd4,0x02,0x00,0x00,0x65,0x2a,0x54,0x28,0x52,0x01,
 0x00,0x00,0x55,0xea,0xd4,0x29,0xd2,0x02,0x00,0x00,0xf5,0x0a,0x55,0x2a,0x51,
 0x01,0x00,0x00,0x45,0x2a,0x55,0x2a,0xd1,0x02,0x00,0x00,0x45,0xca,0x94,0xa9,
 0x50,0x01,0x00,0x00,0x05,0x0a,0x14,0x28,0xd0,0x02,0x00,0x00,0xfd,0xfb,0xf7,
 0xef,0x5f,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0xc0,0x02,0x00,0x00,0xfd,0xfb,
 0xf7,0xef,0x5f,0x01,0x00,0x00,0x05,0x0a,0x14,0x28,0xd0,0x02,0x00,0x00,0x45,
 0xca,0x94,0x29,0x50,0x01,0x00,0x00,0x65,0x2a,0x55,0x2a,0xd0,0x02,0x00,0x00,
 0x45,0x0a,0x15,0xa9,0x57,0x01,0x00,0x00,0x45,0xca,0x14,0x2a,0xd0,0x02,0x00,
 0x00,0x45,0x2a,0x54,0x2a,0x50,0x01,0x00,0x00,0xe5,0xea,0x95,0x29,0xd0,0x02,
 0x00,0x00,0x05,0x0a,0x14,0x28,0x50,0x01,0x00,0x00,0xfd,0xfb,0xf7,0xef,0xdf,
 0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0xfd,0xfb,0xf7,0xef,
 0xdf,0x02,0x00,0x00,0x05,0x0a,0x14,0x28,0x50,0x01,0x00,0x00,0x65,0x0a,0x14,
 0x28,0xd0,0x02,0x00,0x00,0x95,0x0a,0x14,0x28,0x52,0x01,0x00,0x00,0xd5,0x0a,
 0xd4,0x2b,0xd2,0x02,0x00,0x00,0xb5,0x0a,0x14,0xa8,0x5f,0x01,0x00,0x00,0x95,
 0x8a,0xd4,0x2b,0xd2,0x02,0x00,0x00,0x65,0x8a,0x14,0x28,0x52,0x01,0x00,0x00,
 0x05,0x0a,0x14,0x28,0xd0,0x02,0x00,0x00,0xfd,0xfb,0xf7,0xef,0x5f,0x01,0x00,
 0x00,0x01,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,
 0x00,0x00};
SHAR_EOF
fi
if test -f 'calvin.icon'
then
	echo shar: "will not over-write existing file 'calvin.icon'"
else
cat << \SHAR_EOF > 'calvin.icon'
#define calvin_width 90
#define calvin_height 90

static char calvin_bits[] = {
 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x09, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x11, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x00, 0x41, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x7e, 0x00, 0x81, 0x10, 0x29, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x8c, 0x0f, 0x01, 0x09, 0x2a, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x18, 0x38, 0x01, 0x0a, 0x2a, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x70, 0x60, 0x01, 0x04, 0x44, 0x81, 0x01, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xc0, 0xc1, 0x01, 0x0c, 0x44, 0x61, 0x02, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x80, 0x1b, 0x02, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0xe0, 0x06, 0x02, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x20, 0xc0, 0x03, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x10, 0x00, 0x0f, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xfc, 0x87, 0x1f, 0x00, 0x10, 0x01, 0x30, 0x00, 0x00, 0x00,
 0x00, 0xfe, 0x03, 0x0c, 0x00, 0x00, 0x10, 0x93, 0x20, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x13, 0x27, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x08, 0x35, 0x1a, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x89, 0x2c, 0x02, 0x00, 0x00, 0x00,
 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x88, 0x20, 0x02, 0x00, 0x00, 0x00,
 0x00, 0xfe, 0x02, 0x00, 0x00, 0x70, 0x84, 0xc0, 0x01, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x00, 0x00, 0xc0, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x00, 0x00, 0xf8, 0x23, 0x02, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x00, 0x00, 0xbf, 0x23, 0x02, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0xf0, 0xe7, 0xc7, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x02, 0x18, 0xfc, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x04, 0xee, 0x1f, 0x78, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xf4, 0xfe, 0x0f, 0x88, 0x9f, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x8e, 0x8f, 0x0f, 0x04, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xf9, 0x8f, 0x0f, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xbf, 0x8d, 0x0f, 0x1c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x9f, 0xfd, 0x07, 0xe2, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x9f, 0xff, 0x03, 0x02, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xfe, 0xf1, 0x01, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xfe, 0x00, 0x18, 0x06, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xbc, 0x00, 0x10, 0x39, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x88, 0x00, 0x10, 0xc1, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x88, 0x31, 0x10, 0x03, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x08, 0x0e, 0x88, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x08, 0x00, 0x84, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x08, 0x00, 0x83, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x08, 0xf8, 0xc0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x7e, 0x08, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
 0xc0, 0xc1, 0x10, 0x00, 0x38, 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x20, 0x00, 0x71, 0xc0, 0x07, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x20, 0x13, 0x81, 0x3f, 0x38, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
 0xe0, 0x08, 0x02, 0x07, 0xc0, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x40, 0x44, 0x82, 0x38, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x20, 0x44, 0x44, 0xc1, 0x03, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x20, 0x46, 0xa4, 0x00, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x20, 0xa6, 0xa8, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0xc0, 0x99, 0xb0, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x80, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xc1, 0xff, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x51, 0x00, 0xfc, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x4a, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x24, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xe0, 0xff, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x20, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x20, 0x00, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x20, 0x00, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x20, 0xe0, 0x7f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x20, 0x00, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x20, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xe0, 0xff, 0x3f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x20, 0x00, 0xc0, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x40, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x40, 0xfc, 0x3f, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x40, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xf0, 0xff, 0xbf, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x30, 0xf8, 0x40, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xd0, 0x47, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x80, 0xff, 0xff, 0x71, 0xf1, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
 0x00, 0x80, 0xff, 0x7f, 0x1f, 0xce, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00
 };
SHAR_EOF
fi
if test -f 'dither'
then
	echo shar: "will not over-write existing file 'dither'"
else
cat << \SHAR_EOF > 'dither'
#define dither_width 32
#define dither_height 32
static char dither_bits[] = {
   0x29, 0xfd, 0x96, 0x64, 0xf9, 0xc9, 0xfc, 0xef, 0xd3, 0x5c, 0xdc, 0x45,
   0xbf, 0x79, 0xb3, 0x9f, 0xb7, 0x3c, 0xd2, 0x22, 0xd4, 0xfd, 0xfb, 0xf7,
   0xe1, 0xd5, 0xfb, 0xe3, 0x38, 0xbd, 0xef, 0xd2, 0x73, 0xdb, 0x5e, 0xd4,
   0xbb, 0xda, 0x23, 0x22, 0xde, 0x2d, 0xc5, 0xf2, 0xd0, 0x99, 0xfd, 0xb7,
   0xdf, 0xfb, 0xdf, 0x06, 0xd9, 0x90, 0xcc, 0x27, 0xf7, 0xf5, 0xcf, 0xf6,
   0xcb, 0xea, 0xde, 0x1f, 0xb4, 0xa1, 0xcd, 0xfc, 0xfd, 0x7f, 0xbd, 0xea,
   0xd5, 0x5b, 0x00, 0x8c, 0x9d, 0x59, 0xd3, 0xdd, 0xf6, 0x79, 0xde, 0x4d,
   0xbf, 0x4b, 0xcc, 0x7d, 0xe4, 0xf8, 0xff, 0xcc, 0xa3, 0x7b, 0xc5, 0xad,
   0xb8, 0x35, 0xdf, 0xa4, 0xda, 0xfc, 0xfd, 0xdc, 0x91, 0x02, 0x03, 0x7e,
   0x38, 0x94, 0xf8, 0x03, 0xf9, 0xbb, 0x7f, 0x7e, 0xa5, 0xfd, 0x9d, 0xc7,
   0xdd, 0x34, 0x93, 0xec, 0x6d, 0x6a, 0xbb, 0x8b};
SHAR_EOF
fi
if test -f 'dither.xbm'
then
	echo shar: "will not over-write existing file 'dither.xbm'"
else
cat << \SHAR_EOF > 'dither.xbm'
#define dither_width 32
#define dither_height 32
static char dither_bits[] = {
   0x29, 0xcd, 0x94, 0x64, 0xf9, 0xc9, 0x3c, 0xeb, 0xd3, 0x5c, 0xdc, 0x45,
   0xbf, 0x7b, 0xb3, 0x9f, 0xb7, 0x76, 0xdd, 0x22, 0xd4, 0xd9, 0x6c, 0xf7,
   0x75, 0x53, 0xdb, 0x23, 0x6a, 0x75, 0x4e, 0xb2, 0xdb, 0x50, 0xdd, 0x97,
   0xbb, 0xdf, 0xa7, 0x3e, 0xde, 0x77, 0xbc, 0xf2, 0xd0, 0xba, 0x0c, 0xb5,
   0xdb, 0xb1, 0xdb, 0x26, 0x99, 0xb4, 0xdc, 0xa5, 0xf7, 0xf5, 0xaf, 0xf6,
   0xcb, 0xae, 0xba, 0x1b, 0x74, 0xf1, 0x95, 0xea, 0xd5, 0x3b, 0xb9, 0xf1,
   0xd5, 0x5b, 0x5c, 0x86, 0x9d, 0xd9, 0xd3, 0xdb, 0xf6, 0xf9, 0xd7, 0x4f,
   0xbf, 0x4b, 0x4c, 0x7d, 0xe4, 0x7c, 0x7f, 0xc6, 0xa3, 0xeb, 0xc5, 0xa7,
   0x9b, 0x35, 0xd7, 0xa6, 0x92, 0x52, 0x58, 0xc8, 0xd2, 0xec, 0xbf, 0x7e,
   0xbe, 0x95, 0xf1, 0x33, 0xfd, 0xbf, 0x5e, 0x4e, 0xa5, 0xed, 0xdd, 0xdb,
   0xdd, 0x24, 0x93, 0xe8, 0x6d, 0x7a, 0xbb, 0x8b};
SHAR_EOF
fi
if test -f 'icon_open.h'
then
	echo shar: "will not over-write existing file 'icon_open.h'"
else
cat << \SHAR_EOF > 'icon_open.h'
/*
 * xman - X window system manual page display program.
 *
 * $XConsortium: icon_open.h,v 1.2 88/09/06 17:48:06 jim Exp $
 * $Athena: icon_open.h,v 4.0 88/08/31 22:12:16 kit Exp $
 *
 * Copyright 1987, 1988 Massachusetts Institute of Technology
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of M.I.T. not be used in advertising or
 * publicity pertaining to distribution of the software without specific,
 * written prior permission.  M.I.T. makes no representations about the
 * suitability of this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 *
 * Author:    Chris D. Peterson, MIT Project Athena
 * Created:   January 29, 1988
 */

#define icon_open_width 30
#define icon_open_height 30
static char icon_open_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xf8, 0xdf, 0xfe, 0x07,
   0x3e, 0xfc, 0x0f, 0x1f, 0x06, 0x00, 0x00, 0x18, 0x06, 0x30, 0x03, 0x18,
   0xc6, 0x31, 0xe3, 0x18, 0x36, 0x32, 0x13, 0x1b, 0x06, 0x30, 0x03, 0x18,
   0xc6, 0xf1, 0xe3, 0x18, 0x36, 0xe2, 0x11, 0x1b, 0x06, 0x00, 0x00, 0x18,
   0xc6, 0xf1, 0xe3, 0x18, 0x36, 0x32, 0x13, 0x1b, 0x06, 0x30, 0x03, 0x18,
   0xc6, 0xf1, 0xe3, 0x18, 0x36, 0x32, 0x10, 0x1b, 0x06, 0x30, 0x00, 0x18,
   0xc6, 0x01, 0xe0, 0x18, 0x36, 0x3a, 0x17, 0x1b, 0x06, 0xf8, 0x07, 0x18,
   0xc6, 0xd9, 0xe6, 0x18, 0x36, 0xda, 0x16, 0x1b, 0x06, 0x18, 0x06, 0x18,
   0x06, 0x18, 0x06, 0x18, 0xc6, 0x03, 0xf0, 0x18, 0xfe, 0x1f, 0xfe, 0x1f,
   0x3e, 0xfc, 0x0f, 0x1f, 0x06, 0xc0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00};
SHAR_EOF
fi
if test -f 'idraw.icon'
then
	echo shar: "will not over-write existing file 'idraw.icon'"
else
cat << \SHAR_EOF > 'idraw.icon'
#define ditroff_width 64
#define ditroff_height 64
static char ditroff_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
   0xff, 0xff, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0xf0, 0x3f, 0x01, 0x00,
   0x00, 0x01, 0x88, 0x88, 0x0c, 0xc0, 0x01, 0x00, 0x00, 0x01, 0x10, 0x11,
   0x83, 0x03, 0x07, 0x00, 0x00, 0x01, 0x44, 0xc4, 0x80, 0x03, 0x18, 0x00,
   0x00, 0x01, 0x20, 0x22, 0x80, 0x03, 0x20, 0x00, 0x00, 0x01, 0x00, 0x18,
   0xc0, 0x07, 0xc0, 0x00, 0x00, 0x01, 0x00, 0x04, 0xc0, 0x07, 0x00, 0x01,
   0x00, 0x41, 0x44, 0x06, 0xc0, 0x07, 0x00, 0x02, 0x00, 0x21, 0x22, 0x02,
   0xe0, 0x0f, 0x00, 0x02, 0x00, 0x89, 0x88, 0x01, 0xe0, 0x0f, 0x00, 0x04,
   0x00, 0x11, 0x91, 0x01, 0xf0, 0x1f, 0x00, 0x08, 0x00, 0x01, 0xc0, 0x00,
   0x30, 0x1f, 0x00, 0x08, 0x00, 0x01, 0x62, 0x00, 0x30, 0x1f, 0x00, 0x10,
   0x00, 0x89, 0x48, 0x00, 0x38, 0x3f, 0x00, 0x10, 0x00, 0x11, 0x31, 0x00,
   0x18, 0x3e, 0x00, 0x20, 0x00, 0x41, 0x24, 0x00, 0x1c, 0x7e, 0x00, 0x20,
   0x00, 0x21, 0x22, 0x00, 0x0c, 0x7c, 0x00, 0x20, 0x00, 0x01, 0x10, 0x00,
   0x0c, 0x7c, 0x00, 0x40, 0x00, 0x01, 0x10, 0x00, 0x0e, 0xfc, 0x00, 0x40,
   0x00, 0x41, 0x14, 0x00, 0x06, 0xf8, 0x00, 0x40, 0x00, 0x21, 0x12, 0x00,
   0xff, 0xff, 0x01, 0x40, 0x00, 0x89, 0x18, 0x00, 0xff, 0xff, 0x01, 0x40,
   0x00, 0x11, 0x11, 0x00, 0x03, 0xf0, 0x01, 0x40, 0x00, 0x41, 0x10, 0x80,
   0x03, 0xf0, 0x03, 0x40, 0x00, 0x01, 0x10, 0x80, 0x01, 0xe0, 0x03, 0x40,
   0x00, 0x89, 0x18, 0x80, 0x01, 0xe0, 0x03, 0x40, 0x00, 0x11, 0x31, 0xc0,
   0x01, 0xe0, 0x07, 0x20, 0x00, 0x41, 0x24, 0xc0, 0x00, 0xc0, 0x07, 0x20,
   0x00, 0x21, 0x22, 0xf0, 0x00, 0xc0, 0x0f, 0x20, 0x00, 0x01, 0x40, 0xfe,
   0x07, 0xf8, 0xff, 0x10, 0x00, 0x11, 0x51, 0xfe, 0x07, 0xf8, 0xff, 0x10,
   0x00, 0x41, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x21, 0xa2, 0x00,
   0x00, 0x00, 0x00, 0x38, 0x00, 0x89, 0x88, 0x01, 0x00, 0x00, 0x00, 0x7c,
   0x00, 0x11, 0x11, 0x03, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x01, 0x00, 0x06,
   0x00, 0x00, 0x00, 0xfe, 0x00, 0x21, 0x02, 0x06, 0x00, 0x00, 0x00, 0xff,
   0x00, 0x89, 0x88, 0x18, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x11, 0x11, 0x31,
   0x00, 0x00, 0xe0, 0xff, 0x00, 0x41, 0x44, 0xc0, 0x00, 0x00, 0xf8, 0xff,
   0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x00, 0x09, 0x88, 0x88,
   0x1c, 0xc0, 0xf1, 0xff, 0x00, 0x11, 0x11, 0x11, 0xf1, 0x3f, 0xe1, 0xff,
   0x00, 0x41, 0x44, 0x44, 0x44, 0x04, 0x81, 0xff, 0x00, 0x21, 0x02, 0x22,
   0x20, 0x22, 0x01, 0xff, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe,
   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, 0xff, 0xff, 0xff,
   0xff, 0xff, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x03, 0x02, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x81, 0x43, 0xc3, 0x41, 0x10, 0x00, 0x00, 0x00, 0x41, 0xc2, 0x24,
   0x42, 0x10, 0x00, 0x00, 0x00, 0x41, 0x42, 0x20, 0x42, 0x10, 0x00, 0x00,
   0x00, 0x41, 0x42, 0x20, 0x42, 0x12, 0x00, 0x00, 0x00, 0x41, 0x42, 0x20,
   0x42, 0x12, 0x00, 0x00, 0x00, 0x41, 0x42, 0x20, 0x43, 0x15, 0x00, 0x00,
   0x80, 0x83, 0x47, 0xc0, 0x82, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
SHAR_EOF
fi
if test -f 'moon.icon'
then
	echo shar: "will not over-write existing file 'moon.icon'"
else
cat << \SHAR_EOF > 'moon.icon'
#define moon_width 64
#define moon_height 64
static char noname_bits[] = {
 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 0xff,0xff,0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x10,0xf8,
 0xff,0xff,0xff,0xff,0x07,0x82,0xc4,0xe0,0xff,0xff,0xff,0xff,0x01,0x10,0x04,
 0x80,0xff,0xff,0xff,0xff,0x10,0x47,0x50,0x0d,0xff,0xff,0xff,0x7f,0xc0,0x21,
 0x02,0x15,0xfe,0xff,0xff,0x1f,0x20,0x36,0x44,0x31,0xf8,0xff,0xff,0x0f,0x69,
 0x8b,0xd8,0x9a,0xf0,0xff,0xff,0x07,0xec,0x1a,0xa0,0xe3,0xe0,0xff,0xff,0x27,
 0xa0,0x85,0x04,0x8f,0xe2,0xff,0xff,0x03,0x55,0x0b,0xf5,0x28,0xc5,0xff,0xff,
 0x41,0xa2,0x20,0x02,0x67,0x81,0xff,0xff,0x90,0x89,0x84,0x20,0x2d,0x10,0xff,
 0xff,0x04,0xb1,0x80,0x04,0x0a,0x04,0xff,0x7f,0x40,0x5a,0x52,0x10,0x40,0x01,
 0xfe,0x7f,0x14,0x81,0x48,0x04,0x99,0x48,0xfe,0x3f,0xa0,0x62,0x52,0x52,0x06,
 0x08,0xfc,0x3f,0x2a,0x02,0x89,0x00,0x22,0x42,0xfc,0x3f,0x16,0xa4,0x2d,0x42,
 0x82,0x04,0xfc,0x1f,0x81,0x44,0x06,0xdd,0x0d,0x20,0xf8,0x1f,0x14,0x82,0x30,
 0x20,0x10,0x04,0xf8,0x9f,0x00,0x9f,0x0a,0x33,0x65,0x91,0xf8,0x1f,0xc9,0x28,
 0x00,0x0c,0x80,0x00,0xf8,0x1f,0x50,0x64,0x12,0x54,0x04,0x01,0xf9,0x1f,0xc9,
 0xa0,0x00,0x08,0x10,0x03,0xf8,0x9f,0x84,0x19,0x04,0x28,0x81,0x00,0xf8,0x1f,
 0x08,0xee,0x10,0x11,0x40,0x92,0xf8,0x1f,0xb5,0x50,0x01,0x62,0x38,0x00,0xf8,
 0x1f,0x56,0x08,0x02,0x48,0x87,0x00,0xf8,0x1f,0xa9,0x09,0x41,0x00,0x00,0x80,
 0xf8,0x1f,0x56,0x40,0x00,0x00,0x00,0x00,0xf8,0x9f,0x50,0x12,0x00,0x00,0x00,
 0x40,0xf8,0x1f,0xaa,0x20,0x11,0x00,0x40,0x0e,0xf8,0x1f,0x0c,0x05,0x00,0x20,
 0x90,0x11,0xf8,0x3f,0x90,0x02,0x00,0x00,0x40,0x10,0xfc,0x3f,0xc1,0x52,0x02,
 0x04,0x20,0x94,0xfc,0x3f,0x20,0x8c,0x00,0x00,0x21,0x0a,0xfc,0x7f,0x92,0x08,
 0xf2,0x21,0xa0,0x04,0xfe,0x7f,0x90,0x16,0x0c,0x02,0xc0,0x03,0xfe,0xff,0x48,
 0xa1,0x06,0x08,0x00,0x00,0xff,0xff,0x10,0x5a,0x01,0x30,0x00,0x08,0xff,0xff,
 0xb1,0xce,0x40,0x28,0x80,0x80,0xff,0xff,0xc3,0x93,0xe0,0x41,0x00,0xc0,0xff,
 0xff,0x47,0xc1,0x70,0x2c,0x20,0xe0,0xff,0xff,0x07,0x8a,0x80,0x28,0x00,0xe2,
 0xff,0xff,0x0f,0x0a,0x49,0x06,0x12,0xf0,0xff,0xff,0x1f,0x00,0x73,0x31,0x40,
 0xf8,0xff,0xff,0x7f,0x90,0x9e,0x87,0x00,0xfe,0xff,0xff,0xff,0x10,0x70,0x48,
 0x00,0xff,0xff,0xff,0xff,0x81,0x40,0x02,0x84,0xff,0xff,0xff,0xff,0x07,0x04,
 0x90,0xe0,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 0xff,0xff};
SHAR_EOF
fi
if test -f 'plonk.xbm'
then
	echo shar: "will not over-write existing file 'plonk.xbm'"
else
cat << \SHAR_EOF > 'plonk.xbm'
#define WIDTHxHEIGHT_width 60
#define WIDTHxHEIGHT_height 60
static char WIDTHxHEIGHT_bits[] = {
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
   0xcd, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x85, 0xf5, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xfb, 0x9d, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
   0x1d, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x3d, 0xf8, 0xdf, 0xff,
   0xff, 0xff, 0xff, 0xfb, 0x7d, 0x80, 0xef, 0xff, 0xff, 0x03, 0xf8, 0xfb,
   0xfd, 0x80, 0xf3, 0xff, 0xff, 0x00, 0xf0, 0xfb, 0x6d, 0x80, 0xc0, 0xff,
   0x3f, 0x00, 0xef, 0xfb, 0x1d, 0x02, 0xfc, 0xff, 0x1f, 0x80, 0xff, 0xfb,
   0x5d, 0x07, 0xfe, 0xff, 0x0b, 0xe0, 0xff, 0xfb, 0x7d, 0x0f, 0xe0, 0xff,
   0x03, 0xf0, 0xff, 0xfb, 0xfd, 0x67, 0xc8, 0xff, 0x03, 0xf8, 0xff, 0xfb,
   0xfd, 0x67, 0xd8, 0xff, 0x03, 0xfc, 0xff, 0xfb, 0xfd, 0x67, 0xc2, 0xff,
   0x03, 0xfe, 0xff, 0xfb, 0xfd, 0x6b, 0xc6, 0xff, 0x03, 0xff, 0xff, 0xfb,
   0xfd, 0xed, 0xb0, 0xff, 0x03, 0xfc, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0xfc,
   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfb,
   0xfd, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f, 0xef, 0xf3, 0xff, 0xff, 0xfb,
   0xfd, 0xff, 0x3f, 0xc6, 0xf0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x3f, 0x00,
   0xe0, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xfb,
   0xfd, 0xff, 0x1f, 0x10, 0x80, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x0f, 0x20,
   0x00, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x8f, 0xe4, 0x20, 0xfe, 0xff, 0xfb,
   0xfd, 0xff, 0x2f, 0x37, 0x48, 0xfe, 0xff, 0xfb, 0xfd, 0xff, 0x5b, 0x70,
   0xdc, 0xfd, 0xff, 0xfb, 0xfd, 0xff, 0x58, 0x90, 0x66, 0xfd, 0xff, 0xfb,
   0xfd, 0xff, 0xb8, 0x15, 0x37, 0xfb, 0xff, 0xfb, 0xfd, 0x7f, 0xb4, 0xd6,
   0x1e, 0xfa, 0xff, 0xfb, 0xfd, 0x3f, 0xf6, 0xc6, 0xdd, 0xf4, 0xff, 0xfb,
   0xfd, 0xef, 0x57, 0xa7, 0x51, 0xf4, 0xff, 0xfb, 0xfd, 0xf7, 0x10, 0xb7,
   0x4b, 0xf1, 0xff, 0xfb, 0xfd, 0x5b, 0xa9, 0xbb, 0xcf, 0xe9, 0xff, 0xfb,
   0xfd, 0x1d, 0xcd, 0xbb, 0xd7, 0xc9, 0xff, 0xfb, 0xfd, 0xed, 0xbf, 0x3b,
   0xcf, 0x93, 0xff, 0xfb, 0xfd, 0xee, 0xaf, 0xbd, 0x9f, 0x32, 0xff, 0xfb,
   0x3d, 0xff, 0xb3, 0xfd, 0xff, 0x5e, 0xfe, 0xfb, 0x9d, 0xf7, 0xdf, 0xfd,
   0xff, 0xfe, 0xfc, 0xfb, 0xdd, 0xff, 0xff, 0xfc, 0xff, 0x5d, 0xf9, 0xfb,
   0xc5, 0xff, 0xff, 0xfc, 0xff, 0xf3, 0xe1, 0xfb, 0xfd, 0xff, 0xff, 0xff,
   0xff, 0xef, 0x9f, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfb,
   0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xb5, 0x85, 0xf7, 0xc3,
   0xbb, 0xbb, 0x6d, 0xfb, 0xad, 0x76, 0xf7, 0xbd, 0xb3, 0xdb, 0xab, 0xfb,
   0x1d, 0x77, 0xf7, 0xbd, 0xab, 0xdb, 0xc7, 0xfb, 0x05, 0x74, 0xf7, 0xbd,
   0x9b, 0xe3, 0x01, 0xfb, 0x1d, 0x87, 0xf7, 0xbd, 0xbb, 0xdb, 0xc7, 0xfb,
   0xaf, 0xf6, 0xf7, 0xbd, 0xbb, 0xbb, 0xab, 0xfb, 0xb7, 0xf5, 0x87, 0xc3,
   0xbb, 0xbb, 0x6d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
SHAR_EOF
fi
if test -f 'scrawl.xbm'
then
	echo shar: "will not over-write existing file 'scrawl.xbm'"
else
cat << \SHAR_EOF > 'scrawl.xbm'
#define x_icon_width 64
#define x_icon_height 64
static char x_icon_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
   0x08, 0xe0, 0x00, 0x38, 0x04, 0x24, 0x00, 0x00, 0x08, 0x10, 0x61, 0x44,
   0x04, 0x24, 0x00, 0x00, 0x70, 0x10, 0x98, 0x44, 0x44, 0x24, 0x00, 0x00,
   0x80, 0x10, 0x08, 0x44, 0x44, 0x24, 0x00, 0x00, 0x00, 0x11, 0x09, 0x64,
   0x48, 0x22, 0x00, 0x00, 0x08, 0xe1, 0x08, 0x98, 0xb0, 0xe1, 0x01, 0x00,
   0xf0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03,
   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
   0x80, 0x00, 0x00, 0x02, 0x00, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02,
   0x00, 0xfe, 0x03, 0x00, 0x80, 0x00, 0x00, 0x02, 0x80, 0x01, 0x1e, 0x00,
   0x80, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, 0x02,
   0x60, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x02, 0x20, 0x00, 0x40, 0x00,
   0x80, 0x00, 0x00, 0x02, 0x30, 0x00, 0xc0, 0x00, 0x80, 0x00, 0x00, 0x02,
   0x10, 0x00, 0x80, 0x01, 0x80, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x01,
   0x80, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x02,
   0x08, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x02,
   0x80, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x02,
   0x04, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x02,
   0x80, 0x00, 0x00, 0x02, 0x18, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x02,
   0x30, 0x00, 0x00, 0x06, 0x80, 0xff, 0xff, 0x03, 0xc0, 0x07, 0xc0, 0x03,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xe0, 0x1b, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x1f, 0x00,
   0x00, 0x00, 0x18, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x80, 0x00, 0x0c, 0x00,
   0x00, 0x04, 0x00, 0x00, 0x40, 0x01, 0xe4, 0x01, 0x00, 0x06, 0x00, 0x00,
   0x20, 0x02, 0x3c, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10, 0x04, 0x00, 0x0c,
   0x00, 0xc6, 0x1f, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x24, 0x20, 0x00,
   0x04, 0x10, 0xfc, 0x0f, 0xf0, 0x1f, 0x20, 0x00, 0xfe, 0x1f, 0x02, 0x00,
   0x18, 0x30, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xc0, 0x21, 0x00,
   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf9, 0x07,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x0c,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x20, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x83, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
SHAR_EOF
fi
if test -f 'xchess.icon'
then
	echo shar: "will not over-write existing file 'xchess.icon'"
else
cat << \SHAR_EOF > 'xchess.icon'
#define icon_width 48
#define icon_height 48
static char icon_bits[] = {
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80,
   0xc1, 0xff, 0xff, 0xff, 0xff, 0x83, 0x41, 0x00, 0x00, 0x00, 0x00, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82, 0x41, 0xf0, 0xf0, 0xf0, 0xf0, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82, 0x41, 0x0f, 0x0f, 0x0f, 0x0f, 0x82,
   0x41, 0x00, 0x00, 0x00, 0x00, 0x82, 0xc1, 0xff, 0xff, 0xff, 0xff, 0x83,
   0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41, 0xc4, 0x89, 0x3c, 0xcf, 0x83,
   0x41, 0x24, 0x88, 0x04, 0x41, 0x80, 0x81, 0x22, 0x88, 0x04, 0x41, 0x80,
   0x01, 0x21, 0xf8, 0x1c, 0xcf, 0x83, 0x81, 0x22, 0x88, 0x04, 0x08, 0x82,
   0x41, 0x24, 0x88, 0x04, 0x08, 0x82, 0x41, 0xc4, 0x89, 0x3c, 0xcf, 0x83,
   0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
SHAR_EOF
fi
if test -f 'xlogomenu'
then
	echo shar: "will not over-write existing file 'xlogomenu'"
else
cat << \SHAR_EOF > 'xlogomenu'
#define noname_width 64
#define noname_height 64
static char noname_bits[] = {
 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xfe,0xff,0x01,0x00,0x00,0x00,0x00,
 0xf8,0xfc,0xff,0x03,0x00,0x00,0x00,0x00,0x7c,0xf8,0xff,0x07,0x00,0x00,0x00,
 0x00,0x3e,0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x1f,0xf0,0xff,0x0f,0x00,0x00,
 0x00,0x80,0x0f,0xe0,0xff,0x1f,0x00,0x00,0x00,0x80,0x0f,0xc0,0xff,0x3f,0x00,
 0x00,0x00,0xc0,0x07,0xc0,0xff,0x3f,0x00,0x00,0x00,0xe0,0x03,0x80,0xff,0x7f,
 0x00,0x00,0x00,0xf0,0x01,0x00,0xff,0xff,0x00,0x00,0x00,0xf8,0x00,0x00,0xfe,
 0xff,0x01,0x00,0x00,0xf8,0x00,0x00,0xfe,0xff,0x01,0x00,0x00,0x7c,0x00,0x00,
 0xfc,0xff,0x03,0x00,0x00,0x3e,0x00,0x00,0xf8,0xff,0x07,0x00,0x00,0x1f,0x00,
 0x00,0xf0,0xff,0x0f,0x00,0x80,0x0f,0x00,0x00,0xf0,0xff,0x0f,0x00,0xc0,0x07,
 0x00,0x00,0xe0,0xff,0x1f,0x00,0xc0,0x07,0x00,0x00,0xc0,0xff,0x3f,0x00,0xe0,
 0x03,0x00,0x00,0x80,0xff,0x7f,0x00,0xf0,0x01,0x00,0x00,0x80,0xff,0x7f,0x00,
 0xf8,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x7c,0x00,0x00,0x00,0x00,0xfe,0xff,
 0x01,0x7c,0x00,0x00,0x00,0x00,0xfc,0xff,0x03,0x3e,0x00,0x00,0x00,0x00,0xfc,
 0xff,0x03,0x1f,0x00,0x00,0x00,0x00,0xf8,0xff,0x87,0x0f,0x00,0x00,0x00,0x00,
 0xf0,0xff,0xcf,0x07,0x00,0x00,0x00,0x00,0xe0,0xff,0xcf,0x07,0x00,0x00,0x00,
 0x00,0xe0,0xff,0xe7,0x03,0x00,0x00,0x00,0x00,0xc0,0xff,0xf3,0x01,0x00,0x00,
 0x00,0x00,0x80,0xff,0xf9,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xfc,0x00,0x00,
 0x00,0x00,0x00,0x00,0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0xfe,0x01,
 0x00,0x00,0x00,0x00,0x00,0x3e,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x9f,0xff,
 0x07,0x00,0x00,0x00,0x00,0x80,0xcf,0xff,0x07,0x00,0x00,0x00,0x00,0xc0,0xe7,
 0xff,0x0f,0x00,0x00,0x00,0x00,0xc0,0xe7,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,
 0xc3,0xff,0x3f,0x00,0x00,0x00,0x00,0xf0,0xc1,0xff,0x3f,0x00,0x00,0x00,0x00,
 0xf8,0x80,0xff,0x7f,0x00,0x00,0x00,0x00,0x7c,0x00,0xff,0xff,0x00,0x00,0x00,
 0x00,0x7c,0x00,0xfe,0xff,0x01,0x00,0x00,0x00,0x3e,0x00,0xfe,0xff,0x01,0x00,
 0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,
 0x0e,0x00,0xc0,0x07,0x7e,0x00,0x06,0x00,0x0c,0x00,0xe0,0x03,0xcc,0x00,0x06,
 0x00,0x0c,0x00,0xe0,0x03,0xcc,0x3c,0x3f,0x8f,0x0f,0x00,0xf0,0x01,0x7c,0x60,
 0x86,0xd9,0x0c,0x00,0xf8,0x00,0x6c,0x7c,0x86,0xdf,0x0c,0x00,0x7c,0x00,0xcc,
 0x66,0x86,0xc1,0x0c,0x00,0x3e,0x00,0xcc,0x66,0xa6,0xd9,0x0c,0x00,0x3e,0x00,
 0xde,0xfd,0x1c,0x8f,0x0f,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,
 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
 0x03,0x00,0x00,0x00,0xf0,0xff,0x0f,0xe0,0x03,0x00,0x00,0x00,0xe0,0xff,0x1f,
 0xf0,0x01,0x00,0x00,0x00,0xe0,0xff,0x1f,0xf8,0x00,0x00,0x00,0x00,0xc0,0xff,
 0x3f,0x7c,0x00,0x00,0x00,0x00,0x80,0xff,0x7f,0x3e,0x00,0x00,0x00,0x00,0x00,
 0xff,0xff};
SHAR_EOF
fi
if test -f 'xqmark'
then
	echo shar: "will not over-write existing file 'xqmark'"
else
cat << \SHAR_EOF > 'xqmark'
#define noname_width 32
#define noname_height 32
static char noname_bits[] = {
 0x55,0x55,0x55,0x55,0xaa,0xaa,0xaa,0xaa,0x55,0x55,0x55,0x55,0xaa,0x02,0xa0,
 0xaa,0x55,0x01,0x40,0x55,0xaa,0x00,0x80,0xaa,0x55,0x00,0x00,0x55,0x2a,0xa0,
 0x02,0xaa,0x55,0x50,0x05,0x54,0x2a,0xa0,0x0a,0xaa,0x55,0x50,0x05,0x54,0xaa,
 0xaa,0x02,0xaa,0x55,0x55,0x01,0x55,0xaa,0xaa,0x80,0xaa,0x55,0x55,0x40,0x55,
 0xaa,0x2a,0xa0,0xaa,0x55,0x15,0x50,0x55,0xaa,0x2a,0xa8,0xaa,0x55,0x15,0x50,
 0x55,0xaa,0x2a,0xa8,0xaa,0x55,0x15,0x50,0x55,0xaa,0x2a,0xa8,0xaa,0x55,0x55,
 0x55,0x55,0xaa,0xaa,0xaa,0xaa,0x55,0x55,0x55,0x55,0xaa,0x2a,0xa8,0xaa,0x55,
 0x15,0x50,0x55,0xaa,0x2a,0xa8,0xaa,0x55,0x15,0x50,0x55,0xaa,0x2a,0xa8,0xaa,
 0x55,0x55,0x55,0x55,0xaa,0xaa,0xaa,0xaa};
SHAR_EOF
fi
cd ..
if test -f 'patchlevel.h'
then
	echo shar: "will not over-write existing file 'patchlevel.h'"
else
cat << \SHAR_EOF > 'patchlevel.h'
#define PATCHLEVEL 0
SHAR_EOF
fi
if test -f 'xdesk.1'
then
	echo shar: "will not over-write existing file 'xdesk.1'"
else
cat << \SHAR_EOF > 'xdesk.1'
.de EX		\"Begin example
.ne 5
.if n .sp 1
.if t .sp .5
.nf
.in +.5i
..
.de EE
.fi
.in -.5i
.if n .sp 1
.if t .sp .5
..
.TH XDESK
.SH NAME
xdesk \- desktop script execution 
.SH SYNOPSIS
\f3xcalc\f1 config_file
.sp
.SH DESCRIPTION
xdesk is a simple  utility which allows the workstation programmer to 
execute a command by "clicking" on a displayed X-bitmap format "icon".
.sp
.SH OPTIONS
.PP
.TP 8
.B \fB-w\fP[cell_width]
This option specifies the width which will be allocated on the canvas
plane for each bitmap image. If none is specified, the default value is
64 pixels.
.PP
.TP 8
.B \fB-h\fP[cell_height]
This option specifies the height which will be allocated on the canvas
plane for each bitmap image. If none is specified, the default value is
64 pixels.
.PP
.TP 8
.B \fB-p\fP[page_width]
This option specifies the length of the horizontal scrollbar. The default
value is five (5).
.PP
.TP 8
.B \fB-l\fP[page_length]
This option specifies the length of the vertical scrollbar. The default
value is five (5).
.PP
.TP 8
.B \fB-r\fP[max_rows]
This option specifies the  maximum size of the  canvas in "cells" per
row. The default is sixteen.
.PP
.TP 8
.B \fB-c\fP[max_cols]
This option specifies the  maximum size of the  canvas in "cells" per
column. The default is eight.
.PP
.TP 8
.B \fB-s\fP[v/h]
This option will turn off either the horizontal or verical scrollbar.
The default fot both is "on".
.PP
.TP 8
.B \fB-d\f1
Put dotted borders around every bitmap image.

.PP
.TP 8
.B \fB-t "title"\f1
This option changes the frame header to the specified "title".
The default value is the name of the executable.
.PP
.TP 8
.B \fBconfig-file\f1
This option specifies which  config-file is to be used for display 
of x-bitmap images. The format of the config file is as follows:
.RS
.nf
!comments
/wherever/bitmap-name,system-executable command-line &
        .
        .
        .
.fi
.RE
.LP
\fINOTE:
.LP
It is highly reccommended that the ampersand be included, as otherwise
the exiting process  may cause keyboard focus to be lost!!!\f1
.sp
.PP
.SH INSTALLATION
.PP
Xdesk requires the Xview and X libraries. The makefile will make just 
one executable, named "xdesk". An Imake file is not included because 
there  are just two libraries, and one dependency.
.SH OPERATION
.PP
Xdesk utilizes both vertical and horizontal scrollbars.  During  
initialization the config file is read, and the corresponding bitmap names
are displayed in successive "cells" in the canvas window.  The starting size 
of this window is specified by the "-p", and "-l" options (explained
above). However, window resizing is supported.
.PP
.sp 2
.SH "SEE ALSO"
\f3X\f1(1), \f3system\f1(3)
.sp
.SH BUGS
.PP
The desktop should have several options which currently aren't implemented,
such as re-scanning  of the  config file, and maybe a scrollable console
window, rather than depending on the parent window for status information.
.PP
This application should really be implemented exclusively with the X Toolkit.  
However, the author liked the Xview implementation of scrollbars much
better :-).
.sp
.SH COPYRIGHT
Copyright 1990, The Author.
.br
See \f3X(1)\f1 for a full statement of rights and permissions.
.sp
.SH AUTHOR
Kevin Carothers
SHAR_EOF
fi
if test -f 'xdesk.c'
then
	echo shar: "will not over-write existing file 'xdesk.c'"
else
cat << \SHAR_EOF > 'xdesk.c'
/*
 */
#include <stdio.h>
#include <X.h>
#include <Xlib.h>   /* Using Xlib graphics */
#include <Xutil.h>   
#include <xview/xview.h>
#include <xview/canvas.h>
#include <xview/scrollbar.h>
#include <xview/svrimage.h>
#include <xview/xv_xrect.h>
#include "xdesk.h"


#define CELL_W        64
#define CELL_H        64
#define CELLS_PHP      5 /* when paging w/scrollbar */
#define CELLS_PVP      5 /* when paging w/scrollbar */
#define CELLS_PR       8
#define CELLS_PC      16

#define PTMAX	     200

int	Cell_width = CELL_W;
int	Cell_height = CELL_H;
int	Cells_per_hor_page = CELLS_PHP;
int	Cells_per_ver_page = CELLS_PVP;
int	Cells_per_row = CELLS_PR;
int	Cells_per_col = CELLS_PC;
int 	Scr_h = TRUE;	/* Horiz. Scrollbar ON */
int 	Scr_v = TRUE;	/* Vert. Scrollbar ON */
int 	Dots = FALSE;	/* Dot the individual cells */

Fptr   		*f_str;

extern	char	*malloc();
int	Clicked_icon();

short closed_icon[] = {
#include "icons/Xdesk.icon"
 };


Pixmap          cell_map, icon_map; /* pixmap copied onto canvas window */
Pixmap		clr_map;

Scrollbar       horiz_scrollbar;
Scrollbar       vert_scrollbar;
GC              gc, revgc;             /* General usage GC */
XGCValues       gcvalues;

char		*p;

main(argc, argv)
int argc;
char *argv[];
{
    Server_image        closed_image;
    Frame       frame;
    Canvas      canvas;
    void        repaint_proc();
    short           x, y, pt = 0;
    XPoint          points[256]; /* keep Xlib calls to a minimum */
    char buf[80];
    Display *dpy;
    Icon	icon;
    unsigned int  loc_b, loc_x, loc_y, loc_h, loc_w, x_hot, y_hot;
    int    i, ix, iy;
    char   lhs;
    int    rhs;
    char   *bp;
    char   frame_lab[100];
    char   filename[100];
    Fptr	*pp;
    int	   status;
    unsigned int	depth;
    Window DummyWin;

    /* Initialize, create frame and canvas... */
    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);

/*
 Scan thru args
 */
    strcpy(frame_lab, argv[0]);
    *filename = '\0';
    for(i=1; i < argc; i++) {
	bp = buf;
	strcpy(buf, *(argv+i));

	if (*bp == '-') {
	   bp++;
	   lhs = *bp++; 	/* step past '-f' part */
	   if (lhs == 's')
		rhs = (*bp=='v') ? 1 : (*bp=='h') ? 2 : 0;
	   else if (lhs == 'd')
		Dots = TRUE;
	   else
	       rhs = atoi(bp);
	       

	   switch (lhs)
		{
		case ('s'):	/* Scrollbar switches */
		   if (!rhs)
			p_usage();
		   else if (rhs == 1)
			Scr_v = FALSE;
		   else if (rhs == 2)
			Scr_h = FALSE;
		    break;
		case ('w'):	/* Width of cell */
		   if (!rhs)
			p_usage();
		    Cell_width = rhs;
		    break;
		case ('h'):	/* Height of cell */
		   if (!rhs)
			p_usage();
		    Cell_height = rhs;
		    break;
		case ('p'):	/* Horizontal page  */
		   if (!rhs)
			p_usage();
		    Cells_per_hor_page = rhs;
		    break;
		case ('l'):	/* length of page  */
		   if (!rhs)
			p_usage();
		    Cells_per_ver_page = rhs;
		    break;
		case ('r'):	/* Max. Rows  */
		   if (!rhs)
			p_usage();
		    Cells_per_row = rhs;
		    break;
		case ('c'):	/* Max. Cols  */
		   if (!rhs)
			p_usage();
		    Cells_per_col = rhs;
		    break;
		case ('t'):	/* Max. Cols  */
		    if (i >= (argc-1))
			p_usage();

		    i++;
	   	    strcpy(frame_lab, argv[i]);
		    break;
		case ('d'):	/* Dots on/off */
		    break;

		default:
		    p_usage();
		}
	   }
	else  {
	   strcpy(filename, bp);
	   }
	}

    frame = (Frame)xv_create(XV_NULL, FRAME,
        FRAME_LABEL,            frame_lab,
        FRAME_SHOW_FOOTER,      TRUE,
        NULL);

    canvas = (Canvas)xv_create(frame, CANVAS,
        XV_WIDTH,               Cell_width * Cells_per_hor_page,
        XV_HEIGHT,              Cell_height * Cells_per_ver_page,
        CANVAS_WIDTH,           Cell_width * Cells_per_row + 1,
        CANVAS_HEIGHT,          Cell_height * Cells_per_col + 1,
        CANVAS_AUTO_EXPAND,     FALSE,
        CANVAS_AUTO_SHRINK,     FALSE,
        CANVAS_RETAINED,        FALSE,
        CANVAS_X_PAINT_WINDOW,  TRUE,
        CANVAS_REPAINT_PROC,    repaint_proc,
        OPENWIN_AUTO_CLEAR,     FALSE,
        NULL);

  	xv_set (canvas_paint_window(canvas),
        WIN_EVENT_PROC,         Clicked_icon,
        WIN_CONSUME_EVENTS,
           WIN_MOUSE_BUTTONS,
            NULL,
        NULL);

    closed_image = (Server_image) xv_create(NULL, SERVER_IMAGE,
        XV_WIDTH,       64,
        XV_HEIGHT,      50,
        SERVER_IMAGE_BITS,      closed_icon,
        NULL);

    icon = (Icon) xv_create(frame, ICON,
        ICON_IMAGE,      closed_image,
        XV_X,            100,
        XV_Y,            100,
        NULL);

    xv_set(frame, FRAME_ICON, icon, NULL);


    (void) Xd_getem(&f_str, filename);
    if (f_str == (Fptr *) NULL)
	exit();

    if (Scr_v)
 	vert_scrollbar = xv_create(canvas, SCROLLBAR,
	    SCROLLBAR_DIRECTION,            SCROLLBAR_VERTICAL,
	    SCROLLBAR_PIXELS_PER_UNIT,      Cell_height,
	    SCROLLBAR_OBJECT_LENGTH,        Cells_per_col,
	    SCROLLBAR_PAGE_LENGTH,          Cells_per_ver_page,
	    SCROLLBAR_VIEW_LENGTH,          Cells_per_ver_page,
	    NULL);

    if (Scr_h)
	horiz_scrollbar = xv_create(canvas, SCROLLBAR,
	    SCROLLBAR_DIRECTION,            SCROLLBAR_HORIZONTAL,
	    SCROLLBAR_PIXELS_PER_UNIT,      Cell_width,
	    SCROLLBAR_OBJECT_LENGTH,        Cells_per_row,
	    SCROLLBAR_PAGE_LENGTH,          Cells_per_hor_page,
	    SCROLLBAR_VIEW_LENGTH,          Cells_per_hor_page,
	    NULL);

    dpy = (Display *)xv_get(canvas, XV_DISPLAY);
    XGetGeometry(dpy, DefaultRootWindow(dpy), &DummyWin, 
	&loc_x, &loc_y, &loc_w, &loc_h, &loc_b, &depth);

    cell_map = XCreatePixmap(dpy, DefaultRootWindow(dpy),
	Cells_per_row * Cell_width + 1,
	Cells_per_col * Cell_height + 1,
	depth); /* We only need a 1-bit deep pixmap */

    gcvalues.graphics_exposures = True;
    gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
    gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
    gcvalues.plane_mask = 1L;

    gc = XCreateGC(dpy, cell_map,
	GCForeground|GCBackground|GCGraphicsExposures, &gcvalues);

    /* XSetWindowBackground(dpy,  DefaultRootWindow(dpy), 0L); */

    gcvalues.foreground = WhitePixel(dpy, DefaultScreen(dpy));
    gcvalues.background = BlackPixel(dpy, DefaultScreen(dpy));


    revgc = XCreateGC(dpy, DefaultRootWindow(dpy),
	GCForeground|GCBackground|GCGraphicsExposures, &gcvalues);

    pt = 0;

    for (ix = pt = 0; ix <= (Cells_per_row * Cell_width); ix++) 
         for (iy=0; iy <= (Cells_per_col * Cell_height); iy++) {
	    points[pt].x = (short) ix;     points[pt].y = (short) iy;
	    if (++pt == PTMAX) {
		XDrawPoints(dpy, cell_map, revgc, 
		    points, pt, CoordModeOrigin);
		pt = 0;
	    }
	 }
	
    if (pt) /* flush remaining points */
	XDrawPoints(dpy, cell_map, revgc,
		points, pt, CoordModeOrigin); 
 
    if (Dots) {
	for (x = 0; x <= (Cell_width * Cells_per_row); x += 2) 
	    for (y = 0; y <= Cell_height * Cells_per_col; y += 2) {

		if (x % Cell_width != 0 && y % Cell_height != 0)
		    continue;

		points[pt].x = x;     points[pt].y = y;

		if (++pt == PTMAX) {
		      XDrawPoints(dpy, cell_map, gc,
			points, pt, CoordModeOrigin); 
		      pt = 0;
		      }
		}
	if (pt) /* flush remaining points */
	    XDrawPoints(dpy, cell_map, gc,
			points, pt, CoordModeOrigin); 
  	}

    pp = f_str;
    x = y = 0; 

    while (pp->fnext != (Fptr *) 0) 
	{
	icon_map = XCreatePixmap(dpy, DefaultRootWindow(dpy),
	    Cell_width + 5, Cell_height + 5, depth); /* 1-bit deep pixmap */

	if(XReadBitmapFile(dpy, icon_map, pp->fname,
		&loc_w, &loc_h, &icon_map, &x_hot, &y_hot) != BitmapSuccess)
	    {
	    printf("Error reading bitmap file \"%s\"\n",  pp->fname);
	    exit();
	    }

#ifdef XXXY
	printf("fname = %s, x = %d, y= %d\n", pp->fname, loc_w, loc_h);
#endif
        pp->x_loc = x+1;    /* Save for clicking coordinates later */
        pp->y_loc = y+1;

	XCopyPlane(dpy, icon_map, cell_map, gc, 1, 1, 
			Cell_width-1, Cell_height-1, 
			pp->x_loc, pp->y_loc, 1L);

	x += Cell_width;
	
	if(x >= Cell_width * Cells_per_row) {
	    x = 0;
	    y += Cell_height;
	    if(y >= Cell_height * Cells_per_col) {
		printf("CONFIG FILE TOO BIG!\n");
		exit();
		}
	    }

	status = XFreePixmap(dpy, icon_map);
	if ((pp = pp->fnext) == (Fptr *) 0)
	    break;

	} 

    /* shrink frame to minimal size and start notifier */
    window_fit(frame);
    xv_main_loop(frame);
}

void
repaint_proc(canvas, paint_window, dpy, win, xrects)
Canvas          canvas;
Xv_Window       paint_window;
Display         *dpy;
Window          win;
Xv_xrectlist    *xrects;
{
    int x, y;

    if (Scr_h)
	x = (int)xv_get(horiz_scrollbar, SCROLLBAR_VIEW_START);

    if (Scr_v)
	y = (int)xv_get(vert_scrollbar, SCROLLBAR_VIEW_START);


    for (xrects->count--; xrects->count >= 0; xrects->count--) {

        XCopyPlane(dpy, cell_map, win, gc,
            xrects->rect_array[xrects->count].x,
            xrects->rect_array[xrects->count].y,
            xrects->rect_array[xrects->count].width,
            xrects->rect_array[xrects->count].height,
            xrects->rect_array[xrects->count].x,
            xrects->rect_array[xrects->count].y, 1L);
    }
}

int
Xd_getem(f_str, filename)
Fptr	**f_str;
char	*filename;
{
    FILE    *fp;
    extern  FILE	*fopen();
    Fptr   *pp;
    char    buffer[400], *p, *lhs, *rhs;
    int	    i;
    extern  char	*index();
    char    c;

    *f_str = (Fptr *) NULL;

    if ((fp = fopen(((*filename == '\0') ? "./.config.x" : filename), 
		"r")) == (FILE *) NULL) {
	printf("No config file.  Bye\n");
	return(TRUE);
	}

    c = 'a'; /* !EOF */
    pp = *f_str;	/* Asign Chain head */

    while (c != EOF) {
	i = 0;
	*buffer = (char) 0;

	do {
	    if ((c = getc(fp)) == EOF)
		break;

	    if ((*(buffer + i) = c) == '\n')
		*(buffer + i++) = '\0'; /* XView barfs on fields w/ '\n's */
	    else
		i++;

	    } while ((c != '\n') && (c != EOF));

	/* Only parse non-blank, and un-commented lins */
	if ((strlen(buffer))  &&  *buffer != '!')  {

	    if (*f_str == (Fptr *) NULL) 
		*f_str = pp = (Fptr *) malloc(sizeof(Fptr) );

	    lhs = buffer;	/* Prune input line a bit */
	    if (p = index(buffer, ',')) {
		*p = '\0';
		rhs = p + 1;
		pp->fname = malloc(strlen(lhs) + 2);
		strcpy(pp->fname, lhs);

		pp->fcmd = malloc(strlen(rhs) + 2);
		strcpy(pp->fcmd, rhs);

		pp->fnext = (Fptr *) malloc(sizeof(Fptr) );

		pp  = pp->fnext;
		pp->fnext  = (Fptr *) NULL;
	    }
	}   /* We're out of here */
    }

    fclose(fp);
    return(0);
}

int
Clicked_icon(window, event)
Xv_Window window;
Event    *event;
{
   int	i;
   int	rows, cols;
   Fptr *pp;
   Display	*dpy;
   int loc_w,loc_h,x_hot,y_hot;
   Window dummyWin;
   int butt_up;

    rows = cols = 0;

    if (event_is_button(event)) {
        if (event_is_down(event) && event_id(event) == BUT(1))
	    butt_up = FALSE;
	else if (event_is_up(event))
	    butt_up = TRUE;
	}
    else
	return;

    i = event_x(event);
    do {
        cols++;
        i -= Cell_height;
        } while(i > 0);

    i = event_y(event);
    do  {
        rows++;
         i -= Cell_width;
        } while(i > 0);

    i = ((rows-1) * Cells_per_row) + cols - 1;
    
#ifdef XXX
    printf("row = %d, col = %d, idx = %d, butt = %d\n", 
	rows, cols, i, butt_up);
#endif

    for (pp = f_str; (pp->fnext != (Fptr *) NULL) && (i > 0); pp = pp->fnext, i--)
        ;
    dpy = (Display *)xv_get(window, XV_DISPLAY);

    if (pp->fnext != (Fptr *) 0)
	{
#ifdef XXX
        printf("cmd = \"%s\"\n", pp->fcmd); 
#endif
        XReadBitmapFile(dpy, cell_map, pp->fname,
                &loc_w, &loc_h, &icon_map, &x_hot, &y_hot);

	if ((!butt_up) && (*pp->fcmd))
	    system(pp->fcmd);

	XCopyPlane(dpy, icon_map, (Window) xv_get(window, XV_XID), 
		    (butt_up) ? gc : revgc, 0, 0, Cell_width, Cell_height, 
		    pp->x_loc, pp->y_loc, 1L);
	}

    /* call repaint proc directly to update messages
    repaint_proc((Canvas)NULL, window, dpy,
            xv_get(window, XV_XID), (Xv_xrectlist *) NULL); */

}


p_usage()
{
    printf("Usage: xdesk -w[cell_width] -h[cell_height] -p[page_width]\n");
    printf("   -t \"title\" -l[page_length] -r[max_rows] -c[max_cols]\n");
    printf("   -s[v/h]\n");
    exit();
}




SHAR_EOF
fi
if test -f 'xdesk.h'
then
	echo shar: "will not over-write existing file 'xdesk.h'"
else
cat << \SHAR_EOF > 'xdesk.h'

Frame               frame;

    struct Fptr 
	{
        char  *fname;
        char  *fcmd;
	int	x_loc;
	int	y_loc;
	int	clicked;
	struct Fptr  *fnext;
	}; 

    typedef struct Fptr Fptr;

SHAR_EOF
fi
if test -f 'Makefile'
then
	echo shar: "will not over-write existing file 'Makefile'"
else
cat << \SHAR_EOF > 'Makefile'
LDFLAGS=  -lxview -lX -lolgx
CFLAGS= -I/usr2/X11/include

TARGETS=xdesk

all: $(TARGETS)

${TARGETS}: $$@.c $$@.o 
	${CC} ${CFLAGS} -o $@ $@.o ${LDFLAGS}
SHAR_EOF
fi
exit 0
#	End of shell archive

dan
----------------------------------------------------
O'Reilly && Associates   argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.