TODO List
What still needs to be done is the following:
-
snapd 2.55 release: The new snapd with the included
cupsinterface needs to get released to the stable channel of the Snap Store. This will happen in 2-3 weeks from now. -
Snap Store permissions: [DONE] Request permissions from the Snap Store team for the CUPS Snap to use the
cups-socket-directoryattribute and for auto-connection of any Snap’scupsplug to thecupsslot of the CUPS Snap. I have already posted the request here on the forum. -
/var/snapin base Snaps: [IN PROGRESS] @ijohnson will post PRs (Update: has posted, see below, and they got all merged) on the base Snaps to create the/var/snapdirectory. @ijohnson: There are some other PR’s I will file to the base snaps which will behind the scenes make using thecupsinterface more efficient, but that will not change how it’s used at all (it will just change the mount namespace setup by creating the/var/cupsdirectory there so we don’t have to do lots of mount tricks) -
CUPS Snap auto-installation: [DONE via placeholder content interface] When an application Snap plugging
cupsgets installed from the Snap Store and the CUPS Snap is not installed (or a too old version), the CUPS Snap gets automatically installed in addition to the application Snap, like a package dependency. @ijohnson plans to adapt thedefault-providersetting to also work for thecupsinterface here: We have to either manually enable this using a transitional placeholder content interface or adapt thedefault-providersetting to also work for thecupsinterface. I plan on doing the latter at some point soon so I don’t think that the former needs to be implemented. -
Snapcraft extension to auto-set CUPS_SERVER environment variable: [NOT NEEDED ANY MORE] Currently in the
snapcraft.yamlof an application Snap using thecupsinterface we have to set theCUPS_SERVERenvironment variable to/var/cups/cups.sockviaenvironment:entry. This can be made automatic by a snapcraft extension. @ijohnson: That environment variable setting could probably be done with a snapcraft extension, which is not added to snapd, but rather to snapcraft itself. The extension could look like this and also cover the CUPS Snap auto-install. Update: The automatic setting of theCUPS_SERVERenvironment variable is already done by snapd. -
Changes in CUPS Snap: The CUPS Snap needs to have the correct
cupsslot definition, as shown in my previous post, with the “cups-socket-directory: $SNAP_COMMON/run” line added and also in the beginning of thesnapcraft.yamla line “assumes: [snapd2.55]” added as then the Snap will not work with older snapd versions any more. This I only will do when snapd 2.55 gets actually released to the stable channel, to make sure that the CUPS Snap can always be downloaded and used.
With all this done we will be able to launch the new cups interface and tell all the snappers out there to use it for their printing applications, like LibreOffice, Darktable, evince, gedit, …