The X Printing Panel
What is XPP?
What's new?
Installation & Usage
To do
Contact me!
Links Logo
 What is XPP?
Did you envy the people working under Windows or MacOS choosing their printers and doing the nicest stuff on them with a few mouse clicks? And you as Unix user have to enter cryptic command lines or to start scripts written by a system administrator or yourself to do things as double sided printing, taking paper from the lower tray, adjusting colours, and so on? Or were these features of your printers even not available for you?

The special features of the printers (as duplex unit, paper trays, etc.) can already be accessed using the free printing system CUPS and/or the free spooler/driver integration software Foomatic from, but these software packages do not provide graphical user interfaces for printing.

XPP was created in the middle of the year 2000 when there were no other free GUIs for submitting print jobs. Currently there are KDE Print, GtkLP, and others, but they are based on big, memory-consuming desktop systems and GUI libraries. XPP uses the lightweight library FLTK and therefore does not need a lot of resources and can be easily installed on machines without the big desktops.

The X Printing Panel (XPP) is a completely free (under the GNU General Public License - GPL) tool for easy choosing of the desired printer out of a list of all available printers and for setting printer options by an easy-to-use graphical user interface. One simply calls the program (xpp) instead of the usual utilities (lpr or lp) at the command line or out of applications.

XPP supports the standard options of CUPS but also some undocumented job control options as job scheduling or page labels. Most important is that it makes all options defined in the printer's PPD file available to the user, so that he can make use of all features specific to his printer model. Also numerical and string options of Foomatic (2.x and 3.x) and the fax number option of fax4CUPS are supported. Users can save all settings and even create instances to save different sets of settings for different printing tasks (as photos, e-mails, office documents, ...).

Advantages and features:

  • One sees always which printers are available on the network and one can choose the desired one easily.
  • One can start the program at the command line or out of applications. The name of the file to be printed can be chosen by a built-in file browser or given as a command line argument. Also standard input can be printed.
  • The file browser has a preview facility for text and images, so one easily finds the file which one wanted to print, especially photos.
  • One does not need to remember and type cryptic command line arguments to access to the printer's features. The options can easily be chosen in a dialog window.
  • All advanced features of most printers as duplex units, additional paper trays or even folders and staplers can be used with XPP. So you can make use of all the features of your printer without using any proprietary software.
  • For non-PostScript printers using GhostScript for PostScript rendering all options described in the Foomatic printer database ( are supported. The numerical ones, which other graphical printing tools show as enumerated choice options, appear with sliders and number input fields. These options allow things as colour adjustmant for many inkjet printers (Epson, Canon, HP), head alignment for some Lexmark inkjets, margin alignment, and many other useful things.
  • There are a lot of preprocessing options for your documents as choosing the pages to be printed, setting brightness and gamma correction, appearance of text or image printouts, and so on ...
  • Job control options allow scheduling the job, supplying a job name (for fax devices sometimes one has to put the fax number into the job name), or adding banner pages and page labels.
  • XPP is mostly compatible to the command line tools of CUPS: It accepts the command line options of lpr and most of lp. The personal settings of the printing options are stored in the ~/.lpotions file as by the lpoptions command.
  • When accessing to a password-protected printer a dialog window for easy entering of login name and password pops up. By the possibility also to enter the login name (which you do not have with the command line utilities) you can also use a printer on a server where your account has another login name.
  • Completely free software under the terms of the GNU General Public License (GPL)
CUPS and the CUPS logo are the trademark property of Easy Software products.
All other trademarks are the property of their respective owners.
Here we see the main window of XPP. One has an input line and a browsing button for the file name at the top of the window, the menu of all printers available under CUPS in the middle and buttons for the number of copies, the queue priority, the option window, the instance management window, and, naturally, for closing the main window and printing at the bottom.   Main window of XPP
File selection window of XPP   This is the dialog to choose the file to be printed. On the right hand side of the window you see a preview of the selected file. The preview works for text files and PNG or JPEG images. This is especially convenient if you want to print photos.
The third screenshot shows the option setup dialog. On its first four tabs ("Basic", "Text/Margins", "Advanced", and "Job/Others") you can adjust nearly all options (as described in the "CUPS Software Users Manual") which are available on the command line of the printing commands of CUPS. These are general, mostly printer-independent options. On the other tabs all printer-specific options are offered (taken from the PPD file of the printer). The adjustments for every individual printer can be saved, so that every user can print with his personal settings.   Option setup window of XPP
PPD option page of XPP   This is an example for a tab with printer-specific options. Here one can choose the paper source, its size, the resolution, whether one wants to print double-sided or in colour, and much more. The options marked red are conflicting. In this case both the envelope feeder and A4 paper format are chosen. Because A4 is not an envelope format, these two settings together are not accepted by the printer. So the user is warned that he cannot print with these settings. The "Basic" tab is also marked red because the selectors for the media size and the media source with the conflicting choices are there, too. In addition, there is no envelope feeder installed which leads to a red "Installed Options" tab.
Here one sees the numerical options which are available for the most colour ink jet printers from Epson, HP, and Canon using the Gimp-Print IJS plug-in for GhostScript and a Foomatic PPD file (printer description file) supplied with Gimp-Print. Also other Foomatic PPD files (from have numerical options, for example on several Lexmark inkjet printers you can do the head alignments and on some other printers you can adjust the position of the printout on the paper.   Adjustment page of XPP
Instance managing window of XPP   This dialog supports the feature of CUPS that one can have several instances of one printer. An instance is an alternatively stored set of options for a given printer. It looks like an additional printer queue, one can choose it in XPP and print through it.
When you have a colour inkjet for example, you can set its options to the highest printing quality to print your digital photos nicely. But for fastly printing an e-mail you need to change five or six options to get your printer as fast as possible. So you create an instance named "fast" and then you set the options for fast printing in that instance, they are completely independent of the original options of your printer. Now you simply click on the main entry of the inkjet for printing photos and on the "fast" entry for e-mails, without clicking through lots of options.

 What's new?
  • December 9, 2004: Version 1.5 now available for download (ChangeLog).
  • January 27, 2002: Version 1.1 now available for download (ChangeLog). I will be at the Mandrake booth on the Linux Expo in Paris from January 30 to February 1.
  • June 23, 2001: Printing with free software (including XPP) will be presented on my booth on the Linuxtag 2001 in Stuttgart in Germany on July 5-8. Except me there will be Grant Taylor (, July, 5-7), Michael Goffioul (QtCUPS, KUPS, Printing system of KDE 2.2, July 7-8), and Kurt Pfeifle (Danka, all days). The booth will be booth number in hall 5.
  • January 28, 2001: Version 1.0 now available for download (ChangeLog). I will be at the Mandrake booth on the Linux Expo in Paris from January 31 to February 2.
  • October 2, 2000: XPP has moved completely to Sourceforge (
  • September 30, 2000: Version 0.7 now available for download (ChangeLog)
  • August 26, 2000: New links added.
  • August 20, 2000: Version 0.6 now available for download (ChangeLog)
  • August 16, 2000: Version 0.5 now available for download (ChangeLog)
  • August 15, 2000: SuSE-RPM of version 0.4 now available for download
  • August 9, 2000: Version 0.4 now available for download (ChangeLog)
  • July 23, 2000: Version 0.3 now available for download (ChangeLog)
  • July 11, 2000: FTP Mirror on SourceForge now available!
  • July 10, 2000: CVS Repository available now!
  • July 08, 2000: Version 0.2 now available as RPM for SuSE Linux 6.4. Contributed by Stephan Flor, thank you.
  • July 03, 2000: Version 0.2 now available for download (ChangeLog).
  • June 23, 2000: Now there are also binary packages available for download.
  • June 22, 2000: XPP will be presented in the talk about CUPS by Kurt Pfeifle on the Linuxtag 2000 in Stuttgart in Germany. The talk will take place on Friday, June 30 4pm and Sunday, July 2, 2pm. Kurt Pfeifle and me we will also be at booth in hall 6.
  • June 20, 2000: The first alpha version (0.1) is ready and made available for download.

Source Code of XPP
Source code of the most recent version of XPP. For older versions, release notes, and mirrors go to the Sourceforge project page. CVS Repository for XPP
Here one can download the most recent state of the XPP development. Here bugfixes appear first, but new bugs appear first here, too. Ready-to-use binaries of XPP
Of the current version of XPOP there are no binary packages available yet. Some distributions include XPP binaries. Please check your distribution's site or a search engine for binary packages like Volunteers for contributing binary packages are welcome.

 Installation & Usage
See the README file in the main directory of the package you have downloaded. Though I have tested the current version only under Mandrakelinux 10.1 and Cooker, the program should run on all Unix operating systems.
 To do
  • Internationalization of XPP (Language maintainers welcome, I by myself speak german, english, and brazilian portuguese)

 Contact me!
As every other software XPP is under a continuous development and therefore can have a lot of bugs which I often cannot find because they do not appear in all environments. So please send all bug reports, bug fixes, suggestions (also for a nice program logo, as .ps, .jpg, .png, or similar), binary packages (esp. .rpm and .deb) to my e-mail address:
Remove the "NOSPAM" from my address before you submit your mail, it protects against robots ripping e-mail addresses out of web pages for sending unsolicited advertising e-mails (spam).

And here is my home page.

Thank you in advance for all kinds of help and contributions.

General links about CUPS and printing Downloadable CUPS drivers Additional CUPS software Others
Last updated at December 9, 2004 by Till