# Native Linux client screenshots for the app/marketing listings. The client renders # host-free mock scenes (PUNKTFUNK_SHOT_SCENE) under a virtual X display; the driver # (clients/linux/tools/screenshots.sh) grabs each one — no host, GPU, or Wayland. The # Linux analogue of apple.yml's `screenshots` job, gated to STABLE RELEASE tags only. # Standalone + best-effort: a failure here reds nothing else. PNGs land as a 30-day # artifact; they are not committed or published. name: linux-client-screenshots on: push: tags: ["v*"] workflow_dispatch: jobs: screenshots: if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch' runs-on: ubuntu-24.04 # Same image as ci.yml/deb.yml — already carries the Rust toolchain + GTK/SDL build deps. container: image: git.unom.io/unom/punktfunk-rust-ci:latest timeout-minutes: 90 steps: - uses: actions/checkout@v4 # Client link deps (baked into the image; kept here so the job is green across image # rebuilds — a no-op once present) PLUS the headless-render extras: a virtual X server, # software GL+Vulkan (llvmpipe/lavapipe), the icon theme + fonts the UI draws with, and a # root-window grab tool. - name: Client link + headless-render deps run: | apt-get update apt-get install -y --no-install-recommends \ libgtk-4-dev libadwaita-1-dev libsdl3-dev \ xvfb x11-utils imagemagick scrot \ libgl1-mesa-dri mesa-vulkan-drivers \ adwaita-icon-theme fonts-cantarell fonts-dejavu-core # Reuse the workspace cargo caches (same keys as ci.yml/deb.yml). - name: Cache keys run: echo "rustc=$(rustc --version | cut -d' ' -f2)" >> "$GITHUB_ENV" - uses: actions/cache@v4 with: path: | /usr/local/cargo/registry /usr/local/cargo/git key: cargo-home-${{ hashFiles('Cargo.lock') }} restore-keys: cargo-home- - uses: actions/cache@v4 with: path: target key: cargo-target-v3-${{ env.rustc }}-${{ hashFiles('Cargo.lock') }} restore-keys: cargo-target-v3-${{ env.rustc }}- - name: Build client run: cargo build --release -p punktfunk-client-linux --locked - name: Capture screenshots run: bash clients/linux/tools/screenshots.sh - name: Upload screenshots if: always() # v3: Gitea's API rejects upload-artifact@v4 (see apple.yml). Download is a zip. uses: actions/upload-artifact@v3 with: name: punktfunk-linux-client-screenshots path: clients/linux/screenshots retention-days: 30