Flatpak
Single-file Flatpak bundles
Currently electron-builder does not support publishing apps to Flatpak repositories like Flathub. This means the Flatpak support in electron-builder is limited to generating single-file bundles which have various limitations compared to app bundles installed from a repository.
For what it’s worth, there are some plans to make it easier to publish Electron apps to Flathub. When that happens, it should be easier to create a Flathub publisher for electron-builder (which would work similary to the other publishers).
The top-level flatpak key contains a set of options instructing electron-builder on how it should build a Flatpak bundle.
Build dependencies
The flatpak and flatpak-builder packages need to be installed in order to build Flatpak bundles.
-
licenseString | “undefined” - The path to EULA license file. Defaults tolicense.txtoreula.txt(or uppercase variants). Only plain text is supported. -
runtimeString - The name of the runtime that the application uses. Defaults toorg.freedesktop.Platform. -
runtimeVersionString - The version of the runtime that the application uses. Defaults to20.08. -
sdkString - The name of the development runtime that the application builds with. Defaults toorg.freedesktop.Sdk. -
baseString - Start with the files from the specified application. This can be used to create applications that extend another application. Defaults to org.electronjs.Electron2.BaseApp. -
baseVersionString - Use this specific version of the application specified in base. Defaults to20.08. -
branchString - The branch to use when exporting the application. Defaults tomaster. -
finishArgsArray<String> - An array of arguments passed to the flatpak build-finish command. Defaults to:json [ // Wayland/X11 Rendering "--socket=wayland", "--socket=x11", "--share=ipc", // Open GL "--device=dri", // Audio output "--socket=pulseaudio", // Read/write home directory access "--filesystem=home", // Allow communication with network "--share=network", // System notifications with libnotify "--talk-name=org.freedesktop.Notifications", ] -
modulesArray<any> - An array of objects specifying the modules to be built in order. -
filesArray - Files to copy directly into the app. Should be a list of [source, dest] tuples. Source should be a relative/absolute path to a file/directory to copy into the flatpak, and dest should be the path inside the app install prefix (e.g. /share/applications/). -
symlinksArray - Symlinks to create in the app files. Should be a list of [target, location] symlink tuples. Target can be either a relative or absolute path inside the app install prefix, and location should be a absolute path inside the prefix to create the symlink at. -
useWaylandFlagsBoolean - Whether to enable the Wayland specific flags (--enable-features=UseOzonePlatform --ozone-platform=wayland) in the wrapper script. These flags are only available starting with Electron version 12. Defaults tofalse.
Inherited from CommonLinuxOptions:
synopsisString | “undefined” - The short description.descriptionString | “undefined” - As description from application package.json, but allows you to specify different for Linux.categoryString | “undefined” - The application category.mimeTypesArray<String> | “undefined” - The mime types in addition to specified in the file associations. Use it if you don’t want to register a new mime type, but reuse existing.desktopany | “undefined” - The Desktop file entries (name to value).executableArgsArray<String> | “undefined” - The executable parameters. Pass to executableName
Inherited from TargetSpecificOptions:
artifactNameString | “undefined” - The artifact file name template.publishThe publish options.
Troubleshooting¶
If the Flatpak build process fails with an error message like “flatpak failed with status code X”, setting the DEBUG="@malept/flatpak-bundler" environment variable should provide more context about the error.
Enable Flatpak build debug logging
env DEBUG="@malept/flatpak-bundler" electron-builder build --linux flatpak