Skip to content

Update outdated AppImage runtime and build prerequisites#13

Open
candux wants to merge 2 commits into
IliyaBrook:masterfrom
candux:fix/static-fuse3-appimage-runtime
Open

Update outdated AppImage runtime and build prerequisites#13
candux wants to merge 2 commits into
IliyaBrook:masterfrom
candux:fix/static-fuse3-appimage-runtime

Conversation

@candux

@candux candux commented Jul 12, 2026

Copy link
Copy Markdown

Thank you so much for this project! After struggling to run Figma with Wine on Linux for a long time, I was incredibly relieved when I found it.

One thing I noticed was the use of libfuse.so.2, which was not installed on my system. Here is a driveby fix for that.

Summary

The current AppImage packaging is outdated: it downloads appimagetool from the obsolete AppImageKit continuous release and generates an AppImage whose runtime requires the legacy system library libfuse.so.2.

This PR moves packaging to the maintained AppImage tooling and static Type-2 runtime. The resulting AppImage no longer depends on the host providing FUSE 2.

It also updates other stale build prerequisites exposed by a complete build against the current Figma Desktop release.

Why this update is needed

The existing build still uses:

AppImage/AppImageKit/releases/download/continuous/appimagetool-...

That is the legacy distribution of appimagetool. Its generated runtime dynamically loads libfuse.so.2.

This no longer matches the state of current Linux distributions:

  • FUSE 3 is now the default on many distributions.
  • FUSE 2 is deprecated or no longer installed by default.
  • Some current distributions have removed FUSE 2 packages entirely.
  • Users therefore cannot run the generated AppImage without installing an old compatibility library.

The AppImage project now maintains appimagetool and its static Type-2 runtime in separate repositories. The static runtime includes the necessary FUSE support and does not require libfuse.so.2 from the host.

The existing Node.js requirement is outdated as well. Current Figma Desktop 126.6.14 uses Electron 42.6.1, whose installer requires Node.js 22.12 or newer. The previous Node.js 20 bootstrap fails while installing the current Electron
platform binary.

Changes

  • Replace the obsolete AppImageKit continuous artifact with:

  • appimagetool 1.9.1

  • Type-2 runtime 20251108

  • Pin both artifacts to immutable releases.

  • Verify downloads against their upstream SHA-256 digests.

  • Pass the runtime explicitly using --runtime-file.

  • Avoid the maintained tool’s otherwise unpinned runtime download.

  • Map package architecture names to the names expected by AppImage:

  • amd64 → x86_64

  • arm64 → aarch64

  • Run appimagetool in extract-and-run mode so the build host does not need FUSE.

  • Raise the Node.js minimum from 20 to 22.12.

  • Update the local bootstrap from Node.js 20.18.1 to 22.23.1.

  • Check for the 7z executable rather than a command named p7zip.

The 7z adjustment does not change distro package selection. p7zip is a package name, while 7z is the executable that the build invokes. The previous check produced false missing-dependency results and relied on package installation to
mask the mismatch.

Verification

Tested with a complete build of the current Figma Desktop release:

Figma Desktop: 126.6.14
Electron: 42.6.1
Node.js: 22.23.1

Results:

  • Full AppImage build completed successfully.
  • Generated AppImage is a statically linked PIE executable.
  • No libfuse.so.2 reference is present.
  • AppImage extraction succeeded.
  • Direct FUSE mounting succeeded.
  • Figma launched successfully and remained running until the test timeout.

AI assistance notice

This change was developed with assistance from OpenAI Codex.

candux added 2 commits July 12, 2026 07:24
Check for the 7z executable that the extraction step actually invokes, while retaining the existing distro package mappings.

Raise the Node.js minimum to 22.12 and bootstrap Node 22.23.1. Electron 42.6.1 requires Node >=22.12, and the previous Node 20 bootstrap fails while installing Electron's platform binary.
Replace the obsolete AppImageKit continuous build with appimagetool 1.9.1 and the 20251108 Type-2 runtime. Verify both artifacts against their upstream SHA-256 digests and reuse only verified cache entries.

Map Debian architecture names to AppImage names, pass the runtime explicitly with --runtime-file, and run appimagetool in extract-and-run mode. Generated AppImages are static PIE executables and no longer require the host's legacy libfuse.so.2.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant