This page has information about the printing configuration tool used in Fedora, system-config-printer. The tool is for configuring a CUPS server, and uses the Internet Printing Protocol (IPP) to do so. For local servers this is delegated to PolicyKit when available.
The main application provides a graphical interface for editing printer queues.
The printer applet displays an icon in the notification area when you have jobs queued to print.
system-config-printer-udev sub-package provides support for using udev to configure USB printers at the time they are connected. It can also install printer drivers as required.
In order to communicate with a CUPS server, system-config-printer uses the
libcups library provided by CUPS. This provides a fairly high-level API for performing several common operations such as adding and removing printers. It also provides a lower-level API for constructing arbitrary IPP requests.
Another API provided by this library is one for inspecting and manipulating PPD files, which define what format the printer requires data in, as well as any options and their choices and defaults.
Bindings for the high-level IPP API and for the PPD API are provided by the separate python-cups package.
libsmbclient library is used to discover and browse CIFS print shares. Python bindings for a simple subset of this API are provided by the separate python-smbc package.
Support for using PolicyKit to perform administrative operations is provided by the separate cups-pk-helper package.
The printing configuration tool uses PolicyKit when configuring CUPS on the local machine. For normal IPP operations the policy determining who gets to modify what is defined in the CUPS configuration file
/etc/cups/cupsd.conf. Configuring CUPS using PolicyKit (cups-pk-helper) is an extra mechanism with its own policy.
The default cups-pk-helper policy requires administrative authentication for most actions. Here is how you can customize that in two steps.
- Add yourself to the
desktop_admin_rgroup. With the new user account dialog this is done by clicking the padlock labelled Click to make changes, then changing the Account type to Administrator.
- Create a
/var/lib/polkit/localauthority/50-local.d/10-printer-config.pklawith this content:
[Desktop Administrator Permissions] Identity=unix-group:desktop_admin_r Action=org.opensuse.cupspkhelper.mechanism.* ResultAny=no ResultInactive=no ResultActive=yes
Note that there is an open bug about whether or not this should be the default: bug #596711.
Original design discussion for system-config-printer
These projects are hosted at fedorahosted:
A document describing how the various components fit together was written a while ago. It is out of date in that it mentions hal-cups-utils (instead we use udev hooks now) and that it does not talk about cups-pk-helper at all.