This is an experimental implementation of the AppImage command line tool, appimagetool, in Go, mainly to see what is possible. It can also do, using the deploy verb, what linuxdeployqt does.
Assuming you are using a 64-bit Intel machine (amd64, also known as x86_64), you can use our pre-compiled binaries. To try it out:
wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2)
chmod +x appimagetool-*.AppImage
./appimagetool-*.AppImage -s deploy ./AppDir/usr/share/applications/*.desktop # Bundle EVERYTHING
# or
./appimagetool-*.AppImage deploy ./AppDir/usr/share/applications/*.desktop # Bundle everything expect what comes with the base system
# and
VERSION=1.0 ./appimagetool-*.AppImage ./AppDir # turn AppDir into AppImagehttps://github.com/probonopd/go-appimage/releases/tag/continuous has builds for 32-bit Intel, 32-bit ARM (e.g., Raspberry Pi), and 64-bit ARM.
QTDIR: root directory for the Qt installation to copy shared libraries from, e.g./usr/lib/qt6/
When appimagetool runs on GitHub Actions, it automatically:
- Embeds UpdateInformation into the AppImage
- Generates a
.zsyncfile alongside the AppImage for efficient delta updates - Uploads both files to the GitHub Release
The UpdateInformation format is:
gh-releases-zsync|<owner>|<repo>|<release>|<AppName>-*-<arch>.AppImage.zsync
This is detected automatically using GITHUB_REPOSITORY and GITHUB_REF environment variables.
The release channel is determined as:
continuous- for builds from the master branchlatest- for tagged releases (non-continuous)
Implemented
- Creates AppImage
- If running on GitHub Actions, determines updateinformation, embeds updateinformation, signs, and writes zsync file
- Simplified signing
- Automatic upload to GitHub Releases
- Prepare self-contained AppDirs using the
deployverb - Bundle GStreamer
- Bundle Qt
- Bundle Qml
- Obey excludelist (unless invoked in self-contained a.k.a. "bundle everything" mode)
Envisioned
- Bundle QtWebEngine (untested)
- Bundle Python
- GitLab support
- OBS support
- ...
If for whatever reason you would like to build from source:
scripts/build.sh appimagetool