AppBundle Documentation & Implementation Details Labs

PELF - The AppBundle format and the AppBundle Creation Tool

PELF used to stand for Pack an Elf, but we slowly evolved into a much simpler yet more featureful alternative to .AppImages
PELF now refers to the tool used to create .AppBundles

.AppBundles are an executable packaging format designed to pack applications, toolchains, window managers, and multiple programs into a single portable file.

AppBundles can serve as a drop-in replacement for AppImages. Both AppBundles and AppImages utilize the AppDir specification, making it easy to unpack an AppImage and re-package it as an AppBundle, gaining many features, such as faster start-up times, better compression and file de-duplication, and faster build-time. A completely customizable and flexible format.

Advantages

Usage

./pelf --add-appdir "nano-14_02_2025.AppDir" --appbundle-id "nano-14_02_2025-xplshn" --output-to "nano-14_02_2025.dwfs.AppBundle"

OR

./pelf --add-appdir "nano-14_02_2025.AppDir" --appbundle-id "nano-14_02_2025-xplshn" --output-to "nano-14_02_2025.sqfs.AppBundle"

Build ./pelf

  1. Get yourself an up-to-date go toolchain and install dbin into your system or put it anywhere in your $PATH
  2. execute ./cbuild.sh
  3. Put the resulting ./pelf binary in your $PATH
  4. Spread the joy of AppBundles! :)

Usage of the Resulting .AppBundle

By using the --pbundle_link option, you can access files contained within the ./bin or ./usr/bin directories of an .AppBundle, inheriting environment variables like PATH. This allows multiple AppBundles to stack on top of each other, sharing libraries and binaries across “parent” bundles.

Explanation

You specify an AppDir to be packed and an ID for the app. This ID will be used when mounting the .AppBundle and should include the packing date, the project or program name, and the maintainer’s information. While you can choose an arbitrary name, it’s not recommended.

Additionally, we embed the tools used for mounting and unmounting the .AppBundle, such as dwarfs when using pelf.

Screenshot showcasing a bunch of AppBundles with their icons correctly set in a thunar file manager window

Known working distros/OSes:

Resources: