Skip to content

Bundle libwebkit2gtk-4.1 in AppImages - #201

Merged
lobinuxsoft merged 5 commits into
developmentfrom
feat/194-bundle-webkit-appimage
Feb 19, 2026
Merged

lobinuxsoft merged 5 commits into
developmentfrom
feat/194-bundle-webkit-appimage

Conversation

@lobinuxsoft

Copy link
Copy Markdown
Owner

Summary

  • Use linuxdeploy to bundle all shared library dependencies into AppImages
  • Manually bundle WebKit helper processes, GLib schemas, GIO modules, and GDK pixbuf loaders (not detected by ldd)
  • Set LD_LIBRARY_PATH, WEBKIT_EXEC_PATH, GIO_MODULE_DIR, GDK_PIXBUF_MODULE_FILE, GSETTINGS_SCHEMA_DIR in AppRun
  • AppImages grow from ~9 MB to ~100-150 MB but work on systems without webkit2gtk (SteamOS/Steam Deck)

Changes

  • build_all.sh: Updated generate_appimage() with linuxdeploy download, library bundling, and AppRun env vars
  • release.yml: Split monolithic AppImage step into Prepare → Bundle → AppRun → Build, added system deps and linuxdeploy

Test plan

  • CI builds AppImages successfully on Ubuntu 24.04
  • Test Agent AppImage on Steam Deck (SteamOS) without webkit2gtk installed
  • Test Hub AppImage on Steam Deck desktop mode
  • Verify install/uninstall flow still works

Closes #194

Use linuxdeploy to automatically bundle all ldd-detected shared
libraries into AppImages. Additionally bundle WebKit helper processes,
GLib schemas, GIO modules, and GDK pixbuf loaders which are not
detected by ldd but required at runtime.

AppImages grow from ~9 MB to ~100-150 MB but now work on systems
without webkit2gtk installed (e.g. SteamOS/Steam Deck).

Closes #194
- generate_desktop in release.yml now uses actual binary name for Exec
  and desktop ID for Icon (linuxdeploy validates Exec against AppDir)
- Add find-based fallback for WebKit helper detection on Ubuntu
- Add command -v check before gdk-pixbuf-query-loaders in release.yml
- Install libgdk-pixbuf2.0-bin in appimage CI job
linuxdeploy creates AppRun as a symlink to the binary. Writing to it
via cat > follows the symlink and overwrites the actual binary with
the shell script, corrupting the AppImage.
WEBKIT_EXEC_PATH only works in developer builds of webkit2gtk.
Production builds hardcode the helper path at compile time.

Patch libwebkit2gtk-4.1.so.0 to replace /usr with ././ (same byte
length), making paths relative. AppRun now cd's to the AppDir root
so the relative paths resolve correctly. This is the same approach
used by Tauri's AppImage bundler.
@lobinuxsoft
lobinuxsoft merged commit 94437b7 into development Feb 19, 2026
10 checks passed
@lobinuxsoft
lobinuxsoft deleted the feat/194-bundle-webkit-appimage branch February 20, 2026 15:22
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