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.