Files
mesh-catalog/modules/cups
jochen d0d5546088 Give the remaining tray applets their modules, each with one start
openrazer (the official driver, daemon and library), polychromatic (the
AUR tray, kept as found; its i3 line moves out of the i3 module into its
own node-display-session contribution), forticlient (the AUR VPN client:
its service declared, its configuration never read) and nm-applet (the
desktop half of NetworkManager, apart from the server-side module).

The openrazer daemon fails on both workstations because the account is
not in the openrazer group; openrazer_check names it and the README
carries the one-off step, since the account's user resource is zsh's.

desktop.go learns to tell a program from another sharing its 15-character
command name, so polychromatic's tools never count or end themselves, and
a copies test holds the six carriers to one text.
2026-10-05 15:10:30 +02:00
..

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.

The print applet: not this module's

The desktop has system-config-printer (official, explicit, installed 2026-10-04). Its package ships /etc/xdg/autostart/print-applet.desktop, so from the desktop's next login dex starts system-config-printer-applet, a tray icon for print jobs and printer problems. The laptop does not have the package.

This module does not take it:

  • cups needs no display and declares nothing graphical. The applet requires x11-display, and a GTK package in this module would put it on any machine that prints, the laptop included, where the operator never installed it.
  • The queues and the default printer are already this module's tools (cups_printers, cups_queue, cups_default), which is most of what the applet's window offers.

So the applet is left as found on the desktop, started by its package's entry. If it is wanted on both workstations, it becomes a system-config-printer desktop module of its own, beside blueman and nm-applet, requiring x11-display. If not, removing the package on the desktop ends it.

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.