From efc52ab1eac72e65684df8a4d1dd14e30e333f6e Mon Sep 17 00:00:00 2001 From: Dexter Reed Date: Sat, 21 Sep 2024 00:30:53 +0100 Subject: [PATCH] Use Zenity GTK4 on GNOME in Flatpak This switches the runtime to org.gnome.Platform/Sdk 47, there is a wrapper script which will show a GTK4 dialog on GNOME only (unless the env CC_DIALOG_FORCE_ZENITY_GTK4 is set), and GTK3 on other DEs. --- .../net.classicube.flatpak.client.SDL3.json | 42 +++++++++++++++++-- misc/flatpak/zenity-wrapper | 7 ++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100755 misc/flatpak/zenity-wrapper diff --git a/misc/flatpak/net.classicube.flatpak.client.SDL3.json b/misc/flatpak/net.classicube.flatpak.client.SDL3.json index 1c23bb0d9..5f76ad33e 100644 --- a/misc/flatpak/net.classicube.flatpak.client.SDL3.json +++ b/misc/flatpak/net.classicube.flatpak.client.SDL3.json @@ -1,8 +1,8 @@ { "id": "net.classicube.flatpak.client", - "runtime": "org.freedesktop.Platform", - "runtime-version": "24.08", - "sdk": "org.freedesktop.Sdk", + "runtime": "org.gnome.Platform", + "runtime-version": "47", + "sdk": "org.gnome.Sdk", "command": "ClassiCubeLauncher", "finish-args": [ "--socket=wayland", @@ -56,6 +56,41 @@ } ] }, + { + "name": "zenity-gtk3", + "buildsystem": "meson", + "build-commands": [ + "mkdir -p ${FLATPAK_DEST}/share/icons/hicolor" + ], + "sources": [ + { + "type": "archive", + "url": "https://gitlab.gnome.org/GNOME/zenity/-/archive/3.44.4/zenity-3.44.4.tar.gz", + "sha256": "e7b334867d4e11053e6e52e5d51b7a983dc549f93cb3fda757e40309b16bc57b" + } + ], + "post-install": [ + "mv ${FLATPAK_DEST}/bin/zenity ${FLATPAK_DEST}/bin/zenity-gtk3" + ] + }, + { + "name": "zenity-gtk4", + "buildsystem": "meson", + "sources": [ + { + "type": "archive", + "url": "https://gitlab.gnome.org/GNOME/zenity/-/archive/4.0.2/zenity-4.0.2.tar.gz", + "sha256": "fdbb74e882a6a56bb2f1a2381b81e08b06c627cc7e944edb71d107092c70dd80", + "x-checker-data": { + "type": "gnome", + "name": "zenity" + } + } + ], + "post-install": [ + "mv ${FLATPAK_DEST}/bin/zenity ${FLATPAK_DEST}/bin/zenity-gtk4" + ] + }, { "name": "ClassiCubeAssets", "buildsystem": "simple", @@ -85,6 +120,7 @@ "gcc -fno-math-errno src/*.c -o src/ClassiCube -rdynamic -lpthread -lGL -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL3 -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -DCC_BUILD_FLATPAK -L /app/lib -lSDL3", "install -Dm755 src/ClassiCube -t ${FLATPAK_DEST}/bin", "install -Dm755 misc/flatpak/ClassiCubeLauncher -t ${FLATPAK_DEST}/bin", + "install -Dm755 misc/flatpak/zenity-wrapper ${FLATPAK_DEST}/bin/zenity", "install -Dm644 misc/flatpak/net.classicube.flatpak.client.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/net.classicube.flatpak.client.svg", "install -Dm644 misc/flatpak/net.classicube.flatpak.client.desktop ${FLATPAK_DEST}/share/applications/net.classicube.flatpak.client.desktop", "install -Dm644 misc/flatpak/net.classicube.flatpak.client.metainfo.xml ${FLATPAK_DEST}/share/metainfo/net.classicube.flatpak.client.metainfo.xml" diff --git a/misc/flatpak/zenity-wrapper b/misc/flatpak/zenity-wrapper new file mode 100755 index 000000000..1d38adc63 --- /dev/null +++ b/misc/flatpak/zenity-wrapper @@ -0,0 +1,7 @@ +#!/bin/bash +# Allow forcing GTK3/4 through $CC_DIALOG_FORCE_ZENITY_GTK{3,4} +if [[ -z "${CC_DIALOG_FORCE_ZENITY_GTK3}" && "${XDG_CURRENT_DESKTOP}" == "GNOME" || ! -z "${CC_DIALOG_FORCE_ZENITY_GTK4}" ]]; then + zenity-gtk4 "$@" +else + zenity-gtk3 "$@" +fi \ No newline at end of file