diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 772d9d9..3fea8d6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,6 +24,19 @@ jobs: - name: Test run: | cargo test + test_Flatpak: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + - name: dependencies + run: | + sudo apt-get update + sudo apt-get install -y libclang-dev libgtk-3-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev + - name: Test + run: | + cargo test --features flatpak test_Windows: runs-on: windows-latest steps: diff --git a/Cargo.toml b/Cargo.toml index 5d75c7a..80c18af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,4 +58,8 @@ version = "^0.5.9" winres = "^0.1.12" [target."cfg(windows)".dependencies] -winreg = "^0.10.1" \ No newline at end of file +winreg = "^0.10.1" + +[features] +# This feature is enabled when building for a flatpak environment +flatpak = [] \ No newline at end of file diff --git a/flatpak/io.github.philipk.boilr.yml b/flatpak/io.github.philipk.boilr.yml index 0bbae41..900fa34 100644 --- a/flatpak/io.github.philipk.boilr.yml +++ b/flatpak/io.github.philipk.boilr.yml @@ -22,6 +22,8 @@ finish-args: - --filesystem=~/Games/Heroic:rw # Heroic (non-flatpak) - --filesystem=~/.var/app/com.heroicgameslauncher.hgl:rw # Heroic (Flatpak) - --filesystem=~/.config/itch:rw # Itch + - --talk-name=org.freedesktop.Flatpak + - --filesystem=xdg-data/flatpak:ro - --share=network - --share=ipc @@ -42,7 +44,7 @@ modules: - cargo-lock.json build-commands: - cargo --offline fetch --manifest-path Cargo.toml --verbose - - cargo --offline build --release --verbose + - cargo --offline build --release --verbose --features flatpak - install -Dm755 ./target/release/boilr -t /app/bin/ - name: boilr-icon diff --git a/src/lutris/lutris_platform.rs b/src/lutris/lutris_platform.rs index 18e82a7..5e7f4b6 100644 --- a/src/lutris/lutris_platform.rs +++ b/src/lutris/lutris_platform.rs @@ -54,8 +54,15 @@ impl Platform> for LutrisPlatform { fn get_lutris_command_output(settings: &LutrisSettings) -> Result> { let output = if settings.flatpak { let flatpak_image = &settings.flatpak_image; - let mut command = Command::new("flatpak"); - command.arg("run").arg(flatpak_image).arg("-lo").arg("--json").output()? + #[cfg(not(feature = "flatpak"))]{ + let mut command = Command::new("flatpak"); + command.arg("run").arg(flatpak_image).arg("-lo").arg("--json").output()? + } + #[cfg(feature = "flatpak")] + { + let mut command = Command::new("flatpak-spawn"); + command.arg("--host").arg("flatpak").arg("run").arg(flatpak_image).arg("-lo").arg("--json").output()? + } } else { let mut command = Command::new(&settings.executable); command.arg("-lo").arg("--json").output()?