If a package contains a GUI application, then it SHOULD also install a
.appdata.xml
file into %{_datadir}/metainfo/
. Installed
.appdata.xml
files MUST follow the AppData specification
page.
If a package contains an add-on for GUI application, then it SHOULD also
install a .metainfo.xml
file into %{_datadir}/metainfo/
.
Installed .metainfo.xml
files MUST follow the AppStream add-ons
specification
page.
The AppData files MUST correctly validate using
appstream-util validate-relax
.
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. You
can do this by including a .appdata.xml
file you create as a Source:
(e.g. Source3: %{name}.appdata.xml
) or generating it in the spec file.
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> -->
<component type="desktop">
<id>comical.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0+ and GFDL-1.3</project_license>
<name>Comical</name>
<summary>A Comic Archive Reader</summary>
<summary xml:lang="fr">Un Comic Archive Lecteur</summary>
<description>
<p>
Comical is an easy to use and cross-platform CBR and CBZ reader which
prefetches and caches pages for speed.
</p>
<p xml:lang="fr">
Comical est une CBR et CBZ lecteur facile à utiliser et
multi-plateforme qui prélectures et caches pages pour la vitesse.
</p>
<p>
Resized images are crisp, and you can view pages one or two at a time.
Comical is open-source, so feel free to contribute new features!
</p>
<p xml:lang="fr">
Images redimensionnées sont nettes, et vous pouvez voir une ou deux pages à la fois.
Comical est open-source, alors n'hésitez pas à apporter de nouvelles fonctionnalités!
</p>
</description>
<screenshots>
<screenshot type="default">
<image>http://comical.sourceforge.net/images/comical-0.5-linux.jpg</image>
</screenshot>
<screenshot>
<image>http://comical.sourceforge.net/images/comical-0.6-win32.jpg</image>
</screenshot>
</screenshots>
<url type="homepage">http://comical.sourceforge.net/</url>
<update_contact>richard_at_hughsie.com</update_contact>
</component>
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
.
If the add-on package doesn’t already include and install its own
.metainfo.xml
file, you can make your own and sending it upstream.
You can do this by including a .metainfo.xml
file you create as a
Source: (e.g. Source4: %{name}.metainfo.xml) or generating it in the
spec file. Here is the contents of a sample .metainfo.xml
file
(gedit-bookmarks.metainfo.xml):
<?xml version="1.0" encoding="UTF-8"?>
<component type="addon">
<id>gedit-bookmarks</id>
<extends>gedit.desktop</extends>
<name>Bookmarks</name>
<summary>Easy document navigation with bookmarks</summary>
<url type="homepage">https://wiki.gnome.org/Apps/Gedit/ShippedPlugins</url>
<url type="bugtracker">https://bugzilla.gnome.org/enter_bug.cgi?product=gedit&component=Plugins</url>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0+</project_license>
</component>
You can use anything as the but it needs to be unique and sensible and
also match the .metainfo.xml
filename prefix.
Although you can just include the .appdata.xml or .metainfo.xml files in
the package, you MUST run appstream-util validate-relax
(in
%check
or %install
) and have
BuildRequires: libappstream-glib
, to help ensure the validity and
safety of the appdata files you’re installing. An example:
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml