Fedora 26 is not out yet, but it’s already time to think about how to improve the Workstation edition of Fedora 27. One of the areas my team is focusing on is printing (the desktop side of it). For GNOME 3.24 and Fedora 26 Workstation we landed a new interface for the printing module in GNOME Control Center. It gives a much cleaner overview of printers that are set up on your system.
One thing that I think deserves an improvement is printer sharing. GNOME Control Center doesn’t allow you to easily share a printer with other devices over the network. I’ve heard users complain about it and the competition provides it (even though Windows do it very unintuitively). Sharing via IPP is a pretty low hanging fruit because that’s what CUPS already perfectly supports, you just need to expose it in the UI.
A common use case is sharing a printer with your mobile devices. iOS uses AirPrint which is an extension of the IPP, you just need to convince the device that it’s talking to an AirPrint server. To support Android devices, I think the best way is to use Google Cloud Print. We already support Google Cloud Print, but from the client side. I wonder if it’d be useful to support the server side as well. Google provides an open source server implementation, but it’s written in Go and unnecessarily advanced for our use cases, so writing our own implementation would probably be a better way to go. But I wonder if it’d be worth it. Do people use Google Cloud Print? If not, how do you print from your Android device?
Or are there any other things you think we should improve in printing (desktop-wise)?
34 thoughts on “Printing Improvements for Fedora 27 Workstation”
Android has an API for different printer providers and there is an open source one for CUPS: http://benoitduffez.github.io/AndroidCupsPrint/
Personally, I don’t use Cloud Print. I find “Type this cryptic address into your phone” needlessly complicated. Maybe it works better with a QR code.
As Michael pointed out, Android has an API for printer providers. I use an app called PrintHand which I got for free via Amazon. It usually costs money.
Have you thought about offering proper integration of KDE Connect into Gnome? If there was a full-fledged KDE Connect extension for Gnome and a “Share this printer with paired phone” option, it’d be probably very, very convenient.
It may be a little offtopic, but one of the goals of System76 is to integrate KDE connect with GNOME with upstream patches.
Currenty I use KDE Connect + indicator-kdeconnect + KStatusNotifierItem Gnome extension. It’s OK but not perfect. If there was a proper extension and support in KDE Connect for Android’s printer API, I’d be very happy.
I use Cloud Print, and it’s great. Saves me a ton of trouble with printer drivers
I don’t use Google Cloud Print, due to privacy concerns. When there is a local network printer and a local device, why should the data being printed make a trip around the world?
For android devices, there is a CUPS printing provider – https://play.google.com/store/apps/details?id=io.github.benoitduffez.cupsprint . It works with local IPP printers perfectly.
That’s the thing. It doesn’t. If the client and the server are on the same network they communicate P2P. Only if one of them is on a different network it’s sent via Google servers.
When did they change that? When I was playing with it (though it was few years ago), after submitting the print job it appeared in the GCP console immediately, but it took several minutes(!) for the job to be submitted to the local printer. At the time, it definitely didn’t go P2P.
The other thing is: what is the use case for non-local printing? Except for accidents? 😉
With the 2.0 version.
Wikipedia: “Google Cloud Print 2.0 adds support for a local mode similar in operation to AirPrint. Unlike the original version of Cloud Print, v 2.0 does not require either the printer or printing client be connected to the Internet. Local mode uses a new discovery protocol, called Privet, which uses Multicast DNS and DNS-SD for discovery and HTTPS for transmitting print jobs to the printer. Clients supporting this mode only list printers that are discoverable on the same subnet the device is connected to, and forget the printers once disconnected from that subnet.”
Here is dev docs: https://developers.google.com/cloud-print/docs/privet
I think the biggest benefit of Google Cloud Print is that you can actually define what users can print on your printer. Of course, you need to trust Google.
I started reading with excitement, that it looks nice, and that local mode looks usable. Until I came to the part 5: https://developers.google.com/cloud-print/docs/privet#printer_api
It is still non-local first, local only as failsafe 😦
So after a brief thinking, that it would be a more user friendly for Android users, that they do not have to install anything, and systems that do not support IPP, but do have Chrome (is there any?), there came a cold shower: yes, it still talks to Google when it doesn’t need to.
From privacy POV, I still consider Apple solution (mDNS + IPP) better. All the parts are already there anyway.
Here’s a tracking bug for GNOME printer sharing: https://bugzilla.gnome.org/777882
Yeah, I know about the bug report. I think one of the reasons why it was stalled is privacy and security concerns. You don’t want to share your printers everywhere. But now when we have infrastructure for defining on what network it can be shared it should be solvable.
I don’t use cloud print. Adding remote shared printer in LAN is still hard. When adding, we can browse a lot of same printer shared by other connected desktop by default, which hide real host where that printer plugged. After that adding remote printer does not work just using control center, because driver not automatically installed. Finally I have to install system-config-printer to successfully add network printer
Something much needed to improve is to add integration with the Shell. An indicator or notification with quick access to the print queue is very necessary to improve usability. I still use today system-config-printer.
Just to add my 2 cents worth. I also do not use Google Air Print. No particular reason and not because of security issues either. Just haven’t had a use case yet. On a side note I just wish Gnome print center would show ink levels for my HP Officejet 6010 all in one. It hasn’t since beginning to use Ubuntu 15.10. Now using Ubuntu 16.10 with Gnome DE. Still no ink levels. However the QT app HPLIP shows ink levels and has every adjustment as Gnome Print center. How come a third party app does this and not the built in Gnome app in both Unity and Gnome ??
Why don’t you upgrade to Ubuntu GNOME 17.04? I don’t know if that will fix your ink level problem but you should get something looking like the screenshot.
Ok….but that doesn’t answer the question. HPLIP has been able to show ink levels on all the HP printers I’ve owned for the last 3 years over different distributions ranging from OpenSuse to Fedora and now Ubuntu. But never with Gnome print center and I use Gnome on all three distros.
I won’t touch 17.04. May wait for 17.10 or 18.04. Until then HPLIP ( HP Linux Imaging and Printing ) is my goto and default printer setup and management software. Just wish it was native Gnome and not a Qt app from HP.
Are you aware that 16.10 will no longer be supported in July? You need to upgrade to 17.04 (where you get the improved Printers panel and other nice things) or install a supported version like 16.04 LTS if you don’t like upgrading twice per year.
I am aware of that. I have found in my personal computing experience that the October releases are really good and the non LTS April releases a bit sketchy. Of course everybody’s mileage varies. Maybe I will give 17.04 a try in July. Of course….my mission critical rigs are on LTS only releases so no printer improvements until next year or unless this gets backported to 16.04 LTS
I use Google Cloud Print. It help’s me print on unsupporting printers through Windows print server with Google Chrome.
I would like the following improvements:
1) To print on Google Cloud Print it was possible from any programs, not just from evince. In particular, I want to print from the Libre Office.
2) I also would like the server part both for Linux and for Windows, so that printers were available without the running Google Chrome browser.
For your point 2), you are looking for Cloud Print Connector: https://github.com/google/cloud-print-connector. It was linked in the article…
This I would like to see in Fedora. I have a range of Android devices at home and work and printing to the various printers is awkward. Have Google cloud print connector would be great.
I use HP provider on Android, but it’ll be certainly nice to have Cloud Print working.
I don’t and won’t use Google Cloud Print due to privacy issues.
If you create a proper way to print locally from mobile without exposing my network or printers to Google or someone else that would be great.
If you go the easy way and embrace Google Cloud, better improve something else.
Could we have support for manual duplex printing? gnome-manual-duplex seems pretty outdated.
Texas-sized 10-4 on this! Manual duplexing is something that GNOME Print should handle natively without having to bolt on something like gnome-manual-duplex virtual printers for.
I have a HP LaserJet Pro MFP M125NW connected to the network. When setting it up in the GNOME control center under Fedora it is detected perfectly, and set up and shows up as working.
However, when you try to print it fails without any explanation. Turns out you need to run hp-setup (if memory serves me right) in the terminal to download an HP proprietary plugin. I can see why this is not bundled, but at least this tool might be run automatically, or the user might be given a hint. A normal user would never know why his printer that shows up as properly working in the control center does not actually print.
The same goes for scanning.
Improvements in the HP printer setup would be very much welcomed. I’ve had the same experience. It’s not clear you have to manually download something for the printer to work.
At my university all printers (~500) are on a separate network,
Access is only via the print server, authenticating with Kerberos.
All our clients use a configuration file with ‘servername’ pointing directly to the server.
No users are allowed to make any system-wide configuration changes on the client.
The desktop solution, suitable for small numbers of printers and/or the user is administrator of the computer, does not work very well in our environment.
Please do not leave us in the cold.
Current problems include, but are not limited to
* All defined printers shows up in the print dialogs in the applications. A very long list. A way to ‘map printers’ like in Windows would be nice. This could also solve a problem where Matlab/Java cant find all printers, making printing impossible.
* Printing from mobile, self-administred devices like Android and IOS to print server is not solved.
On the other hand, things like current ink level is of no interest, since that is monitored and taken care of by our support staff.
Information of the current status (down/paused/..) is of interest
I know it’s a little unrelated, but the fact that Libre office used it’s own (ugly) print dialogue is confusing. Support for the Gnome print dialogue is possible, but why isn’t it default?
I’d like to see better support/integration for 3rd party management programs like what HP provides with HPLIP http://hplipopensource.com/hplip-web/index.html
As an administrator for a lot of Linux workstations it is very confusing to get so much additional functionality out of HPLIP but need to use the HP tools instead of the built in GNOME tools. Making the tools easier to integrate or providing the same functionality in the GNOME tools would be ideal.
P.S. I don’t use Chrome print
Probably late to the party, but being able to print to my local printers using Cloud Print from my Chromebook would be lovely. Cloud print isn’t just Android related.
Any more recommendations you could share with me? This is what I’m trying to find. I am reading your posts while camping. I just wanted to say thanks for this awesome post.