Patched AppImage build of XnViewMP 1.11.2, fixing compatibility with Fedora-based systems (Bazzite, Aurora, Fedora Silverblue) where the official AppImage fails to start.
XnViewMP is freeware (not open-source). All application code belongs to XnSoft.
This repository only provides a compatibility fix, not a redistribution of XnViewMP itself.
The official XnView_MP.glibc2.34-x86_64.appimage bundles PulseAudio 8.0 (from Ubuntu 16.04). This old version hard-depends on two libraries that are not available on Fedora-based systems:
| Missing Library | Why it's missing |
|---|---|
libwrap.so.0 |
tcp_wrappers — removed from Fedora since F28 |
libapparmor.so.1 |
AppArmor — Fedora uses SELinux, not AppArmor |
This causes a cascade: libpulsecommon-8.0.so fails to load → libpulse.so.0 fails → libQt5Multimedia fails → XnViewMP does not start.
Additionally, the official launcher script uses $(pwd) to locate the XnView binary, which is fragile and can resolve to the wrong path depending on how the AppRun sets the working directory.
Two small stub libraries are compiled and added to the AppImage:
libwrap.so.0— no-op stub that always allows connections (hosts_accessreturns 1)libapparmor.so.1— stub that returnsENODATA, signalling "AppArmor not active" — the standard response on non-AppArmor systems
The launcher script is also patched to use the $APPDIR environment variable (set by the AppImage runtime) instead of $(pwd).
No original XnViewMP files are modified — only two stub libraries are added and the launcher script is replaced.
Grab the patched AppImage from the Releases page.
chmod +x XnViewMP-1.11.2-x86_64-fixed.AppImage
./XnViewMP-1.11.2-x86_64-fixed.AppImageNo additional packages needed. The AppImage bundles Qt5, GStreamer, ICU, and all other dependencies.
Tested on:
| Distribution | Status |
|---|---|
| Bazzite / Aurora (Fedora 44) | ✅ fixed |
| Fedora Silverblue 40+ | ✅ expected |
| Arch / CachyOS / Manjaro | ✅ (original AppImage also works here) |
| Ubuntu / Debian | ✅ (original AppImage also works here) |
You need the official AppImage from XnSoft and appimagetool in the same directory. The build script downloads nothing — it only modifies what's already in the official AppImage.
From the XnViewMP download page, get the Linux 64-bit (glibc 2.34) AppImage version.
# Arch / CachyOS
sudo pacman -S gcc binutils
# Fedora / Bazzite / Aurora
sudo rpm-ostree install gcc binutils # or use a toolbox container
# Ubuntu / Debian
sudo apt install gcc binutilsappimagetool-x86_64.AppImage from AppImage releases must also be in the same directory.
chmod +x build-xnviewmp-appimage.sh
./build-xnviewmp-appimage.shProduces XnViewMP-1.11.2-x86_64-fixed.AppImage (~99 MB) in the current directory.
- Extracts the official AppImage with
--appimage-extract - Reads
libpulsecommon-8.0.soto confirm which symbols are needed - Compiles
libwrap.so.0stub (hosts_access,request_init,sock_host) - Compiles
libapparmor.so.1stub (aa_getpeercon@@APPARMOR_1.1with correct symbol versioning) - Copies stubs into
usr/lib/x86_64-linux-gnu/ - Replaces the launcher script to use
$APPDIRinstead of$(pwd) - Validates that
lddfinds all libraries for the XnView binary - Repacks with
appimagetoolusing zstd compression
XnSoft also provides a .deb and a .tgz. These work well on Debian/Ubuntu but require installing Qt5 system packages on Fedora. The AppImage approach is self-contained — no system Qt5 needed, works on immutable systems like Bazzite and Aurora without rpm-ostree install or flatpak run.