Requirements:	That's what you need:

		- 80kb free space on harddisk
		- Xwindows (with monochrome, greyscale
		  or color-display)
		- tcl and tk
		- printers (the more the better ;-)

		The program was tested on a I386 running linux
		and some SUN-Workstations (B/W, Greyscale, Color;
		SOLARIS and SUN-OS; Sparc-ELC, Sparc-5 and Sparc10)
		and is regarded to be flawless (Otherwise: e-mail!).

Installation:	copy the files "printop", "printop.cmd" and
		"printop.cfg" to any directory you like.
		In "printop" at the top is the entry for the shell
		that should execute "printop". Change the path of
		the "wish" to the "wish" in your system. Below that
		there is an assignment to the variable "printop_path".
		Change the value ("/usr/local/bin/printop") to the path
		of the directory where you copied the printop-files to.
		Then do some configuring in the "printop.cmd"- and
		"printop.cfg"-file (see below). That's it.

Configuring:	If you have just some printers (1 to 10) there should
		be no need of configuring printop. Use it as it is.

		If you have some special paths to the executables needed
		by printop (lprm, lpq, lpc, rsh) then you need to enter
		some settings in the printop.cmd-file. This is done by
		the "set"-command.

		If you have lots of printers and want to group them
		in submenus in the printermenu you can do so with the
		"printer"-command in the printop.cfg-file.
		Empty lines and lines starting with # are ignored
		(#-lines = comments).

	set	Format: set parameter value
		Possible parameters are: confLPC, confLPQ, confLPRM,
		confRSH and confSUID.

		confLPC: This is the command for lpc. Normally an entry
			like "set confLPC lpc" should be sufficient. In our
			university there exists a command called "opcom" that
			executes programs with root-privileges without logging
			in as root, so there the staff needed a setting of
			"set confLPC {/usr/local/etc/opcom lpc}".

		confLPRM: same as for confLPC but now for the call of
			"lprm". Normally "set confLPRM lprm". For staff
			in our university it's "set comfLPRM opcom lprm"
			(where opcom executes lprm with right to remove
			printjobs of other people).

		confLPQ: same as for confLPC but now for the call of
			"lpq". Normally "set confLPQ lpq" or something
			like "set confLPQ /usr/bin/lpq".

		confRSH: The call for the commands that have to be
			sent to remote-printers (to be exact: to their
			hosts). Normally this should be "rsh" so the
			setting is "set confRSH rsh". printop calls
			the command by "confRSH host command", so any
			other remote-tool using this order of arguments
			should work.

		confSUID: If you want to enable every user to set his
			own commands for printop (for whatever reason),
			you have to set confSUID to 0. This tells printop,
			that you think, it's secure to let users change
			the commands. You should never do so if printop
			runs with SUID root, because every user could
			set his own commands that would be executed with
			root privileges!


	printer	Format: printer button pattern ?path?
		or	printer menu name pattern ?path?
		With these commands you can configure the printer-menu.

		"printer startup ..." tells printop to use the printer ...
		as the default-printer (the queue that is displayed when
		you start printop). It should be an existing printer name
		otherwise printop just displays an errormessage for you. For
		example "set listprinter lp" should do on most UNIX-systems. 

		"printer button <pattern> <path>" creates buttons in the
		menu. For each printer (from /etc/printcap) that is matched
		by the pattern there is an entry created. The patterns are
		regular expressions (of tcl). So the command "printer button
		{vax$}" would create a button for each printer whose name
		ends with "vax". If you specify a path of a submenu the buttons
		will be created in the submenu.

		"printer menu <label> <name> <path>" appends a submenu to
		the given menu (without path specified in the mainmenu).
		The created menu is empty after this command, you have to
		add printers to the menu using the "printer button..."-command.
		So the commands:
			printer menu "Lineprinter" {LinePrinter}
			printer menu "House A" {house_a} {LinePrinter}
			printer button {^a.*} {LinePrinter.house_a}
		would create an empty menu "Lineprinter" and insert a submenu
		named "House A" to it, in wich all printers are listed whose
		names start with an "a" and end with "lp". So you can create
		submenus in submenus in submenus... and insert extra buttons
		where ever you want. Note: The path of a submenu is the
		list of the names of the parents of that menu separated by
		colons. The path of the menu labelled "House A" above would
		be {LinePrinter.house_a} that is the name of the parent
		"LinePrinter" and it's own name "house_a" separated by a
		colon.
		In the labels all characters are allowed but colons or
		spaces etc are not allowed in the widget path. This is
		the reason why you have to specify both, a label and the
		name of the widget.

Configuring for single users: When someone starts "printop", it searches
		for the file "printop.cmd" in the printop-directory. If
		in this file "confSUID" is set to 0, that is you allow
		users to configure the commands that are called by printop,
		the file "~/.printop.cmd" is read. NEVER ALLOW THIS IF
		PRINTOP RUNS SUID ROOT!
		If there exists a file named "~/.printop.cfg", the printer
		menu is created by reading this file. If it does not exist,
		printop uses the standard file "printop.cfg" in the printop-
		directory.
		So you can give every single user his own "~/.printop.cfg"
		and configure them according to the special needs of every
		user. So every user can play with the configs and hack some
		errors into the configuration files...
		(User: "The printop-command doesn't work any more! Somebody
		has damaged it!" ROOT: "YOU damaged it! GO TO HELL or delete
		your ~/.printop.cfg!").


Have fun and enjoy...


Olaf Gellert	gellert@informatik.uni-hamburg.de



printop is copyrighted by Olaf Gellert, 1995. License to copy, publish,
and distribute is granted to everyone provided that three conditions are
met:

- my name and email address, "Olaf Gellert <gellert@informatik.uni-
  hamburg.de>" must remain in the distribution and any documentation
  that was not part of this distribution. In particular, my name
  and address must be shown in the About popup.
- if you redistribute a modified version, the fact that the version
  is modified must be stated in all places that my name is shown.
- this copyright notice must be included in your distribution.

If these conditions are met, you can do whatever you like. The idea is
that I would be annoyed if someone else claimed he wrote the thing, and
I don't want bugs introduced by others attributed to me.

There are no implied or expressed warranties for printop. I do not claim
it is good for anything whatsoever, and if you lose your precious data or
your cat dies this is entirely your problem.

If you have any suggestions for future versions contact me:

	gellert@informatik.uni-hamburg.de

If you like and use (sometimes or everyday) this software, send me a
postcard! Just a "Hello. Nice program. Thanx. ?name? ?address?" or
something like that. Or write what comes to your mind.
Send the postcard to:

                Olaf Gellert
                Verstcken 9
                22297 Hamburg
                Germany

I like getting postcards...
