Skip to content

About

MacOS style AppImage installer and management application

Topics

Resources

Stars

1.5k stars

Watchers

10 watching

Forks

Repository files navigation

Download Release License AnyLinux GTK 4 Vala Stars

com github AppManager AppManager

AppManager is a GTK/Libadwaita developed desktop utility in Vala that makes installing and uninstalling AppImages on Linux desktop painless. It supports both SquashFS and DwarFS AppImage formats, features a seamless background auto-update process, and leverages zsync delta updates for efficient bandwidth usage. Double-click any .AppImage to open a macOS-style drag-and-drop window, just drag to install and AppManager will move the app, wire up desktop entries, and copy icons.

This AppImage bundles everything and it should work on any Linux distro, including old and musl-based ones.

AppManager doesn't require FUSE to run, thanks to the uruntime

Preview

Screenshot From 2026-01-11 00-24-35

Features

  • Drag-and-drop installer: Mimics the familiar macOS Applications install flow.
  • Portable or extracted: Apps are installed portable (the AppImage is moved to ~/Applications). From the app's details you can extract it to ~/Applications/.installed/<app>/ instead.
  • True isolated portable mode: Optionally creates .home and .config folders next to the AppImage so the app stores all its data alongside itself - fully self-contained and portable.
  • Side-by-side installs: Install multiple copies or versions of the same app; extra copies get a numbered suffix (e.g. Bitwarden and Bitwarden 2) with their own desktop entries and icons.
  • Desktop integration: Extracts the bundled .desktop file via unsquashfs or dwarfsextract, rewrites Exec and Icon, and stores it in ~/.local/share/applications.
  • Simple uninstall: Right click in app drawer and choose Move to Trash, can uninstall in AppManager or simply delete from ~/Applications folder.
  • One-click installs from the web: Registers the x-scheme-handler/appimg handler, so an appimg://install?url=…&sha256=… link downloads the AppImage over HTTPS and verifies the supplied SHA-256 and size. Downloads matching AppHub's catalog receive the app's sandbox template; other downloads use your normal installation defaults.
  • App library: The main window lists installed apps with search, sorting and list or grid views. Changing the install folder in Preferences moves the installed apps along.
  • Update sources: zsync delta updates from the AppImage's embedded update info, GitHub and GitLab releases (optionally including pre-releases), or a plain download link checked for changes.
  • Background app updates: Optional automatic update checks with configurable interval (daily, weekly, monthly), notifications when updates are found, and optional automatic installs. Each run is written to an update log.
  • Per-app customization: Rename an app, change its icon, keywords or StartupWMClass, add launch arguments and environment variables, hide it from the app drawer, or add it to $PATH. These settings survive updates.
  • GitHub authentication: Optionally store a GitHub personal access token to raise the API rate limit from 60 to 5,000 requests per hour. The token is kept in the system keyring (GNOME Keyring, KWallet, KeePassXC) when a Secret Service is available, and otherwise in an AES-256-GCM blob bound to the machine and user account, so a synced or copied config file is useless elsewhere.
  • Per-app sandboxing: Give each app a private home and control its access to personal files, network, sound, devices and desktop services. Choose a preset, customize permissions, or use an AppHub template. See the sandboxing guide.

Sandboxing

Run portable AppImages with a private home and configurable access to your files, network, devices and desktop services. Choose Standard or Strict in an app's Privacy & Security settings, or use its AppHub template.

See the sandboxing guide for setup, profiles, requirements and known limitations.

Requirements

  • valac, meson (>= 0.64), ninja, gettext, glib-compile-schemas
  • Libraries: libadwaita-1 (>= 1.6), gtk4, glib-2.0 (>= 2.74), gio-2.0, gio-unix-2.0, gmodule-2.0, json-glib-1.0, gee-0.8, libsoup-3.0, libsecret-1, gnutls (>= 3.6.13)
  • Optional, for sandbox hardening: libseccomp (syscall filtering), wayland-client plus wayland-scanner (compositor-side isolation). Both are found automatically and can be turned off with -Dseccomp=disabled and -Dwayland_security_context=disabled.
  • Runtime tools: unsquashfs, dwarfsextract; optionally zsync2 (or zsync) for delta updates
  • Runtime tools for sandboxing: bwrap, xdg-dbus-proxy, fusermount3, squashfuse, dwarfs

Install

Simply download latest app version, enable execute and double click to install it.

Nix / NixOS

Run without installation

nix run "github:kem-a/AppManager"

Install permanently

nix profile install "github:kem-a/AppManager"

NixOS / Home Manager

inputs.app-manager.url = "github:kem-a/AppManager";
# then add to packages:
inputs.app-manager.packages.x86_64-linux.default

Build

Install development dependencies

(click to open)

Install the development packages required to build AppManager on each distribution:

  • Debian / Ubuntu:
sudo apt install valac meson ninja-build pkg-config gettext libadwaita-1-dev libgtk-4-dev libglib2.0-dev libjson-glib-dev libgee-0.8-dev libsoup-3.0-dev libsecret-1-dev libgnutls28-dev libseccomp-dev libwayland-dev curl zlib1g-dev liblzma-dev libzstd-dev
  • Fedora:
sudo dnf install vala meson ninja-build gettext gtk4-devel libadwaita-devel glib2-devel json-glib-devel libgee-devel libsoup3-devel libsecret-devel gnutls-devel libseccomp-devel wayland-devel curl zlib-devel xz-devel libzstd-devel
  • Arch Linux / Manjaro:
sudo pacman -S vala meson ninja gettext gtk4 libadwaita glib2 json-glib libgee libsoup3 libsecret gnutls libseccomp wayland curl zlib xz zstd

curl and the zlib/xz/zstd headers are only needed for the bundled tools described below.

Default setup

meson setup build --prefix=$HOME/.local

Build and install

meson compile -C build
meson install -C build

By default the build bundles its helper tools: it downloads dwarfsextract and the dwarfs FUSE driver, zsync2 and squashfuse, and compiles unsquashfs from source. This needs network access. To use the host's tools instead, pass any of -Dbundle_dwarfs=false, -Dbundle_zsync=false, -Dbundle_squashfuse=false, -Dbundle_unsquashfs=false.

CLI helpers

  • Open the installer window for a file: app-manager /path/to/app.AppImage
  • Install an AppImage: app-manager install /path/to/app.AppImage
  • Install side by side, keeping the existing app: app-manager install --keep-both /path/to/app.AppImage
  • Uninstall by path: app-manager uninstall /path/to/app.AppImage
  • Update a single installed AppImage: app-manager update /path/to/app.AppImage
  • Update all installed AppImages: app-manager --update-all
  • List available updates (no install): app-manager --update-check
  • Check if installed: app-manager --is-installed /path/to/app.AppImage
  • Run the background update service (started by its autostart entry): app-manager --background-update
  • Show version or help: app-manager --version / app-manager --help
  • Open a web install link: app-manager 'appimg://install?url=https://host/App.AppImage&sha256=<hex>'

Translations

AppManager supports multiple languages. Want to help translate to your language? See the translation guide for instructions.

Currently supported: Arabic, Chinese (Simplified), Dutch, Estonian, Finnish, French, German, Greek, Irish, Italian, Japanese, Kazakh, Korean, Latvian, Lithuanian, Norwegian Bokmål, Polish, Portuguese (Brazil), Spanish, Swedish, Ukrainian, Vietnamese.

Reviews

itsfoss

App of the Week

About

MacOS style AppImage installer and management application

Topics

Resources

Stars

1.5k stars

Watchers

10 watching

Forks

Releases

Sponsor this project

Contributors

Languages