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).
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_printersanswers 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_defaultsets 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 whateverpacman -Qdtqshows it alone pulled in (lib32-glibc). - desktop:
brother-mfc-l8390cdwandbrother-mfc-l8390cdw-debug. Keepcnijfilter-mg4200while 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.