Advanced appImage Manager
AIM is a Flutter desktop application for managing AppImage applications on Linux. It keeps your AppImages organized, creates desktop entries so they appear in your application launcher, and generates shell shortcuts — all from a clean graphical interface.
- Add & Organize — Browse and install AppImage files into a managed directory (
~/AppImages/<name>/). AIM derives the application name and tracks multiple versions side by side. - Desktop Integration — Toggle
.desktopentry generation so installed apps appear in your system application menu. - Shell Shortcuts — Opt into a
~/.local/binsymlink for direct terminal access. - Version Management — Keep multiple versions of the same application and switch between them from a dropdown.
- Icon Extraction — Automatically extracts application icons from AppImage Type 2 files.
- Metadata Persistence — Per-application YAML metadata files keep state consistent across restarts.
- Command-Line Interface — A
gh-styleaimCLI for managing AppImages from the terminal or scripts, with--jsonoutput for automation.
- Linux — AIM relies on freedesktop.org paths (
~/.local/share/applications,~/.local/bin) and AppImage runtime extraction. - Flutter SDK
>=3.10.7— See the Flutter Linux install guide.
Pre-built packages are attached to each GitHub release. They install the GUI to /opt/aim (launchable from your application menu) and the aim CLI to /usr/bin/aim. No Flutter SDK required.
Debian / Ubuntu (.deb)
sudo apt install ./aim_<version>_amd64.debFedora / RHEL / openSUSE (.rpm)
sudo dnf install ./aim-<version>-1.*.x86_64.rpmOther distros (.tar.gz)
tar xzf aim-<version>-linux-x86_64.tar.gz
cd aim-<version>-linux-x86_64
./install.sh # copies into /opt and /usr (uses sudo); ./uninstall.sh revertsAfter installing, launch AIM from your application menu, or run aim --help in a terminal.
# Clone the repository
git clone https://github.com/AzarAI-TOP/AIM.git
cd AIM
# Install dependencies
flutter pub get
# Run on Linux
flutter run -d linux
# Build a release binary
flutter build linuxThe binary is output to build/linux/x64/release/bundle/aim.
packaging/build-release.sh # builds .deb, .rpm and .tar.gz into dist/Requires flutter, dart, tar, and (for the respective formats) dpkg-deb or ar, and rpmbuild.
Pushing a version tag also builds and publishes these packages automatically via GitHub Actions:
git tag v1.2.0 && git push origin v1.2.0 # triggers .github/workflows/release.yml- Launch AIM. An empty list is shown on first run.
- Press the + FAB and select an
.AppImagefile. - Tap an application to open its detail screen:
- Edit the description.
- Toggle desktop entry and shell symlink creation.
- Switch between installed versions.
- Changes are saved automatically as you edit. Use the uninstall button to remove an app and all its data.
AIM ships with a gh-style CLI that shares the same managed directory and metadata as the GUI. Run it during development with dart run bin/aim.dart, or compile a standalone binary:
dart compile exe bin/aim.dart -o aim
./aim --helpCommands:
aim list # List managed apps (alias: ls)
aim install <path> [<path>...] # Install one or more AppImage files
aim info <name> # Show details for an app (alias: view)
aim remove <name> [--yes] # Uninstall an app and its data (alias: rm)
aim version <name> # List versions, ● marks the active one
aim version <name> --set <file> # Switch the active version
aim link <name> [--enable|--disable] # Show/toggle the ~/.local/bin symlink
aim desktop <name> [--enable|--disable] # Show/toggle the .desktop entrylist, info, and version accept --json for machine-readable output. Color is emitted only when stdout is a terminal and NO_COLOR is unset.
aim list --json
aim info Obsidian --json~/AppImages/
└── MyApp/
├── MyApp-1.0.0.AppImage
├── MyApp-2.1.0.AppImage
├── icon.png
└── metadata.yaml
flutter analyze # Static analysis
flutter test # Run testsMIT