Printer Utility Program for Linux
The Sourceforge Pup project group page can be
found here.
Main Web Site: pup.sourceforge.net Mirror Sites: pup.hypermart.net ; pup.virtualave.net Pup is a GUI utility for maintaining your printer under Linux or other operating systems that support Gtk+, Zlib, and GNU C. Currently it supports the Lexmark Optra Color 40 , 45 , E310, and HP 2100M, 4000, and LJ4 Plus printers. If your computer is configured for printer read back, Pup additionally supports all other PJL printers (or partially, depending on the printer). The services Pup provides are ink cartridge maintenance/replacement (Lexmark Optra Color 40/45 only), printing of various test and configuration pages, querying of the printer's settings and status, and setting of the printer's defaults. Want to print a photo on the highest quality settings? No problem! Use Pup to set the printer's paper type, color correction, and print quality before printing the photo. This is Pup's main window. The two smaller pictures show the other tabs.
Along with PJL, the above listed printers have the advantage of supporting
PostScript in the hardware. (The LJ 4 Plus requires an add on module for
PostScript.) Postscript is the language Linux applications use for printing.
If the printer is not Postscript capable then a program such as Ghostscript
is used to convert the Postscript to the printer's language. Depending
on the printer's language and how proprietary it is, Ghostscript may or
may not do the best job. Usually text comes out fine but photos may be
of lessor quality.
Note there are some printer manufacturers claiming a printer to be (or emulate) Postscript or claiming to have a Postscript option available for an extra charge, but somehow neglect to tell you the Postscript is supported in software only. This means the printer will not support Postscript in Linux, as I know of no printer manufacturers writing drivers for Linux. The key thing to find out is if the printer supports Postscript or Postscript emulation in the hardware (such as the above listed printers).
There is also a stand alone program included in the source code called mydeflate.c, which can be compiled separately. It will compress and base64 encode any file, which you can put into an array and write some code to decode and uncompress it as needed. Pup does this with some images and PostScript it uses for some output commands, line by line on the fly during output as an example of a way to save run-time memory. See the source file header for more information. Pup offers what I call Explain technology. Simply put, when Pup cannot complete a command successfully, instead of crashing and/or bringing down the whole operating system which might normally happen on another platform, it pops up the Explain button which will bring up a window stating and explaining the error detected, and offer suggestions as to how to fix the problem. This happens when and where it is needed. Even if you forget to turn your printer on or hook up the printer cable, Pup's Explain technology will politely inform you. Likewise, you may cycle the printer's power or switch printers without crashing Pup or the operating system. Pup outputs commands to a printer, a pipe to a printer, or a file. Inputs (queries) are only allowed from a printer device. If you output commands to a file, you may ftp this file to a remote printer or cat it directly to an output device in order to execute the commands. I have released pup under the GNU General Public License (GPL). This means anyone can download, use, modify, and redistribute it as long as the source code goes with it. Read the GPL for more info. It can be found here and is also included with the download. I would ask, however, that any modifications useful to others be resubmitted to me so that I may maintain the master copy. The source code and compiled binary (for Linux on x86) are available for download. The sources have a simple Makefile and should not give you problems. Of course it goes without saying that you need to have development capabilities installed on your system, i.e. Make, gcc, includes, and applicable libraries.
In addition to other formats, I am now offering Pup as a Debian package. I am currently in the process of becoming a Debian maintaner and will soon have Pup on the Debian web site. The package is available here too. Versions
Ideas (for 1.2 ?)Add an option to read PPD files; add network support for the query features; add ability to filter choices through the GUI.NotesSourceforge.net is the home for Pup. Previously it was released at http://pup.virtualave.net and http://pup.hypermart.net These two other sites are now mirrors of this web page with downloading available from there. Links are provided at the top of this page. Please note on these other sites the download links point to a cgi script first, which I only use to count the number of downloads.
Pup is tuned for 1280x1024 displays, and looks good down to 1024x768. For 800x600, some of the windows are too tall. This can easily be fixed by changing the source code (search on "height"). For 640x480, forget it. If you really want to use 640x480 or Pup is too big to suite you for 800x600, in addition to changing the height (and width) you can also change to a smaller font. The default font is set at the beginning of the program in main() and all other fonts are set in set_font(). To be able to use Pup as not root, either change permissions to the output device (e.g. /dev/lp0) or add your user to the group that belongs to this device and make sure it has group rw permission. |
Download
You do not have to reboot or restart X after installing Pup. Please dismiss this idea :0) Package InstructionsRPM
DEB
Manual InstructionsBinary (for Linux on x86)
Source
If any of the above steps required you to become root, be sure to log out and run Pup as a normal user. (You may have to change permissions on your output device.) When Pup comes up, go to the Help menu and select Info to read about each option. If you want to test out the code without affecting your printer, just type a bogus filename in the Output box; the commands will be written to this file which you can delete later. |