Data Files

The data directory contains files that are not included in the resource file that is used by the application. These files will be installed to standard locations in the filing system, such as /usr/share/icons and the application’s own installation directory.

Name Purpose
icons/hicolor/scalable/apps A directory containing the icon for the application.
images A directory containing images used in the application.
meson.build The build file for the data directory.
com.example.treasure.appdata.xml.in An AppStream metadata file.
com.example.treasure.desktop.in An Desktop Entry file.

The icons directory in this example contains a deeply-nested set of directories with a Scalable Vector Graphics (SVG) file called treasure.svg inside them. This reflects the structure of the directories where application icons are stored by the system but, for simple applications like this one, the icon could be kept in the data directory itself. The meson.build file contains a rule for installing this directory structure in the correct place.

The images directory contains the images that the application uses for the tiles in the game. Instead of handling each SVG individually, the meson.build file contains a rule for installing the whole images directory to the application’s installation directory.

Additional Files

There are two additional files that appear in the data directory. Both of these are templates that will be processed to produce files that can be installed.

The com.example.treasure.appdata.xml.in file is a template of an AppStream file, containing metadata including the license of the application and a short piece of text describing what it does:

<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
    <id>com.example.treasure.desktop</id>
    <metadata_license>CC0-1.0</metadata_license>
    <project_license>GPL-3.0-or-later</project_license>
    <description>
        A simple guessing game.
    </description>
</component>

Although this file was written by hand, AppStream files can also be created using tools such as the AppStream MetaInfo Creator web application.

The com.example.treasure.desktop.in file is a template of a Desktop Entry file that application launchers can use to show information about the application, including its name, icon and the name of its executable file:

[Desktop Entry]
Name=Treasure
Icon=com.example.treasure
Exec=treasure
Terminal=false
Type=Application
Categories=Game
StartupNotify=false

When the build system runs, these files are processed to create com.example.treasure.appdata.xml and com.example.treasure.desktop files that can be packaged for installation on users’ systems.