I was asked to produce a checklist for applications that we want to show up in GNOME Software in Fedora 25. In this post I’ll refer to applications as graphical programs, rather than other system add-on components like drivers and codecs (which the next post will talk about). There is a big checklist, which really is the bare minimum that the distributor has to provide so that the application is listed correctly. If any of these points is causing problems or is confusing, please let me know and I’ll do my best to help.
So, these things really have to be done:
- Verify that you ship a .desktop file for each built application, and that these keys exist:
Name
,Comment
,Icon
,Categories
,Keywords
andExec
and thatdesktop-file-validate
correctly validates the file. - Verify that there is a PNG (with transparent background) or SVG icon is installed in
/usr/share/icons
,/usr/share/icons/hicolor/*/apps/*
, or/usr/share/${app_name}/icons/*
and is at least 64×64 in size. - At least one valid AppData file with the suffix
.appdata.xml
file must be installed into/usr/share/appdata
with an<id>
that matches the name of the .desktop file, e.g.gimp.appdata.xml
. Ideally the name of both the desktop file and appdata should be reverse DNS, e.g.com.hughski.ColorHug.desktop
rather thancolorhug-client.desktop
although this isn’t critically important. - Include several 16:9 aspect screenshots in the AppData file along with a compelling translated description made up of multiple paragraphs. Make sure you follow the style guide, which can be tested using
appstream-util validate foo.appdata.xml
- Make sure that there are not two applications installed with one package; in this case split up the package so that there are multiple subpackages or mark one of the .desktop files as
NoDisplay=true
. Make sure the application-subpackages depend on any-common
subpackage and deal with upgrades (perhaps using a metapackage) if you’ve shipped the application before. - Make sure your application is visible in the
example.xml.gz
file when runningappstream-builder
on the binary rpm(s). - Make sure the AppStream metadata is regenerated when the application is updated in the repo, for more details see an entire blog post on this
- Ensure that
enabled_metadata=1
is set in the.repo
file. This means that PackageKit will automatically download just the application metadata even when the repository is disabled.