CommonPrintingDialog

Revision 21 as of 2008-05-21 14:06:10

Clear message

Summary

All applications must have the same print dialogs with the same parameters to adjust. All systems (Kde/Gnome...) must manage cups printers in the same way. System printers and parameters and also users parameters must be manageable.

The idea of the Common Printing Dialog designed by OpenUsability was brought in on the [https://www.linux-foundation.org/en/OpenPrinting/MeetingInfo OSDL Printing Summit in April 2006 and work was continued on subsequent Printing Summits].

The Common Printing Dialog is one of the main projects of OpenPrinting at the Linux Foundation, coordinated by Till Kamppeter, manager of OpenPrinting.

Rationale

If a user knows how to print out of application A he will also know how to print from application B. He also will have access to all the features of his printer and of CUPS from all applications.

Use cases

  • LaserStar Electronics in Japan wants to publish Linux/Unix printer drivers for their wide range of printers, beginning from 30-EUR-cheapo inkjets over 256-ink high-end photo-printers, up to 30-pages-per-second color laser office multi-function devices. They want that all users have easy access to the full functionality of their devices from all applications. Their devices support Locked Print (user can only pick up his printout when entering a password which she has send with the job, so that Lea cannot see Lisa's confidential printout), color adjustment (numerical parameters), fax (phone number), ... And they want to place their logo in the printing dialog.

  • Lisa wonders why she can't change the printing settings in Firefox and Thunderbird.
  • Lea from Germany likes the fact that OpenOffice.org's printing dialog offers her so many options, but she wonders why all the options are in English. Furthermore she thinks that it isn't very easy to use.

  • Lara wants to print a photo in gThumb. After that she wants to print some notes in gedit and some labels using gLabels. She dislikes the fact that she has to change the resolution for every task using system-config-printer.
  • Laura has an Epson printer. She wants to know the ink-level and clean the heads, if necessary. She finds out that this can be done using escputil, which is included in Gutenprint. She installs escputil via apt and also finds out about mtink, which has an ugly GTK1-GUI, that doesn't suit to her KDE-Desktop. She would like to have the features of escputil in system-config-printer. She also thinks it would be nice for new users to have a button in every printing dialog for doing these advanced tasks.
  • Lena has installed Adobe Reader from Multiverse. She wonders what a printing command is.
  • Bob and Jane wonder why there are some many names beginning with "L"

Scope

All desktops on all Posix-style operating systems. As a first step we will cover at least KDE and GNOME.

Design

OpenUsability has designed a GUI for the Common Printing dialog during the last two years. It is based on paper prototyping, discussion on Printing Summits, surveys, and the work of usability and user interaction specialists.

It has an all-time visible preview, quick preset buttons (for things like "Draft", "Office document", "Photo", "Booklet", ...), and detailed printing options can be shown or hidden by category ("Paper handling", "Resource saving", "Finishing", ...).

General info about the UI design of the Common Printing Dialog:

The interface between the applications and the dialog will be done via DBUS. It will be written a glue code which replaces/patches the libraries which the applications call to open their original printing dialogs. This glue code calls the Common Printing Dialog via DBUS then. With this glue code we do not need to modify all applications. Making the glue code for KDE/Qt, GNOME/GTK, and OpenOffice.org will switch most applications to the new printing dialog. Note that the newest version of Firefox already uses the GTK printing dialog, so Firefox will also be covered by modifying the libraries for GNOME/GTK applications. Perhaps Thunderbird needs to be modified, too.

Extensions for PPD files are designed to support advanced UI functionality as needed by the drivers (printer manufacturers). First of all, the custom PPD options as described in the documentation of CUPS will be used, to allow numerical parameters, strings, passwords, ... as printing options. There will be also definitions for the quick presets, the categories to which the options belong, and UU-encoded icons and logos. Printer manufacturers and independent driver projects will use this functionality to present the options of their drivers/printers on the dialog.

Implementation

This summer the dialog will be implemented by two Google Summer of Code students, to get finished in time for the feature freeze of Intrepid.

1. [http://code.google.com/soc/2008/linux/appinfo.html?csaid=53E53CD78F134BE9 Lars Uebernickel will implement a DBUS-based interface for the Common Printing Dialog]

2. [http://code.google.com/soc/2008/linux/appinfo.html?csaid=9D65D29842F34550 Alexander Wauck will implement the GUI of the Common Printing Dialog itself]

Jonathan Riddell will be the principal mentor of the two. Co-mentoring will be done by Till Kamppeter and others.

All changes will be applied upstream, as the project is intended for all distributions. One of the first distros featuring it should be Intrepid. The Google Summer of Code ends in the end of August, when Intrepid will have feature freeze.

Currently, we are developing the specs. The first prototype of the dialog and the final specs will be presented to the Japanese printer manufacturers on the OpenPrinting Meeting on the next Linux Foundation Japan Symposium in Tokyo on July 8 by Till Kamppeter and Peter Sikking. Peter Sikking will present the dialog also to the GNOME developers on the GUADEC in Istanbul.

Here are some remarks about the replacement of the printing dialogs by the DBUS interface to the Common Printing Dialog in applications:

For generic GNOME and KDE applications the dialog should be replaced by modifying the GNOME and KDE library functions which call the original printing dialog. Main problem here is that some apps customize the printing dialog by inheriting the printing dialog class and extending it.

Firefox 3.x uses the GTK printing dialog currently, so it will be covered by the change of the GNOME/GTK libraries.

Thunderbird will also use the GTK dialog for 3.x, but 3.x will not finish in time for Intrepid. Perhaps the 3.x printing code needs to be backported to 2.x.

Red Hat/Fedora patches OpenOffice.org t use the GTK dialog. This patch shows where OOo gets changed fo replacing its printing dialog and so it can be a base for replacing OOo's original dialog by the DBUS interface to the new dialog. In a first approach one could use the patch as is and when Lars modifies the GTK/GNOME libraries to get the new dialog into the GNOME apps, it will also appear for OOo. But probably we must rather modify the patch to do direct calls to the new dialog's DBUS interface instead of GTK lib calls, so that we do not pull the GTK libs onto the Kubuntu live CDs (and space-limited KDE-based distros in general).

Code

The code for the Common Printing dialog is hosted at OpenPrinting. Browse it with

http://bzr.openprinting.org/devel/common-printing-dialog

Download it with

bzr branch http://bzr.openprinting.org/devel/common-printing-dialog

Data preservation and migration

Outstanding issues

BoF agenda and discussion

  • Discussion of requirements and specs
  • Integration in Intrepid: KDE, GNOME, non-KDE/GNOME apps

We need call-in access for Alexander Wauck (USA), Lars Uebernickel (Germany), and Peter Sikking (Germany).

Further discussion

Discussion places for this project are the [https://lists.linux-foundation.org/mailman/listinfo/printing-architecture printing-architecture mailing list at OpenPrinting] (See especially also its [https://lists.linux-foundation.org/pipermail/printing-architecture/2008/thread.html archives]) and the #openusability IRC channel on Freenode (tkamppeter = Till Kamppeter, guiguru = Peter Sikking, larsu = Lars Uebernickel, waucka = Alexander Wauck).

Acknowledgments

We thank HP, Konica Minolta, Epson, and Canon for the financial support of OpenPrinting. We also thank Epson for funding Peter Sikking's travel to Tokyo and Istanbul. We thank Google for funding the student projects.


CategorySpec