Elementos de una aplicación Flatpak

Flatpak espera que las aplicaciones sigan las convenciones del estándar del escritorio Linux. Éstas son suplementadas con una pequeña cantidad de elementos específicos de Flatpak que se usan para distribuir, instalar y lanzar las aplicaciones.

Elementos estándar de la aplicación

Las siguientes son algunas de las convenciones del escritorio Linux consideradas y esperadas por Flatpak. Se anima a los desarrolladores de aplicaciones a usarlas.

Estructura de la aplicación

Cuando una aplicación se construye usando flatpak, la salida cuenta con la siguiente estructura:

  • metadata - Un archivo clave que proporciona información sobre la aplicación.

  • /files - Los archivos que hacen a la aplicación, incluye el código fuente y los datos.

  • /files/bin - Binarios de la aplicación.

  • /export - Archivos a los que el entorno del host necesita acceder, tales como la AppData de la aplicación, el archivo .desktop, icono y archivos de servicios de D-Bus.

Todos los archivos en el directorio de exportación deben tener el ID de la aplicación como prefijo. Por ejemplo:

  • org.gnome.App.appdata.xml
  • org.gnome.App.desktop
  • org.gnome.App.png
  • org.gnome.App.service

Nombrar a los archivos de esta forma previene conflictos de nombres y asegura que no se sobreescriban las aplicaciones instaladas en el sistema.

Para nombrar archivos exportados de esta forma, se puede renombrar los archivos fuente relevantes, o usar flatpak-builder para renombrar los archivos durante la construcción. Esto último se explica en más detalle en la sección sobre flatpak-builder.

Archivos de metadatos

El archivo metadata de una aplicación proporciona información que permite a flatpak configurar el sandbox para lanzar la aplicación. Un archivo metadata típico luce así:

[Application]
name=org.gnome.gedit
runtime=org.gnome.Platform/x86_64/3.22
sdk=org.gnome.Sdk/x86_64/3.22
command=gedit

[Context]
shared=ipc;network;
sockets=x11;wayland;pulseaudio;
devices=dri;
filesystems=host;

[Environment]
GEDIT_FOO=bar

[Session Bus Policy]
org.extra.name=talk
org.other.name=own

Esto especifica el nombre de la aplicación, el runtime que requiere, el SDK con el que fue construida y el comando que se usa para lanzarla. También especifica el acceso a archivos y dispositivos, asigna variables de entorno (por supuesto, dentro del sandbox de la aplicación), y cómo se conecta con el bus de sesión. En las siguientes secciones se incluyen detalles sobre como cambiar estos parámetros de los metadatos.

Nota

Si bien es más común encontrar archivos de metadatos para las aplicaciones, los runtimes y las extensiones también los tienen.