Files
mesh-catalog/modules/cups/README.md
T
jochen b352f3920e cups: the scheduler and driverless printing, and the printers as tools (hq to-be 42 phase 2.9)
Research 027 asked for cups with the printer's driver. Measured: both
Brother queues already print through IPP Everywhere, so cups and
cups-filters are the whole driver, and the AUR vendor packages beside them
serve no queue. The desktop's Canon is the exception: its 2012 driver is
AUR-only and waits for the mesh's package repository; it stays as found.

Seven Go tools: printers (state, device, driverless or not, supply levels),
queue, cancel (the account first, sudo -n when CUPS refuses it), print,
default, resume, and drivers (which packages bring drivers, which are
foreign, which no queue uses).
2026-10-04 13:02:23 +02:00

4.6 KiB

cups

Printing on the two workstations (novox/hq research 027/02: "cups with the printer's driver"; to-be 42 phase 2 step 9).

Owns

what where
the print scheduler package cups
driverless printing: the filters that turn a document into what an IPP Everywhere printer takes package cups-filters
the scheduler, started on demand and at boot cups.socket and cups.service, running and enabled

All from the official repositories. The queues (/etc/cups/printers.conf, the PPDs CUPS generates) and the default printer are CUPS's own state, set through its tools. They are found (ADR 0182), and the module declares none of them.

The printer's driver: none needed for the Brother

Research 027 asked for "cups with the printer's driver". Measured on 2026-10-04:

workstation queue device prints through driver package installed
laptop Brother (MFC-L8690CDW) ipp:// on the LAN IPP Everywhere, driverless brother-mfc-l8690cdw (AUR), unused
desktop Brother_MFC_Novox (default) ipp:// on the LAN IPP Everywhere, driverless brother-mfc-l8390cdw and its -debug (AUR), unused
desktop Kanjuro (Canon PIXMA MG4200) cnijnet: the vendor's PPD and filter cnijfilter-mg4200 3.80 (AUR)

Both Brother queues already print without a vendor driver. CUPS's own IPP Everywhere support, with cups-filters, is the whole driver. The vendor packages installed beside them serve no queue, and the laptop's pulls in 32-bit glibc from multilib for a filter nothing runs. So the module declares no driver, and the Brother needs nothing outside the official repositories.

The Canon is the exception, and it is blocked. Its driver is a user-repository package from 2012, with its own network backend. Like snapd, it waits for the mesh's package repository (research 027 question 1, option P2). Until then it stays as found on the desktop. If the printer answers IPP (check with cups_drivers on a fresh queue, or driverless from cups-filters), a driverless queue replaces it and the question goes away.

Improves

  • An owner for the scheduler. It runs on both workstations today, enabled by nothing the mesh records.
  • No driver package that nothing uses. The README's one-off step below removes them, once.
  • Supplies and state from anywhere. cups_printers answers each queue's toner levels and flags a low one. It also answers why a queue stopped, without opening the printer's page.
  • The laptop has no default printer, so a print without a named printer fails there. cups_default sets one; it is the operator's choice, not declared.

Tools

All answer JSON; (r) reads, (a) acts. They run as the operator account. CUPS lets any account print and cancel its own jobs. Setting the default, resuming a printer, and cancelling another account's job are kept for its administrators, so those go through sudo -n; a cancel tries the account first.

tool what
cups_printers (r) every queue: state, enabled, accepting, default, device, make and model, driverless or not, state reasons, supply levels (low flagged)
cups_queue (r) jobs waiting or printing, or the completed ones, newest first, bounded
cups_cancel (a) one job, or every job on a printer
cups_print (a) a file on this machine to a printer or the default, with copies and IPP options; answers the job id
cups_default (r/a) read the default, or set it
cups_resume (a) enable a stopped printer and make it accept jobs
cups_drivers (r) how each queue prints, the packages that bring filters and backends (foreign ones flagged), findings, and the driver models CUPS offers, filtered

What changes when it is assigned

Nothing on disk on either workstation: both have cups (explicit) and cups-filters (as its dependency), with cups.socket and cups.service enabled and running. The packages become the mesh's; cups-filters is now declared explicitly.

The one-off step for the operator (ADR 0182)

The mesh removes nothing it did not install. Once the Brother queues are confirmed printing (they do today), remove the unused vendor drivers, once:

  • laptop: brother-mfc-l8690cdw, then whatever pacman -Qdtq shows it alone pulled in (lib32-glibc).
  • desktop: brother-mfc-l8390cdw and brother-mfc-l8390cdw-debug. Keep cnijfilter-mg4200 while the Canon queue is used.

Leaves as found

The queues and their PPDs, the default printer, cups.path (enabled by the package's preset), system-config-printer on the desktop, and cnijfilter-mg4200.