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
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
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
Advantages and features:
CUPS and the CUPS logo are the trademark property of Easy
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
printer database (www.linuxprinting.org) 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
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
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
General Public License (GPL)
All other trademarks are the property of their respective
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.
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
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.
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
linuxprinting.org) 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.
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
December 9, 2004: Version 1.5 now available for
January 27, 2002: Version 1.1 now available for
(ChangeLog). I will be at the
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
2001 in Stuttgart
in Germany on July 5-8. Except me there will be Grant
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 5.0.030.3 in hall 5.
January 28, 2001: Version 1.0 now available for
(ChangeLog). I will be at the
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
August 26, 2000: New links added.
August 20, 2000: Version 0.6 now available for download
August 16, 2000: Version 0.5 now available for download
August 15, 2000: SuSE-RPM of version 0.4 now available
August 9, 2000: Version 0.4 now available for download
July 23, 2000: Version 0.3 now available for download
July 11, 2000: FTP Mirror on
SourceForge now available!
July 10, 2000: CVS Repository
July 08, 2000: Version 0.2 now available as RPM for
SuSE Linux 6.4. Contributed by
Flor, thank you.
July 03, 2000: Version 0.2 now available for download
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
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 22.214.171.124 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 rpmfind.net. 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
Internationalization of XPP (Language maintainers
welcome, I by myself speak german, english, and
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
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