Issue #22 August 2006

Fedora Core 6 advances printing

by Tim Waugh


The release of Fedora™ Core 6 will see several improvements in the way printing is configured and used. The print spooler itself has had a major upgrade; the printing administration tool has been re-written; and the dialog you see when printing a document has been dramatically improved.

CUPS 1.2

The Common Unix Printing System (CUPS) is the print spooler used in Fedora Core. A new major version of CUPS was made available this year and will be available in Fedora Core 6. In fact it has even been available as an update to Fedora Core 5 since June.

There are many changes between CUPS 1.1 (the previous version) and CUPS 1.2 (the new version), too many to mention here, but a few of them are worth highlighting.

The first thing you will notice is that the CUPS service starts much more quickly. This is due in part to the fact that devices are now detected on-demand rather than at start-up. Rather than probing serial ports and examining USB devices when the service starts, this is now only done when configuring a printer.

Another reason CUPS starts more quickly is that installed PostScript Printer Definition (PPD) files, which describe the capabilities of different models of printer, are also scanned on-demand rather than at start-up. Not only that, but CUPS 1.2 allows dynamically generated PPD files. This is useful for the foomatic printer database, for example, which can generate PPD files based on the database information.

Printers can now be shared on the network individually. In the previous version it was only possible to share all printers on the server or none of them. This limited option led to the need to adjust permissions for each printer and caused confusion since a server would advertise a printer on the network even if it was private.

CUPS can now probe the local network for SNMP-capable network printers. Many printers that can connect directly to the network are capable of communicating using the SNMP protocol. This protocol is for discovering information about network devices and is not used for sending print jobs. The CUPS SNMP backend can detect which transport mechanism (JetDirect, IPP, or LPR) should be used to send jobs to each printer it finds.

One last major item to mention is the addition of server-side default options for printers. Options such as job-sheets, media, and the page margins for text printing, have previously used the lpoptions mechanism for setting defaults. This is a client-side default: jobs submitted from a client machine have their default options set from the lpoptions file on that client machine, therefore setting network-wide defaults has been a problem.

With CUPS 1.2 it is now possible to set default job options on the CUPS server. These network default options can be set using the improved Fedora printing configuration tool (see the section called “New printing configuration tool”).

The "What's New" section of the CUPS on-line help has 94 items, so I hope the aforementioned few paragraphs are a useful summary of the biggest new features.

New printing configuration tool

The Fedora printing configuration tool in Fedora Core 5, system-config-printer (Desktop -> Administration -> Printing from the menu), has several major drawbacks which necessitated a re-design. It is used for adding and configuring print queues.

This tool has been in use since before the Fedora Core 1 release, and previous to CUPS being included in the distribution. It was designed to configure both the LPRng spooler and CUPS. It is able to apply the same configuration to either printing system by maintaining a separate "generic" configuration file. When the printing service is started, fresh configuration files for it are generated from the generic configuration file.

Most complaints I have seen about this method of doing things equate to: "Changes I made to my configuration files were over-written." This was the main problem we needed to rectify.

The fact the configuration file format was generic by design meant that useful and interesting CUPS features could not be utilized.

Another problem with the configuration tool was the rather limited support for PPD files. All the information about printer drivers came from the foomatic printer database. Manufacturer's PPD files had to be imported into the foomatic database before they could be used.

Taking this into account I designed a replacement, hoping to address the worst of the problems. The new configuration tool configures CUPS directly using the Internet Printing Protocol (IPP). This follows the example of the web administration interface that CUPS itself provides. The web interface on its own is insufficient because it does not provide particularly tight integration with the foomatic database (there is no way of reading comments about the printers and drivers for example). It does not integrate with the USB hotplug system to configure locally connected printers without any user interaction. Features such as Windows printer share browsing (which has been retained from the Fedora Core 5 configuration tool) are not available in the CUPS web interface.

The new tool is intended to provide user-defined print queues for Stateless Linux. These are queues that are visible only to a particular user, with the user's own PPD file.

Some screenshots are shown here, although at the time of writing there may be further alterations before Fedora Core 6 is released.

Figure 1. Server settings

Server settings

Figure 2. Printer settings

Printer settings

Figure 3. Printer policies

Printer policies

Figure 4. Printer access control

Printer access control

Figure 5. Printer installable options

Printer installable options

Figure 6. Printer PPD options

Printer PPD options

Figure 7. Printer job options

Printer job options

Figure 8. Adding a new printer (1)

Adding a new printer (1)

Figure 9. Adding a new printer (2)

Adding a new printer (2)

New Gtk+ "Print..." dialog

Gtk+ is the toolkit used by applications in GNOME, the default desktop environment in Fedora Core. As a toolkit, it drives the buttons, scrollbars, text-entry boxes and icons that applications use in their windows and dialogs.

It already provides many features for applications, but one piece of functionality it has not provided until now is a standard "print this document" dialog. In Gtk+ 2.10 this missing piece is now in place, allowing large multi-platform Gtk+ applications such as and Mozilla Firefox to provide the same print dialog as other native applications.

The new Page Setup dialog is shown in Figure 10, “Page Setup dialog”.

Figure 10. Page Setup dialog

Page Setup dialog

The new Print dialog is shown in Figure 11, “Print dialog (General)”.

Figure 11. Print dialog (General)

Print dialog (General)

It allows all the printer's available PPD settings, such as duplexing (double-sided printing) and print quality, to be tweaked. Figure 12, “Print dialog (Image Quality)” shows the PPD setting relating to image quality; other PPD settings are in the Advanced tab.

Figure 12. Print dialog (Image Quality)

Print dialog (Image Quality)

Future improvements

At the time of writing, the Gutenprint printer driver is nearing its first public stable release and will replace the gimp-print driver—it is essentially a new major version. We would have loved to get Gutenprint into the distribution ready for Fedora Core 6, if only there had been more time to do so.

Since version 8.54, GPL Ghostscript no longer trails a year behind the AFPL-licensed release from Aladdin. Fedora Core comes with ESP Ghostscript, a project that is hosted by Easy Software Products (who also host CUPS). ESP Ghostscript is based on GPL Ghostscript but contains fixes and extra drivers.

Unfortunately, ESP Ghostscript is still based on the 8.15 GPL release and has not incorporated the 8.54 version yet. If we were to switch to GPL Ghostscript we would lose the extra drivers that ESP Ghostscript comes with. Hopefully the ESP fixes and drivers will soon be ported to the 8.54 GPL release.

No login required. Want to see your comments in print? Send a letter to the editor.


There is a lot to look forward to in Fedora Core 6 associated with printing support, and more to come after that. The printing configuration tool has been re-designed and re-written, a task long overdue. This, together with the much improved printing dialog in Gtk+, hopefully brings the printing experience on Fedora a step closer to the goal of being truly easy to use.

About the author

Tim Waugh is a Systems Engineer at Red Hat, primarily responsible for packages relating to printing and some shell utilities. He has been using Linux since 1995. He lives with his wife in Surrey (England).