From d1693264895c55daa384eccbe6e8138d5aa78bec Mon Sep 17 00:00:00 2001 From: Nick Benthem Date: Mon, 23 Mar 2026 00:58:25 -0400 Subject: [PATCH] Use portal dialogs on Linux and simplify AppImage GTK packaging --- .github/linux/appimage.sh | 10 ++-------- .github/workflows/validate.yml | 4 ++-- BUILDING.md | 2 +- CMakeLists.txt | 2 ++ 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/linux/appimage.sh b/.github/linux/appimage.sh index bde546e..9d2b6df 100755 --- a/.github/linux/appimage.sh +++ b/.github/linux/appimage.sh @@ -13,9 +13,8 @@ else fi curl -sSfLO "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-$LINUX_DEPLOY_ARCH.AppImage" -curl -sSfLO "https://github.com/linuxdeploy/linuxdeploy-plugin-gtk/raw/master/linuxdeploy-plugin-gtk.sh" -chmod a+x linuxdeploy* +chmod a+x "linuxdeploy-$LINUX_DEPLOY_ARCH.AppImage" mkdir -p AppDir/usr/bin cp BM64Recompiled AppDir/usr/bin/ @@ -26,7 +25,7 @@ cp .github/linux/BM64Recompiled.desktop AppDir/ "./linuxdeploy-$LINUX_DEPLOY_ARCH.AppImage" --appimage-extract mv squashfs-root/ deploy -./deploy/AppRun --appdir=AppDir/ -d AppDir/BM64Recompiled.desktop -i AppDir/BM64Recompiled.png -e AppDir/usr/bin/BM64Recompiled --plugin gtk +./deploy/AppRun --appdir=AppDir/ -d AppDir/BM64Recompiled.desktop -i AppDir/BM64Recompiled.png -e AppDir/usr/bin/BM64Recompiled sed -i 's/exec/#exec/g' AppDir/AppRun echo 'if [ -f "portable.txt" ]; then' >> AppDir/AppRun echo ' APP_FOLDER_PATH=$PWD' >> AppDir/AppRun @@ -37,9 +36,4 @@ echo ' cd "$this_dir"/usr/bin/' >> AppDir/AppRun echo ' ./BM64Recompiled' >> AppDir/AppRun echo 'fi' >> AppDir/AppRun -# Remove conflicting libraries -rm -rf AppDir/usr/lib/libgmodule* -rm -rf AppDir/usr/lib/gio/modules/*.so -rm -rf AppDir/usr/lib/libwayland* - ./deploy/usr/bin/linuxdeploy-plugin-appimage --appdir=AppDir diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index e870bd3..2f31c53 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -37,7 +37,7 @@ jobs: - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install -y ninja-build libsdl2-dev libgtk-3-dev lld llvm clang-15 libfuse2 + sudo apt-get install -y ninja-build libsdl2-dev libdbus-1-dev lld llvm clang-15 libfuse2 # Install SDL2 echo ::group::install SDL2 @@ -131,7 +131,7 @@ jobs: - name: Install Linux Dependencies run: | sudo apt-get update - sudo apt-get install -y ninja-build libsdl2-dev libgtk-3-dev lld llvm clang-15 libfuse2 + sudo apt-get install -y ninja-build libsdl2-dev libdbus-1-dev lld llvm clang-15 libfuse2 # Install SDL2 echo ::group::install SDL2 diff --git a/BUILDING.md b/BUILDING.md index e1dfea4..03db6df 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -23,7 +23,7 @@ For Linux the instructions for Ubuntu are provided, but you can find the equival ```bash # For Ubuntu, simply run: -sudo apt-get install cmake ninja libsdl2-dev libgtk-3-dev lld llvm clang-15 +sudo apt-get install cmake ninja libsdl2-dev libdbus-1-dev lld llvm clang-15 ``` ### Windows diff --git a/CMakeLists.txt b/CMakeLists.txt index c104f86..a52b053 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,8 @@ endif() if (CMAKE_SYSTEM_NAME MATCHES "Linux") option(RECOMP_FLATPAK "Configure the build for Flatpak compatibility." OFF) + # Use xdg-desktop-portal for file dialogs to avoid GTK runtime mismatches in AppImages. + set(NFD_PORTAL ON CACHE BOOL "Use xdg-desktop-portal for native file dialogs on Linux" FORCE) endif() # Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24: