system-config-printer

This page is about the printer administration tool system-config-printer, which first appeared in Fedora (as part of my work at Red Hat), and later Ubuntu and other operating systems.

The purpose of the tool is to configure a CUPS server (often the local machine) using the CUPS API. The tool is written in Python, using pygtk for the graphical parts and with some Python bindings (pycups) for the CUPS API.

It is largely the same as using the CUPS web interface for configuring printers, but has the advantage of being a native application rather than a web page. It appears in the Fedora menu under System ▸ Administration ▸ Printing.

As a result of using the CUPS API the tool is able to configure remote CUPS instances and is not limited to configuring CUPS on the local machine. The CUPS library providing the API uses HTTP and IPP to communicate with the CUPS server.

We’re a happy user of the system-config-printer. We run it flawless on 300 machines in production. And it sure beats windows in the ease of use.

We use canon inktjet printers(MG 2400 series), which aren’t support very well by the vendor. There are open source drivers available on their website, but not sure who and if they are actually maintained.

At the moment we have no method of ‘receiving’ printer error codes/feedback.

The question i actually have is, how are printer errors handled? For example: paper jam, low inkt error, no ink, no paper, …. We’ve been dumping usb data and can pick out the error messages quite easily. Could you please point out where in the software chain between clicking the button to print page and actual data being sent to the printer, these errors are handled?

Ultimate we’d want some kind of gnome system message with the printer error.

This is meant to be handled by the backend and by the various drivers. The details of getting status from the device vary between manufacturers.

It’s easiest to talk about “no paper”, because that’s standardized for the USB Printer class. This should be handled by the CUPS usb backend, but unfortunately it isn’t right now. This feature got lost in the switch from usblp to libusb.

For ink levels, and supplies generally, this is up to the driver. For Canon printers it’s usually Gutenprint that does the best job, but unfortunately it doesn’t report ink levels. It’s been discussed on the mailing list — more than once — but so far there has been no progress.

It’s doable, but no-one’s done it.

As far as GNOME reporting goes, that’s all in place and working (it works for network printers, for example). It’s just the USB and driver parts that are missing.

I have system-config-printer installed on two Linux systems. It came pre-installed on an Ubuntu system and I installed it on a Manjaro (Arch Linux variant) system. On the Ubuntu system, when I right click on a printer icon, I can select anything from the pop-up menu. On the Manjaro system, when right-clicking I can only select “View Print Queue” – everything else is grayed out.

I can make the Manjaro version work like the Ubuntu version by using sudo system-config-printer from the command line, so it’s probably a permissions issue. I don’t see any obvious choices of groups to add myself to that I don’t already belong to. Any ideas?

I have an interesting question for you, where does system-config-printer store it’s URI info for the printers listed? We’ve just changed our print server to another machine and would prefer a search/replace to change the URI for our 100+ printers rather than editing them all 1 by 1.