diff --git a/Tools/pynche/Main.py b/Tools/pynche/Main.py
index 25b9aef..3eeccbf 100644
--- a/Tools/pynche/Main.py
+++ b/Tools/pynche/Main.py
@@ -10,7 +10,11 @@
 power, that I finally buckled down and implemented it.  I changed the name
 because these days, too many other systems have the acronym `ICE'.
 
-Usage: %(PROGRAM) [-h]
+This program currently requires Python 1.5 with Tkinter.  It also requires at
+least Pmw 0.6.1.  It has only been tested on Solaris 2.6.  Feedback is greatly 
+appreciated.  Send email to bwarsaw@python.org
+
+Usage: %(PROGRAM)s [-h]
 
 Where:
     --help
@@ -21,3 +25,90 @@
 
 __version__ = '1.0'
 
+import sys
+import getopt
+import Pmw
+import ColorDB
+from Tkinter import *
+from PyncheWidget import PyncheWidget
+
+
+
+PROGRAM = sys.argv[0]
+
+# Milliseconds between interrupt checks
+KEEPALIVE_TIMER = 500
+
+RGBCOLOR = 1
+HSICOLOR = 2
+NAMEDCOLOR = 3
+
+# Default locations of rgb.txt or other textual color database
+RGB_TXT = [
+    # Solaris OpenWindows
+    '/usr/openwin/lib/rgb.txt',
+    # add more here
+    ]
+
+
+
+def usage(status, msg=''):
+    if msg:
+	print msg
+    print __doc__ % globals()
+    sys.exit(status)
+
+
+
+app = None
+
+def keepalive():
+    # Exercise the Python interpreter regularly so keybard interrupts get
+    # through.
+    app.tk.createtimerhandler(KEEPALIVE_TIMER, keepalive)
+
+
+def main():
+    global app
+
+    initialcolor = 'grey50'
+    try:
+	opts, args = getopt.getopt(sys.argv[1:],
+				   'hc:',
+				   ['color=', 'help'])
+    except getopt.error, msg:
+	usage(1, msg)
+
+    if args:
+	usage(1)
+
+    for opt, arg in opts:
+	if opt in ('-h', '--help'):
+	    usage(0)
+	elif opt in ('-c', '--color'):
+	    initialcolor = arg
+
+    # create the windows and go
+    for f in RGB_TXT:
+	try:
+	    colordb = ColorDB.get_colordb(f)
+	    break
+	except IOError:
+	    pass
+    else:
+	raise IOError('No color database file found')
+
+    app = Pmw.initialise(fontScheme='pmw1')
+    app.title('Pynche %s' % __version__)
+    app.tk.createtimerhandler(KEEPALIVE_TIMER, keepalive)
+    p = PyncheWidget(colordb, app, color=initialcolor)
+    try:
+	keepalive()
+	app.mainloop()
+    except KeyboardInterrupt:
+	pass
+
+
+
+if __name__ == '__main__':
+    main()
