Adding a printer to CUPS

Wednesday, February 23rd, 2011

The GNOME 3 printer settings module looks like it will be great. The plan for adding a new printer is deceptively ambitious: the user interface design is that you click “+”, choose a printer device, and then click “Add” and the job is done.

For those unfamiliar with printing, this sounds easy enough. To make the user interface as easy to use as that takes more work than you would think at first glance. It’s the direction I’ve been moving towards in system-config-printer.

Here is a description of the issues involved.

(more…)

Presenting at OpenPrinting Summit today

Thursday, April 15th, 2010

Just a quick note that I’ll be presenting by phone today, Thursday 15th April, at the OpenPrinting Summit on the topic of automatic printer driver installation in Fedora 13.  The talk is at 1600 UTC / 1700 BST, and was not Wednesday as scheduled.  The schedule hasn’t been updated yet, but when it is you can find it and the dial-in information here.

CUPS cancelled jobs showing up in the queue

Friday, October 16th, 2009

The newest stable branch of CUPS, 1.4, has a different job cancellation behaviour (hey, two words in a row spelt differently in American English!) than 1.3 did.  If you have cancelled a job but it still appears in the job queue, this might explain why.

(more…)

PolicyKit and printing

Tuesday, August 11th, 2009

gtk-dialog-authentication-100The latest release of Fedora allows more flexibility with configuring print queues and managing print jobs. This is because it is now able to use PolicyKit to do these things, which means you get to choose when and whether users should be prompted for authentication when performing administration tasks on printers or jobs. The implementation is slightly tricky, so I’ll explain the details.

(more…)

D-Bus system services for print queues

Sunday, July 26th, 2009

Further to the recent work on replacing hal-cups-utils, I’ve now split out the parts that use CUPS into a D-Bus system service. This allows udev to simply call the D-Bus methods and let the activated service deal with the potentially time-consuming bits. It also makes it a bit easier to get the SELinux security labelling right.

The interface is simple:

bus com.redhat.PrinterConfig
object /com/redhat/PrinterConfig
interface com.redhat.PrinterConfig

UsbPrinterAdd (STRING devpath, STRING deviceid)
UsbPrinterRemove (STRING devpath)

Next step: a D-Bus service for finding an appropriate PPD file for a given IEEE 1284 Device ID. This would allow the PrinterConfig implementation to avoid running a Python helper script to actually add the queue. The same goes for bluetooth devices.