This feature allows printers connected to the client to show as virtual printers on the server so that printing can transparently be forwarded back to the client's printer(s).
This functionality shares most of the code with the file transfers, as the print job is first rendered to a file before being sent to the client.
apt-get install cups-filters cups-common cups-pdf python3-cups
to install the missing piecessys
group: gpasswd -a $USER sys
lpadmin
group: usermod -a -G lpadmin $USER
0700
permissions: chmod 700 /usr/lib/cups/backend/xpraforwarder
10.10
(aka Yosemite) prevents the xpra cups backend from connecting to the xpra server, to fix this run: sudo sh -c 'echo "Sandboxing Relaxed" >> /etc/cups/cups-files.conf';sudo launchctl stop org.cups.cupsd
How does this work? The xpra client exports the list of local printers to the xpra server, the server can then create the same list of virtual printers using the lpadmin
command.
Those virtual printers are actually PDF or postscript scripts.
When the user sends a print job to one of those virtual printers, the script captures the rendered document and forwards it to the client who owns this particular virtual printer. The xpra client then sends this PDF / postscript document straight to the actual printer.
The HTML5 client is written in Javascript, so it does not have access to the printer device information and the PDF document is presented for printing via the standard browser's print dialog.
Print.exe
on MS Windows and as Xpra.app/Contents/Helpers/Print
on MacOS./xpra/platform/printing.py /path/to/yourfile.pdf
-d printing
debug flags (see debug logging)sudo journalctl -f -t xpraforwarder
)cupsctl --debug-logging