Add a Printer in i3

In a desktop environment, you might have a printer dialog that you could open to add a new printer. Not in the powerful, less graphical, i3. Here's another way.

CUPS

What is cups? It stands/stood for Common UNIX Printing System. It converts the print job into a language that the printer can understand so that the ink splatters on the page in just the right way as to create a Mona Lisa replica.

It's probably already running on your computer. Check:

❯ systemctl | rg cups
  cups.path                                                                                             loaded active running   CUPS Scheduler
  cups-browsed.service                                                                                  loaded active running   Make remote CUPS printers available locally
  cups.service                                                                                          loaded active running   CUPS Scheduler
  cups.socket                                                                                           loaded active running   CUPS Scheduler

Yep, 'tis.

Once you have CUPS running locally, you should be able to print from your computer.

List Available Printers

To see what printers you already have installed, run the cli to show all cups-enabled printers:

lpstat -p

(There are other cool commands, like lpstat -R to see pending print jobs.)

Or see similar info in a web gui:

xdg-open localhost:631

Problem: Installed Printer Won't Print

Apparently the cups-browsed package will auto-install printers on the network. Well, that happened to me. I had a nicely-identified printer in my list of printers. The problem was that it wouldn't accept print jobs. On the print job, I would get the error message:

"No suitable destination host found by cups-browsed."

Removed cups-browsed. Reboot. Installed Printer manually

See drivers?

lpinfo -m | rg 8610

drv:///hpcups.drv/hp-officejet_pro_8610.ppd HP Officejet Pro 8610, hpcups 3.21.12

What are .ppd fileshttps://en.wikipedia.org/wiki/PostScript_Printer_Description

See network protocols

lpinfo -v

No idea best. Saw lpd used in an example

https://en.wikipedia.org/wiki/Line_Printer_Daemon_protocol

❯ lpadmin -p hp8610-jtmade3 -v lpd://192.168.50.68 -m drv:///hpcups.drv/hp-officejet_pro_8620.ppd -Elpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS.

Problem: Stuck on "Connecting to Printer"

I entered the correct IP. The printer is added, registered with CUPS. Still, it would not send the job and print.

sudo vim /etc/cups/cupsd.conf
  # All administration operations require an administrator to authenticate...
  
    #AuthType Default
    #Require user @SYSTEM
    Order deny,allow
  

  # All printer operations require a printer operator to authenticate...
  
    #AuthType Default
    #Require user @SYSTEM
    Order deny,allow
  

Then restart the cups server

Remove a Printer

lpadmin -x hp8610-jtmade3

Readd

Alternative: Desktop Settings Manager

If you have a desktop environment also installed on your system, you may already have some printer system app that can be used to manage printers. Fire up dmenu, and try:

system-config-printer

Find/add/delete should be available there.

Resources