Skip to content

fix(bundler): update linuxdeploy and linuxdeploy-plugin-gtk - #16062

Merged
lucasfernog merged 7 commits into
devfrom
update-linuxdeploy
Sep 25, 2026
Merged

lucasfernog merged 7 commits into
devfrom
update-linuxdeploy

Conversation

@FabianLars

@FabianLars FabianLars commented Sep 20, 2026 •

Copy link
Copy Markdown
Member

So far i only tested building and running on arch. I assume this will cause issues but since the old stuff also causes issues i think this is fine.

script diff is tauri-apps/linuxdeploy-plugin-gtk#5 + tauri-apps/linuxdeploy-plugin-gtk#6

Still on vacation so idk how long it takes for me to test this.

Should fix #15976
Should fix #15665 (same as above)
Maybe fixes #15902

Edit: In #14390 i inlined the plugin scripts. In #14841 i accidentally removed that. This PR fixes that as well.

@FabianLars FabianLars added this to the 2.12 milestone Sep 20, 2026
@NVolcz

NVolcz commented Sep 24, 2026

Copy link
Copy Markdown

Thanks for working on this. I tested the PR with a production Tauri app on Ubuntu 26.04, where the current AppImage fails to start. With this PR, it starts normally on both Wayland and X11 without any workarounds.

One thing I noticed is that prepare_tools() downloads linuxdeploy-plugin-gtk.sh from the plugin repository’s master branch instead of using the version included in this PR. I monkeypatched it by putting the PR’s script in the Tauri cache to test it.

Otherwise, this fixes the issue for us. Thanks!

@FabianLars

FabianLars commented Sep 24, 2026 •

Copy link
Copy Markdown
Member Author

Thanks for testing it. Much appreciated :)

One thing I noticed is that prepare_tools() downloads linuxdeploy-plugin-gtk.sh from the plugin repository’s master branch instead of using the version included in this PR. I monkeypatched it by putting the PR’s script in the Tauri cache to test it.

ffs, how embarassing...

@FabianLars
FabianLars marked this pull request as ready for review September 24, 2026 18:00
@FabianLars
FabianLars requested a review from a team as a code owner September 24, 2026 18:00
DanielJohn17 added a commit to DanielJohn17/veloxdb that referenced this pull request Sep 24, 2026
…n Linux

WebKitWebProcess aborts with "Could not create default EGL display:
EGL_BAD_PARAMETER. Aborting..." because linuxdeploy bundles
libwayland-client.so.0, which shadows the host library and breaks the
host Mesa/EGL stack glvnd loads. Strip it from the AppImage after
bundling on Linux CI builds. See veloxbase#47; tracked upstream at
tauri-apps/tauri#16062.
- Rewrite the embedded linuxdeploy-plugin-gtk/gstreamer scripts whenever the
  cached copy differs. A script left in the tools cache by an older CLI was
  used forever, so existing users kept `GDK_BACKEND=x11` and got no GIO
  module bundling.
- Find gio-querymodules with search_tool: Fedora only ships
  gio-querymodules-64, which made the gtk plugin exit with 127.
- Skip the gdk-pixbuf loaders when their directory does not exist
  (gdk-pixbuf 2.44 with glycin on Arch), instead of failing on `cp ''`.
- Drop the old libgiognutls/GIO_EXTRA_MODULES block, now covered by
  GIO_MODULE_DIR. It found two copies of the module and exported a
  newline-separated value that included the build machine's AppDir path.
@lucasfernog

Copy link
Copy Markdown
Member

my LLM based tests came up with some weird bugs (not related to this PR):

  • Webview HTTPS on Fedora Workstation 44 and openSUSE. It fails because the bundled Ubuntu gnutls only knows Debian's certificate path. Dropping the bundled gnutls stack fixed it in the VM.
  • GIO_MODULE_DIR leaking into launched programs. Anything the app starts inherits it, pointing into the AppImage mount.
  • openSUSE bundling is broken. The docs' package names are stale, and the CLI mishandles two library paths from pkg-config.
  • Fedora/Arch-built AppImages can't load SVG images. gdk-pixbuf's new loader runs as a separate process, which isn't bundled. It happens on current dev too.

@lucasfernog
lucasfernog merged commit 8e70283 into dev Sep 25, 2026
5 checks passed
@lucasfernog
lucasfernog deleted the update-linuxdeploy branch September 25, 2026 20:26
esoltys added a commit to esoltys/luminous that referenced this pull request Sep 29, 2026
* feat: restore AppImage distribution with GPU rendering (#1301)

Tauri CLI 2.12 (tauri-bundler 2.10, tauri-apps/tauri#16062) fixes the
AppImage blank-window EGL bug on Mesa 25+/Wayland at the source, so:
- bump @tauri-apps/cli to ^2.12.0 and re-add the appimage bundle target
- drop the AppImage-only WEBKIT_DISABLE_COMPOSITING_MODE/DMABUF gate; the
  env vars are still honoured (and detected) when a user sets them by hand
- README and updater footer no longer describe AppImage as local-build-only

* docs: list cmake in Linux build dependencies

* docs: list cmake in README Linux build dependencies

* docs: drop nonexistent libayatanaloop-dev from README Linux deps
KingYoSun added a commit to kukuri-app/kukuri that referenced this pull request Sep 30, 2026
tauri-bundler 2.10 (CLI 2.12) の linuxdeploy GTK plugin は GIO モジュールを
usr/lib/x86_64-linux-gnu/gio/modules ではなく usr/lib/gio/modules へ置く
(tauri-apps/tauri#16062)。起動時の同梱 TLS の確認先・検査スクリプト・runbook を新しい配置へ合わせる。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KingYoSun added a commit to kukuri-app/kukuri that referenced this pull request Sep 30, 2026
* chore(deps): TypeScript / npm 依存を最新へ更新する (#1449 AC-1)

- apps/desktop と tools/promo の npm 依存を latest へ上げる。
  - desktop の typescript は typescript-eslint 8.71.0 の peer 上限 (<6.1.0) のため 6.0.3 に留める。
  - desktop の jsdom は vitest の jsdom 環境が 30.1 で壊れる (vitest-dev/vitest#11336、未リリース) ため ~30.0.1 に留める。
  - promo は TypeScript 7.0.2 / React 19.3 / Remotion 4.0.530 へ上げる。
- Tauri JS 2.12 に合わせ、src-tauri の tauri / tauri-build / 各 plugin の crate を同じ major.minor へ上げる。
  - 非推奨になった InvokeMessage::state_ref を Manager::try_state へ置き換える。
- eslint-plugin-react-refresh 0.5.7 で不要になった抑制コメントを削除する。
- THIRD_PARTY_NOTICES を lock から再生成する。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(appimage): Tauri CLI 2.12 の GIO モジュールの配置先に合わせる (#1449 AC-1)

tauri-bundler 2.10 (CLI 2.12) の linuxdeploy GTK plugin は GIO モジュールを
usr/lib/x86_64-linux-gnu/gio/modules ではなく usr/lib/gio/modules へ置く
(tauri-apps/tauri#16062)。起動時の同梱 TLS の確認先・検査スクリプト・runbook を新しい配置へ合わせる。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(updater): 更新 fixture が署名した bundle の版を告知する (#1449 AC-1)

tauri-plugin-updater 2.13 は、署名の trusted comment に Tauri CLI 2.12 が記録した版と
更新 endpoint が告知する版の一致を要求する。fixture は同じ crate の版で署名した bundle を
99.0.0 として告知していたため SignedVersionMismatch で拒否された。告知する版を crate の版に合わせる。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
fylorn added a commit to ThinkWatchProject/ThinkWatch-Lite that referenced this pull request Oct 4, 2026
The AppImage carried the build runner's libwayland (Ubuntu 22.04). AppRun
puts the image's libraries ahead of the system's, so on a distribution with
a newer Mesa (reported on Arch) EGL could not get a display and the window
stayed blank. The AUR package works around it by deleting the four
libwayland libraries from the extracted image.

Tauri's bundler 2.10.0 (CLI 2.12.0, tauri-apps/tauri#16062) updates
linuxdeploy and its GTK plugin, which no longer bundle them, and stops
forcing GDK_BACKEND=x11: on a Wayland session the app now runs on Wayland.

- tauri 2.12.1, @tauri-apps/cli 2.12.1 and @tauri-apps/api 2.12.1, kept
  on the same release
- rust-version 1.90, which tauri 2.12 requires
- release.yml: the Linux inspection fails when a libwayland library is in
  the image, so an upgrade or a bundler change cannot bring them back
  unnoticed; xdg-utils is no longer installed on the runner, as the
  bundler stopped copying xdg-mime into the image and the app runs the
  system's xdg-mime to register thinkwatch://

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fylorn added a commit to ThinkWatchProject/ThinkWatch-Lite that referenced this pull request Oct 4, 2026
…raries (#279)

* Use Tauri 2.12.1: the AppImage no longer bundles the Wayland libraries

The AppImage carried the build runner's libwayland (Ubuntu 22.04). AppRun
puts the image's libraries ahead of the system's, so on a distribution with
a newer Mesa (reported on Arch) EGL could not get a display and the window
stayed blank. The AUR package works around it by deleting the four
libwayland libraries from the extracted image.

Tauri's bundler 2.10.0 (CLI 2.12.0, tauri-apps/tauri#16062) updates
linuxdeploy and its GTK plugin, which no longer bundle them, and stops
forcing GDK_BACKEND=x11: on a Wayland session the app now runs on Wayland.

- tauri 2.12.1, @tauri-apps/cli 2.12.1 and @tauri-apps/api 2.12.1, kept
  on the same release
- rust-version 1.90, which tauri 2.12 requires
- release.yml: the Linux inspection fails when a libwayland library is in
  the image, so an upgrade or a bundler change cannot bring them back
  unnoticed; xdg-utils is no longer installed on the runner, as the
  bundler stopped copying xdg-mime into the image and the app runs the
  system's xdg-mime to register thinkwatch://

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* release: exclude every libwayland library from the AppImage

Tauri 2.12's linuxdeploy drops libwayland-client through the AppImage
exclude list, but libwayland-egl, -cursor and -server still went in (the
new inspection caught them in the rehearsal). They are one library family;
mixing the build runner's copies with the system's is the same risk.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: 2026.10.4

- Bump the version to 2026.10.4
- release-notes/2026.10.4.md: the AppImage no longer carries its own
  Wayland libraries and runs on Wayland on a Wayland session, with thanks
  to sunnysab on LINUX DO, whose AUR package showed the fix; Tauri 2.12.1;
  core unchanged (0.61.0), request history kept

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
fylorn added a commit to ThinkWatchProject/ThinkWatch-Lite that referenced this pull request Oct 4, 2026
…raries (#279)

* Use Tauri 2.12.1: the AppImage no longer bundles the Wayland libraries

The AppImage carried the build runner's libwayland (Ubuntu 22.04). AppRun
puts the image's libraries ahead of the system's, so on a distribution with
a newer Mesa (reported on Arch) EGL could not get a display and the window
stayed blank. The AUR package works around it by deleting the four
libwayland libraries from the extracted image.

Tauri's bundler 2.10.0 (CLI 2.12.0, tauri-apps/tauri#16062) updates
linuxdeploy and its GTK plugin, which no longer bundle them, and stops
forcing GDK_BACKEND=x11: on a Wayland session the app now runs on Wayland.

- tauri 2.12.1, @tauri-apps/cli 2.12.1 and @tauri-apps/api 2.12.1, kept
  on the same release
- rust-version 1.90, which tauri 2.12 requires
- release.yml: the Linux inspection fails when a libwayland library is in
  the image, so an upgrade or a bundler change cannot bring them back
  unnoticed; xdg-utils is no longer installed on the runner, as the
  bundler stopped copying xdg-mime into the image and the app runs the
  system's xdg-mime to register thinkwatch://

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* release: exclude every libwayland library from the AppImage

Tauri 2.12's linuxdeploy drops libwayland-client through the AppImage
exclude list, but libwayland-egl, -cursor and -server still went in (the
new inspection caught them in the rehearsal). They are one library family;
mixing the build runner's copies with the system's is the same risk.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: 2026.10.4

- Bump the version to 2026.10.4
- release-notes/2026.10.4.md: the AppImage no longer carries its own
  Wayland libraries and runs on Wayland on a Wayland session, with thanks
  to sunnysab on LINUX DO, whose work packaging the app showed the fix;
  Tauri 2.12.1;
  core unchanged (0.61.0), request history kept

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
rbideau added a commit to Nightbr/factorai that referenced this pull request Oct 8, 2026
…bwayland-client

The 2.11 bundler's linuxdeploy copied the build runner's libwayland-client
(1.22 on ubuntu-24.04) into the AppImage. Mesa 25+ needs symbols it lacks,
so WebKit's web process aborted with EGL_BAD_PARAMETER and the window stayed
blank. 2.12's linuxdeploy excludes it (tauri-apps/tauri#16062).

Closes #65

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lesani added a commit to Lesani/xshell that referenced this pull request Oct 9, 2026
…rolling distros

The AppImage bundled an old libwayland-client that aborts WebKitWebProcess
with "Could not create surfaceless EGL display: EGL_BAD_ALLOC" against a
newer host Mesa (Arch, Fedora). tauri-bundler 2.10 (tauri-apps/tauri#16062)
updates linuxdeploy and its GTK plugin, which stop bundling it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sturdy-robot added a commit to openfootmanager/openfootmanager that referenced this pull request Oct 9, 2026
…d EGL

The AppImage built with CLI 2.10 bundled libwayland-client from the Ubuntu
22.04 runner, and the AppImage launcher loads bundled libraries ahead of the
host's. Current Mesa's libEGL_mesa needs libwayland 1.23+ symbols
(wl_display_create_queue_with_name, wl_display_dispatch_queue_timeout,
wl_fixes_interface), so glvnd could not load it. WebKit's web process then
aborted with "Could not create default EGL display: EGL_BAD_PARAMETER" and the
window stayed white. That covers AMD and Intel on any recent distro; NVIDIA's
own EGL driver is unaffected.

tauri-bundler 2.10 (CLI 2.12, upstream tauri-apps/tauri#16062) updates
linuxdeploy so the client library is no longer bundled, and stops forcing
GDK_BACKEND=x11. Lockfile-only: package.json already allows ^2.

Verified on Fedora 44 / Mesa 26.2.3:
- the 8f6659f nightly reproduces the abort;
- an AppImage built with CLI 2.12.1 has no libwayland-client;
- the nightly with only that library removed starts under both X11 and
  native Wayland.

Refs #281

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nightbr pushed a commit to Nightbr/factorai that referenced this pull request Oct 10, 2026
…2.1 no longer bundling libwayland-client (#66)

fix: bump @tauri-apps/cli to 2.12.1 so the AppImage stops bundling libwayland-client

The 2.11 bundler's linuxdeploy copied the build runner's libwayland-client
(1.22 on ubuntu-24.04) into the AppImage. Mesa 25+ needs symbols it lacks,
so WebKit's web process aborted with EGL_BAD_PARAMETER and the window stayed
blank. 2.12's linuxdeploy excludes it (tauri-apps/tauri#16062).

Closes #65

Co-authored-by: Raphaël Bideau <raphael@panora.co>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
ErikBjare added a commit to ActivityWatch/activitywatch that referenced this pull request Oct 10, 2026
…te it

A libwayland copied from the Ubuntu build image clashes with the host's
newer Mesa: crashes or a blank webview on e.g. Arch/KDE Wayland
(tauri-apps/tauri#15665, tauri-apps/tauri#15976). Set
LINUXDEPLOY_EXCLUDED_LIBRARIES=libwayland-* for the Tauri builds (linuxdeploy
honors it from @tauri-apps/cli 2.12, tauri-apps/tauri#16062), and run the
host-ABI gate on the Tauri AppImage. host-abi-gate.sh gains
HOST_ABI_LIBS_LIST so this bundle can keep glib, which its GTK/WebKitGTK
needs.
ErikBjare added a commit to ActivityWatch/activitywatch that referenced this pull request Oct 10, 2026
…te it

A libwayland copied from the Ubuntu build image clashes with the host's
newer Mesa: crashes or a blank webview on e.g. Arch/KDE Wayland
(tauri-apps/tauri#15665, tauri-apps/tauri#15976). Set
LINUXDEPLOY_EXCLUDED_LIBRARIES=libwayland-* for the Tauri builds (linuxdeploy
honors it from @tauri-apps/cli 2.12, tauri-apps/tauri#16062), and run the
host-ABI gate on the Tauri AppImage. host-abi-gate.sh gains
HOST_ABI_LIBS_LIST so this bundle can keep glib, which its GTK/WebKitGTK
needs.
ErikBjare added a commit to ActivityWatch/activitywatch that referenced this pull request Oct 10, 2026
…te it (#1509)

* fix(release): don't bundle libwayland into the Tauri AppImage, and gate it

A libwayland copied from the Ubuntu build image clashes with the host's
newer Mesa: crashes or a blank webview on e.g. Arch/KDE Wayland
(tauri-apps/tauri#15665, tauri-apps/tauri#15976). Set
LINUXDEPLOY_EXCLUDED_LIBRARIES=libwayland-* for the Tauri builds (linuxdeploy
honors it from @tauri-apps/cli 2.12, tauri-apps/tauri#16062), and run the
host-ABI gate on the Tauri AppImage. host-abi-gate.sh gains
HOST_ABI_LIBS_LIST so this bundle can keep glib, which its GTK/WebKitGTK
needs.

* test(package): cover host-abi-gate.sh's default list and HOST_ABI_LIBS_LIST override

* test(package): make the symlink case depend on the gate checking symlinks
itsMattGuenther added a commit to itsMattGuenther/Linger that referenced this pull request Oct 10, 2026
…) (#480)

The 0.4.10 AppImage opened an empty window on Omarchy with an AMD GPU:
WebKit's page process aborted with "Could not create default EGL display:
EGL_BAD_PARAMETER". Tauri 2.11's bundler builds the AppImage with a
linuxdeploy from July 2024, which copies Ubuntu 22.04's libwayland 1.20 into
it, ahead of the system's; Mesa 26.2's EGL driver needs functions libwayland
only gained later, so it never loads. Found and tested by the reporter.

Tauri's fix (tauri-apps/tauri#16062, not in a release yet) moves to
linuxdeploy 07333c6. scripts/appimage-linuxdeploy.sh puts that same build,
checksum pinned, where Tauri 2.11 looks before downloading its own, and the
builds set LINUXDEPLOY_EXCLUDED_LIBRARIES=libwayland-* so all four
(client, server, cursor, egl) stay out. Every desktop has its own libwayland,
as GTK needs it. scripts/appimage-wayland-check.sh fails a build that
carries one; it fails on the released 0.4.10 AppImage, naming the four.
enzonotario added a commit to enzonotario/zinga that referenced this pull request Oct 11, 2026
…ayland

Tauri CLI 2.12 updates linuxdeploy and its GTK plugin (tauri-apps/tauri#16062), fixing EGL_BAD_PARAMETER blank windows on newer Mesa (tauri-apps/tauri#15976, #15665).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment