AppData files
If a package contains a GUI application, then it SHOULD also include a properly installed .appdata.xml file. Installed .appdata.xml files MUST follow the AppData specification page, and they must correctly validate using appdata-validate.
.appdata.xml file creation
If the package doesn't already include and install its own .appdata.xml file, you can make your own and sending it upstream. Benefits of sending the file upstream is that upstream can translate the file using the existing translation resources and can also modify the screenshots and descriptions as the application changes over time. If upstream is dead or unwilling you can do this downstream by including a .appdata.xml file you create as a Source: (e.g. Source3: %{name}.appdata.xml). Here is the contents of a sample .appdata.xml file (comical.appdata.xml):
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright 2014 Richard Hughes <richard@hughsie.com> --> <application> <id type="desktop">comical.appdata.xml</id> <metadata_license>CC0</metadata_license> <project_license>GPL-2.0+ and GFDL-1.3</project_license> <name>Comical</name> <summary>A Comic Archive Reader</summary> <description> <p> Comical is an easy to use and cross-platform CBR and CBZ reader. </p> <p> ...lots of prose about the application... </p> </description> <screenshots> <screenshot type="default">http://comical.sourceforge.net/ss-1.png</screenshot> <screenshot>http://comical.sourceforge.net/ss-2.png</screenshot> </screenshots> <url type="homepage">http://comical.sourceforge.net/</url> <updatecontact>richard_at_hughsie.com</updatecontact> </application>
The AppData file MUST be named with the same root as the .desktop file, so if the .desktop file is named org.gnome.SomeApp.desktop
then the AppData file MUST be called org.gnome.SomeApp.appdata.xml
.
desktop-file-install usage
Although you can just include the .appdata.xml file in the package, you SHOULD run appdata-validate
(in %check
or %install
) and have BuildRequires: appdata-tools
, to help ensure .appdata.xml file safety and spec-compliance. Here are some examples of usage:
appdata-validate --nonet %{buildroot}/%{_datadir}/appdata/*.appdata.xml