# 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`.