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.
104 lines
5.6 KiB
Markdown
104 lines
5.6 KiB
Markdown
# 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`.
|