Technical Overview
This chapter aims to give a technical overview of which non-programmers can comprehend.
is a new and revolutionary tool to give easy access to printing services for both users and developers.

A Brief Description of
You can access the functions of in different ways: through the Printing Manger in the , through the kprinter command or through the dialog that pops up if you want to print.

What it is not
is not a replacement for the printing subsystem itself. does not therefore give provision for spooling, and it does not do the basic processing of or other print data.

What it is
is an intermediate layer between the spooling and the data processing print subsystem (as installed), and the application that seeks to print. provides a common interface for developers and users, to various supported print subsystems. At the same time, it is customizable, and highly configurable.
is easy to use for both developers and end-users. Developers can port their applications, with minimal changes, to use instead of the old print system. Users can easily choose and configure their print subsystem.
For a reference to new users: is the basic library and graphical toolkit, which is used by all applications; is developed by TrollTech, a Norwegian software company.

-- Different Usage for Different People
has different faces for different people.

What users and administrators can do with
allows users and/or administrators, depending on their rights, access to printing subsystems (, LPD, RLPR, LPRng, PDQ ) through a graphical user interface (). Using , they can print, administer jobs, printers and the printing daemon, all in a comfortable manner.
Experienced users will like the capability to plug any working filter for the print data between the output of their application and the input, into the chosen print subsystem. Some examples for this already ship with plain vanilla . Read on.

What developers can do with it...
If a developer needs printing access for his application, he does not code the printing functions from scratch. Before 2.2 this service was provided by the QPrinter class, a library function of the Toolkit. The QPrinter class relied on the out-moded Line Printer Daemon (LPD). The library bases itself firmly on the more modern Common Printing System (), while at the same time keeping backward compatibility with LPD and other legacy, or less elaborate, print systems. It also leaves the door open for any new development that might occur.
For developers to use the new class in their applications, they require only minimal changes to their code: for every call of QPrinter, they just need to change this to KPrinter. Replacing one (!) letter in a few spots, and automatically they are done; their application can then use all of the features of the new library.
More ambitious developers, or ones with special requirements, can do more: despite 's feature-rich framework, they are still able to customize the print dialog of their application by creating an additional Tab, where their extensions to the standard will feel right at home.
This last mentioned feature has not been used widely inside so far, as developers are not yet fully aware of 's power. Expect more of this in the near future. One example I discovered is the application. It lets you edit the crontab through a . The developers have implemented a printing feature that lets you (or root) choose if you want to print the whole of crontab (for all users) or just the part that is marked. You can see the effects on in the following screenshots.
This shot shows a sample from the utility.
utility: a small sample of a system's cronjobs as shown through the GUI.
The developers let you choose to print the whole of the cron table or just the marked part of it.
The dialog to configure 's printing options: the additional tab titled Cron Options is from inside , not ; it is a special extension added by the developers for printing purposes, not originating from, but executed by . Developers of other applications are free to implement their own goodies, if they feel need for it.
's addition to the dialog.
's addition to the dialog.
's addition to the dialog.

What offers to everybody...
's easy-to-use interface for all supported print subsystems of course does not eliminate basic traditional weaknesses of some of those systems. But it smooths some rough edges. Different users may use different printing systems on the same box. A user is free to even switch on the fly, from the print dialog, the print subsystem to be used for the next job. (This is possible if different systems are installed in a way that they don't get in each other's way.)
Most users are used to LPD printing. LPD provides only basic printing functions, is very inflexible and does not utilize the many options of more modern print systems like . While also working remotely over any distance (like every TCP/IP based protocol), LPD lacks bi-directional communication, authentication, access control and encryption support.
can use to support:
Querying the LAN for available printers,
Basic, Digest, and Certificate Authentication,
Access Control based on IP addresses, net addresses, netmasks, host- and domain names,
and 128-Bit TLS or SSL3 encryption of print data, to prevent eavesdropping, or at least make it much more difficult.
This makes a much more robust and reliable solution than using the venerable LPD.

How to access
You get access to , or parts of it, in four different ways:
through your applications: if you call the printing dialog (either File Print...) or the button with the little printer icon on it; this opens the printing dialog.
through the typed command kprinter in a terminal or a window or from the Run Command... mini-CLI window: this also opens the printing dialog.
from the button, starting , and then go to System Printing Manager. This opens the administration which is part of the and also lets you switch to other parts of the
from a command line ( or mini-CLI) type kcmshell printmgr. This opens just the part of to change your settings
dialog to be started from Run Command... window
Starting the dialog from a Run Command... window.
Starting the dialog from a Run Command... window.
Here is a drawing of the dialog as it pops up after being started... You can always add a new printer by clicking on the small Wizard button (marked red/yellow in this drawing).
dialog started ( draft drawing)
dialog started ( draft drawing)
dialogue started ( draft drawing)