From 5811f5c8a417a34621171b9d8e761822730a8628 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 1 Oct 2026 21:11:46 +0200 Subject: [PATCH] fix: Add as non-Steam game isn't offered on NVIDIA PCs (no gaming mode there) --- CHANGELOG.md | 1 + README.md | 2 +- lib/menu.sh | 4 +++- tests/nvidia-test.sh | 8 ++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74e17e7..37f14d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ one per merged pull request. - **feat: "Gaming on NVIDIA" (nvidia) replaces the SteamOS conversion on PCs with an NVIDIA GPU, where gamescope's gaming mode shows a corrupted picture (NVIDIA bug 5240452): Steam is installed when missing and starts at login on the Plasma desktop; the sub-option "Steam starts in Big Picture" (bigpicture, ticked along with it) starts it in Big Picture, unticked in its normal window, and Big Picture starts on an empty Plasma session (no windows of the last session on top of it) (lib/nvidia.sh, services/steamify-steam-autostart.service). On a supported card (RTX 20 series or newer, chwd's legacy lists like the VRAM booster) it also puts nvidia-drm.modeset=1 and fbdev=1 on the kernel command line (Limine incl. its `+=` line, systemd-boot, GRUB) and the NVIDIA modules in the initramfs while every installed kernel has them (a pacman hook decides at every kernel change). The conversion and its options are hidden there unless already on** - **feat: single user mode also works on NVIDIA PCs, without the SteamOS conversion: it switches to SDDM and logs in to the Plasma session by itself (/etc/sddm.conf.d/zzz-steamify-autologin.conf), and no longer ticks the conversion where that isn't offered (lib/single-user.sh)** +- **fix: "Add as non-Steam game" isn't offered on NVIDIA PCs (there is no gaming mode there for it to give the controller; shown when already on, so it can be turned off)** - **test: tests/nvidia-test.sh runs it against a fake RTX 5080 beside an iGPU, a stub pacman and systemctl, and a temp home (no root, VM or hardware); verified on a real RTX 5080: gamescope's session, a nested gamescope and a KWin-only session all showed artifacts or stutter, Big Picture on the Plasma desktop did not** ## 2.9.6 - 2026-09-30 diff --git a/README.md b/README.md index b00f5e9..e3367f5 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Steam Machine. With **Add as non-Steam game** (on by default) it's in your Steam library too: started from Steam it gets your controller (a Steam Controller only talks to Steam), in gaming mode as well. Steam closes for a moment while - it's added, so that's done from the desktop. + it's added, so that's done from the desktop. Not offered on PCs with an NVIDIA graphics card, which have no gaming mode. 6. **Update notifications** - on by default: a notification and a tray icon when there's a new Steamify, with Open Steamify and Skip this version. It never updates anything by itself diff --git a/lib/menu.sh b/lib/menu.sh index 823d9ce..d6a2b81 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -60,7 +60,9 @@ component_available() { bigpicture) bigpicture_available ;; machine|poweroff) machine_available ;; vram) vram_available ;; - steamgame) steamgame_available ;; + # Steamify in the Steam library is for gaming mode's controller: not needed for Big Picture on the desktop (NVIDIA PCs; + # shown anyway when it's already on, so it can be turned off). + steamgame) steamgame_available && { ! nvidia_present || steamgame_status; } ;; kpin) kpin_available ;; hdmi) hdmi_available ;; bios) bios_available ;; diff --git a/tests/nvidia-test.sh b/tests/nvidia-test.sh index c157ade..3d5ad98 100644 --- a/tests/nvidia-test.sh +++ b/tests/nvidia-test.sh @@ -80,6 +80,14 @@ check "no NVIDIA: the conversion is shown as before" 'component_available gaming check "...and Gaming on NVIDIA is hidden" '! component_available nvidia && ! component_available bigpicture' NVIDIA_DRM_DIR="$T/drm" +# --- "Add as non-Steam game" is for gaming mode's controller: not offered on an NVIDIA PC (unless already on) +steamgame_available() { return 0; }; STEAMGAME_ON=0; steamgame_status() { [[ "$STEAMGAME_ON" == 1 ]]; } +check "NVIDIA PC: Add as non-Steam game is hidden" '! component_available steamgame' +STEAMGAME_ON=1; check "...unless it is already on (so it can be turned off)" 'component_available steamgame'; STEAMGAME_ON=0 +NVIDIA_DRM_DIR="$T/none"; check "no NVIDIA: it is offered as before" 'component_available steamgame' +steamgame_available() { return 1; }; check "no NVIDIA, no Steam account yet: still not offered" '! component_available steamgame' +steamgame_available() { return 0; }; NVIDIA_DRM_DIR="$T/drm" + # --- turning it on check "off to begin with" '! nvidia_status && ! bigpicture_status' nvidia_enable