From 131554532a47733dd0264ae42573ad596d1c29a7 Mon Sep 17 00:00:00 2001 From: garrettmills Date: Tue, 7 Jul 2026 19:49:50 -0500 Subject: [PATCH] Document GTK4 blocker in README and devel-setup.sh Tauri v2's Linux backend hard-depends on GTK3 + webkit2gtk-4.1; GTK4 support is tracked upstream (tauri#7335, tao#1104, wry#1228) but unmerged with no ETA. Note this so it isn't re-investigated from scratch later. Co-Authored-By: Claude Sonnet 5 --- README.md | 17 ++++++++++------- scripts/devel-setup.sh | 5 +++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 586184f..8d63e91 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,14 @@ Both default to the OS app-data dir (e.g. `~/.local/share/com.garrettmills.mtgc/ npm install # frontend deps ``` +> **Why GTK3, not GTK4?** Tauri v2's Linux backend (`wry`/`tao`) hard-depends on +> GTK3 + `webkit2gtk-4.1`; there's no GTK4/webkitgtk-6.0 option yet. GTK4 support is +> tracked upstream but unmerged with no ETA: +> [tauri#7335](https://github.com/tauri-apps/tauri/issues/7335), +> [tao#1104](https://github.com/tauri-apps/tao/pull/1104), +> [wry#1228](https://github.com/tauri-apps/wry/issues/1228). Revisit once Tauri +> ships GTK4 support (likely Tauri v3). + ## Run ```bash @@ -63,24 +71,19 @@ Outputs (under the workspace `target/release/`): libraries (`webkit2gtk4.1`, `gtk3`), so those must be present on the machine that runs it — they are on any modern desktop Linux and are installed by `devel-setup.sh`. -- **`target/release/bundle/appimage/*.AppImage`** — a single portable file that - bundles the app together with its runtime. This is the closest thing to a - download-and-run **single self-contained binary**: `chmod +x` it and run. - **Recommended** for copying to another machine. - **`target/release/bundle/rpm/*.rpm`** and **`.../deb/*.deb`** — native installers (Fedora / Debian-based) that add a menu entry and icon. Useful variants: ```bash -cargo tauri build --bundles appimage # only the portable AppImage, skip installers cargo tauri build --no-bundle # only the bare target/release/mtgc-app binary ``` Notes: -- On Linux the truly portable single file is the **AppImage**; the bare `mtgc-app` - binary is also a single file but relies on the system WebKit/GTK libs. +- The `mtgc-app` binary is a single file but relies on the system WebKit/GTK libs + being present (installed by `devel-setup.sh`). - The binary does **not** embed card data — first run still downloads the Scryfall bulk into the OS app-data dir, and your synced `library.db` lives there by default (override with *Choose library file…*). diff --git a/scripts/devel-setup.sh b/scripts/devel-setup.sh index 33614c1..673cd0b 100755 --- a/scripts/devel-setup.sh +++ b/scripts/devel-setup.sh @@ -33,6 +33,11 @@ else fi # --- 2. Tauri v2 system libraries (Fedora / dnf) --------------------------- +# +# These are GTK3 packages by necessity, not choice: Tauri v2's Linux backend +# (wry/tao) hard-depends on GTK3 + webkit2gtk-4.1. GTK4 support is tracked +# upstream but unmerged with no ETA — see the README's "Why GTK3, not GTK4?" +# note (tauri#7335, tao#1104, wry#1228) before "fixing" this in isolation. FEDORA_PKGS=( webkit2gtk4.1-devel