From 7b751ab72618444264937bfc3aa180cc74f47f2f Mon Sep 17 00:00:00 2001 From: rickpeters Date: Thu, 15 Oct 2026 20:40:26 +0200 Subject: [PATCH] Install qt6-svg with PySide6: without Qt's SVG plugin the app's logo doesn't show --- CHANGELOG.md | 1 + lib/update-notifier.sh | 2 ++ lib/wizard-shortcut.sh | 2 +- ui/steamify-app.sh | 10 +++++++--- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ce0269..cd6edd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ one per merged pull request. - **feat: GNOME support (the "SteamOS theme for GNOME" option, GDM session switching, the GNOME launcher/notifier/tray behaviour): the Vapor colors, the Steam Deck wallpaper, Ubuntu Dock, Tiling Assistant, Desktop Icons NG, AppIndicator and Steamify's own Vapor shell extension, with Switch to Desktop remembering KDE or GNOME. Prototype work since 2.12.0: `5dfc916`, `fc28ea4`, `ae12c1b`, `2b84e6a`, `c5b59d9`, `62a30e6`, `039f269`, `12eb562`, `c7f5f51`, `7904833`, `ce1aa1b`, `ab3b581`, `eaa3f28`, `4221ae6`, `8432f63`, `09ef0b1`, `68342e7`, `0e0bf57`, `7a84b0d`, `dbaeaa1`** - `2ca288d` **fix: the NVIDIA gaming mode setup no longer fails with "the patched gamescope doesn't start" on a gamescope that works: the smoke test judged gamescope's exit status through a pipe into `grep -q` under `pipefail`, so gamescope's crash on the closed pipe (or a hung shutdown) counted as a failed test, intermittently, for the CPU-specific and the generic build alike (seen on an RTX 5080). The test now reads gamescope's output from a file and kills a hung shutdown (`timeout -k`)** - `645b331` **feat: the GNOME theme installs GNOME Settings with the "GNOME Desktop" panel (dock, desktop icons, tiling) as a prebuilt package, downloaded from the `settings` release of steamify-gnome-theme (built by GitHub Actions on current Arch, rebuilt weekly) and checked against its `.sha256`; a failure keeps the stock Settings. Turning the theme off puts the stock `gnome-control-center` back. Installs with the GNOME theme on re-apply it (feature version 2.13.0)** +- **fix: the app's logo (an SVG) shows on a fresh install: `pyside6` doesn't depend on `qt6-svg`, Qt's SVG plugin, so without it the header logo was empty and the window had no icon of its own; it is installed with PySide6 (the app's installer, the launcher, the update notifier)** ## 2.12.0 - 2026-10-13 diff --git a/lib/update-notifier.sh b/lib/update-notifier.sh index 5f3c3fb..783a23f 100644 --- a/lib/update-notifier.sh +++ b/lib/update-notifier.sh @@ -30,6 +30,8 @@ notify_enable() { info "Adding update notifications..." # PySide6 for the tray icon, notify-send for the notification's buttons. python3 -c 'import PySide6.QtWidgets' 2>/dev/null || missing+=(pyside6) + # (Its icons are SVGs, and Qt needs its SVG plugin for those.) + pacman -Q qt6-svg >/dev/null 2>&1 || missing+=(qt6-svg) command -v notify-send >/dev/null || missing+=(libnotify) if ((${#missing[@]})); then sudo pacman -S --needed --noconfirm "${missing[@]}" || diff --git a/lib/wizard-shortcut.sh b/lib/wizard-shortcut.sh index f02bc92..093aaec 100644 --- a/lib/wizard-shortcut.sh +++ b/lib/wizard-shortcut.sh @@ -96,7 +96,7 @@ EOF #!/bin/bash # Installed by Steamify CachyOS: start the newest release of its app. set -o pipefail -if [[ "\${1:-}" != --in-terminal ]] && ! python3 -c 'import PySide6.QtQml' 2>/dev/null; then +if [[ "\${1:-}" != --in-terminal ]] && { ! python3 -c 'import PySide6.QtQml' 2>/dev/null || ! pacman -Q qt6-svg >/dev/null 2>&1; }; then exec $terminal "\$0" --in-terminal fi if ! curl -fsSL --max-time 30 "$WIZARD_APP_URL" | bash; then diff --git a/ui/steamify-app.sh b/ui/steamify-app.sh index ca6ecd6..2bd49f3 100755 --- a/ui/steamify-app.sh +++ b/ui/steamify-app.sh @@ -47,10 +47,14 @@ rm -rf "$DEST.new"; mv "$tmp/app" "$DEST.new" rm -rf "$DEST"; mv "$DEST.new" "$DEST" say "Installed to $DEST ($(grep -m1 -oP '^VERSION=\K.*' "$DEST/steamify.sh"))." -if ! python3 -c 'import PySide6.QtQml' 2>/dev/null; then - say "The app needs PySide6 (Qt for Python); installing it..." +missing=() +python3 -c 'import PySide6.QtQml' 2>/dev/null || missing+=(pyside6) +# The app's logo is an SVG: Qt needs its SVG plugin for it, and pyside6 doesn't pull it in. +pacman -Q qt6-svg >/dev/null 2>&1 || missing+=(qt6-svg) +if ((${#missing[@]})); then + say "The app needs ${missing[*]} (Qt for Python and its SVG support); installing..." # Piped in via curl, stdin isn't the terminal: sudo asks on it anyway. - sudo pacman -S --needed --noconfirm pyside6