Applications that control Snap interfaces need to show descriptions to users. This is currently done using description text that the design and security teams came up with. For example, the “home” interface is described as “Access files in your home folder”. snapd provides summary text for each of the interfaces and this is shown when ‘snap interface’ is called. The “home” interface has the summary “allows access to non-hidden files in the home directory”. The text provided by snapd is unsuitable because it is not worded in a suitable way (sentence fragments, too technical) for the user interface and is not translatable.
$ snap interface
Name Summary
appstream-metadata allows access to AppStream metadata
audio-playback allows audio playback via supporting services
browser-support allows access to various APIs needed by modern web browsers
content allows sharing code and data with other snaps
cups-control allows access to the CUPS control socket
desktop allows access to basic graphical desktop resources
desktop-legacy allows privileged access to desktop legacy methods
gsettings allows access to any gsettings item of current user
hardware-observe allows reading information about system hardware
home allows access to non-hidden files in the home directory
log-observe allows read access to system logs
lxd-support allows operating as the LXD service
mount-observe allows reading mount table and quota information
network allows access to the network
network-bind allows operating as a network service
network-manager allows operating as the NetworkManager service
network-observe allows querying network status
opengl allows access to OpenGL stack
packagekit-control allows control of the PackageKit service
password-manager-service allows access to common password manager services
process-control allows controlling other processes
pulseaudio allows operating as or interacting with the pulseaudio service
snapd-control allows communicating with snapd
system-files allows access to system files or directories
system-observe allows observing all processes and drivers
unity7 allows interacting with Unity 7 services
upower-observe allows operating as or reading from the UPower service
wayland allows access to compositors supporting wayland protocol
x11 allows interacting with or running as an X11 server
There is an ongoing issue that every time a new interface is created, clients need to update their table of descriptions. For example today, the system settings app doesn’t understand the audio-playback interface, as this was added after the text was decided for interfaces. So users just get the fallback behaviour of showing the interface name:
If we were to replace the text with the summaries provided by snapd, it would instead look like this (and only show in English):
We really need to manage the descriptions in a central location to allow this to scale. The following possibilities come to mind:
-
Change the summary text provided by snapd so that it is suitable for both the command line and GUI.
-
Add a new field to the snapd metadata that has text suitable for this case and keep existing summary text unchanged.
-
Implement translations in snapd. This is really required for the above two options.
-
Move the interface descriptions into snapd-glib as this is easier to update and many clients use this.