-
-
Notifications
You must be signed in to change notification settings - Fork 406
Extensions
An extension is an optional piece that can be plugged into a filesystem. They can be created for both applications and runtimes and are used for several purposes:
- To separate translations and debug information from each application. Since these parts can be large and are not always wanted, it makes sense to allow them to be optionally installed alongside the application.
- For software components that need to be distributed separately from an application or library. Primary examples of this include GL libraries (which need to be provided by the host) and GStreamer plugins (which can't always be distributed for legal reasons).
Like runtimes, extensions are declared in the metadata of an application. They are then mounted by flatpak inside the application's sandbox. A typical extension section in a metadata file looks like this::
[Extension org.gnome.Platform.GL]
version=1.4
directory=lib/GL
More complicated extension points can accept multiple extensions that are mounted below a single directory. For example, the org.freedesktop.Platform
runtime defines an extension point for GStreamer::
[Extension org.freedesktop.Platform.GStreamer]
version=1.4
directory=lib/extensions/gstreamer-1.0
subdirectories=true
Here, the subdirectories=true
key means that an extension with the org.freedesktop.Platform.GStreamer.mp3
ID would be mounted within /usr/lib/extensions/gstreamer-1.0/mp3
in the sandbox. This is how the org.freedesktop.Platform
knows where to look for GStreamer plugins.
Visit flatpak.org for information on getting started, developer documentation and details of available applications and runtimes.