Christopher Hirschauer
Builder @ the bleeding edge of MEV, automation, and high-speed arbitrage.
June 13, 2025
- Runs on most modern Linux distros without installation.
- Keeps your app as a single file — easy to send or host.
- Double-clickable in most file managers.
- No root needed.
- Can bundle your dependencies so users don’t need to install anything.
AppImager
is a lightweight interactive script for packaging your own applications, scripts, or binaries into AppImage bundles.
It asks for key details (name, version, executable path, optional icon) and builds a fully compliant AppImage with AppRun, .desktop
launcher, AppStream metadata, and optional icon support.
- Interactive prompts – enter name, version, target binary, and icon.
- AppStream compliant – generates valid reverse-DNS IDs, metadata XML, and
.desktop
files. - Icon support – bundle your own PNG icon, or generate a placeholder if ImageMagick is available.
- Safe packaging – validates paths, avoids invalid number-starting IDs, and warns on common mistakes.
- Portable – works wherever you have
bash
andappimagetool
.
- Linux system with
bash
appimagetool
(appimagetool-x86_64.AppImage
placed in the same folder or installed inPATH
)- Optional: ImageMagick (
convert
) for generating placeholder icons
- Clone or copy
appImager.sh
into your project folder:
git clone https://github.com/74Thirsty/appImager.git
cd your-repo
chmod +x appImager.sh
- Run the script:
./appImager.sh
-
Answer the interactive prompts:
- App name: must match your main executable name (letters preferred, avoid starting with numbers).
- Target directory: where the
.AppDir
will be created (defaults to current directory). - Version: semantic version (e.g.
1.0.0
). - Binary path: full path to your script or executable.
- Icon path: optional PNG (256×256 recommended).
-
When finished, you’ll see your AppImage in the target directory:
./myApp-x86_64.AppImage
$ ./appImager.sh
==================================================
INTERACTIVE APPIMAGE BUILDER
==================================================
Enter your app name (must match the executable script name): mytool
Enter target directory path to create AppDir in [/home/user]:
Enter app version [0.1.0]: 1.2.0
Enter the full path to your executable script or binary: /home/user/dev/mytool.py
Optional: path to a PNG icon (256x256 ideal), or press Enter to skip: /home/user/icons/mytool.png
Enter Reverse-DNS ID base (e.g., io.github.username) — MUST start with a LETTER, not a number [io.github.user]: io.github.myself
Output:
[appimager] {"level":"INFO","msg":"Packaging AppImage with ./appimagetool-x86_64.AppImage"}
[appimager] {"level":"INFO","msg":"Success"}
Built: /home/user/mytool-x86_64.AppImage
You didn’t provide an icon, and the .desktop
file expects one.
➡️ Either:
- Provide a 256×256 PNG icon when prompted, or
- Place
yourApp.png
inside<AppDir>/yourApp.png
manually.
Your AppStream XML is missing release information.
➡️ Add a <release>
section in usr/share/metainfo/yourApp.appdata.xml
. Example:
<releases>
<release version="1.0.0" date="2025-08-20"/>
</releases>
Your AppStream ID or app name is invalid (e.g., starts with a number). ➡️ Always use reverse-DNS IDs starting with a letter. Example:
- ✅
io.github.username.mytool
- ❌
74Thirsty.mytool
The generated .desktop
file wasn’t placed correctly.
➡️ Ensure it exists at:
<AppDir>/usr/share/applications/yourApp.desktop
The appimagetool
binary is missing or not executable.
➡️ Download it from AppImageKit releases and place it in the script directory:
chmod +x appimagetool-x86_64.AppImage
This project bundles appimagetool-x86_64.AppImage
from AppImageKit,
licensed under the MIT License. See LICENSES/AppImageKit-LICENSE.txt
for details.
- Do not use numbers at the start of the app name or reverse-DNS IDs. AppStream validation will reject these.
- If you provide a Python script as the binary, the launcher automatically runs it with
python3
. - You can rebuild at any time; existing
.AppDir
folders can be reused or recreated.
This script is released under the MIT License. Use it freely in your projects.