appimage-assimilate
This is a CLI tool that installs appimages to menus/launchers. Optionally, it
can make them launchable from any location on the command line, using the proper
executable name, e.g. librewolf instead of LibreWolf.x86_64.AppImage
Usage
Run appimage-assimilate either from inside a directory containing the appimage
you want to operate on, or using the path of the directory as an argument,
e.g. appimage-assimilate -i foo/bar/.
The appimage in the target directory will be detected automatically. The
directory should only contain one appimage at a time.
Options
appimage-assimilate or appimage-assimilate -i - Install appimage
This installs the appimage that's inside the target directory.
You'll be asked if you want to create a symlink to the appimage in
/usr/local/bin - this allows you to run the appimage from any location on the
command line. Again, the symlink will use the usual name of the program, not the
appimage name.
An install manifest will be created and saved alongside the appimage in the same
directory, and a list of installed appimages will be created at
$HOME/.local/share/appimage-assimilate/installed.
_______________
appimage-assimilate -u - Uninstall appimage
This will delete all files listed in the target directory's manifest, the install
list entry,and the manifest itself. The actual appimage file will not be removed.
_______________
appimage-assimilate -l - List installed appimages
This will show the name and location of all installed appimages as well as whether
or not symlinks were created at install time.
_______________
appimage-assimilate -m - Show manifest contents
This will show the contents of the manifest in the target dir, if it exists.
_______________
appimage-assimilate -f - Fix exec paths
This fixes the paths to the target dir's appimage in the relevant .desktop
file and symlink (if created) to match the current name of the appimage.
This can be used to:
-
Fix an appimage that has broken due to renaming itself after a self-update.
-
Upgrade an appimage without uninstalling provided that you delete the older
appimage from the target directory when adding the newer one. Uninstalling
with -u and reinstalling is recommended over this method.
Limitations
Unlike some other appimage installers, appimage-assimilate has no built-in
update checking functions. It's meant to be a fairly simple tool, not a package
manager.
Currently, only the .desktop file in the root of the appimage (or that's
linked there) is used; appimages with multiple .desktop files will still work,
but additional functions from the extra files may not, especially if the
appimage uses the extra files to call separate binaries. This will be fixed in a
future update.
Installation
The only hard dependency is util-linux, which is likely installed by default
by your distro. However, either sudo or doas is strongly recommended.
Packages
Statically-linked binaries that should work with any distro are available in
Releases. Just
place the binary into your $PATH.
For Debian-based distros there are .deb packages available, also in
Releases. I also
package a Gentoo version in my
overlay. Outside of that,
using the methods outlined below are your best option.
Building from source
go is required to build. If you use the included build scripts or the 'go
install' method below, all build operations will take place in /tmp and go
will download an up-to-date version of itself to use temporarily during the
build.
Clone or download/extract the source code and $ cd appimage-assimilate.
To build:
$ ./build.sh
To install:
# ./install.sh
To uninstall:
# ./uninstall.sh
Direct install with Go
Run:
$ GO_CACHE=/tmp/go-build GOPATH=/tmp/gopath GOTOOLCHAIN=go1.26.0 \
go install -x codeberg.org/illogician/appimage-assimilate@foo
where foo is either a) a version number or b) latest for the newest commit.
When go install finishes, copy appimage-assimilate from /tmp/go/bin to a
dir in your $PATH, e.g. /usr/local/bin.