diff --git a/AGENTS.md b/AGENTS.md index 7921e10..69ce721 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -48,7 +48,7 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine `_available` is checked via `component_available` (e.g. `machine` only on Fremont). Turn-on order is `COMPONENTS` order, turn-off reverse; `gaming` must stay first. Dependencies live in `toggle_component`. -- **NVIDIA** (`lib/gamescope-nvidia.sh`, `lib/nvidia.sh`): since 2.11.2 the SteamOS conversion (`gaming` and its options) runs on +- **NVIDIA** (`lib/gamescope-nvidia.sh`, `lib/nvidia.sh`): since 2.12.0 the SteamOS conversion (`gaming` and its options) runs on NVIDIA PCs with a patched gamescope (GBM scan-out: gamescope#2309; Steam's UI kept at the display's size), downloaded as the newest release of theupriser/steamify-gamescope-nvidia, with the pinned package (`GSN_VERSION`, `GSN_SHA256`), the copy the ISO leaves, and a build here (`patches/gamescope-nvidia.PKGBUILD` + the two patches) as the fallback. "Gaming on NVIDIA" (`nvidia`, @@ -160,9 +160,8 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine a warning when `VERSION` is a version that's already released (so a release branch that forgot its bump shows it on every PR). - A release that adds, removes or renames a menu row also retakes the - README screenshots (`assets/screenshot-menu-steam-machine.png` and - `assets/screenshot-menu-nvidia.png`, side by side in the README): the app from the branch on a Steam Machine and on a PC - with an NVIDIA card, every row visible and each window only as tall as its options need, the header showing the new + README screenshot (`assets/screenshot-menu-steam-machine.png`; NVIDIA PCs get the same menu, so there is no separate + one): the app from the branch on a Steam Machine, every row visible and the window only as tall as its options need, the header showing the new `VERSION`, 1600 px wide. Size the window with a KWin script (match the `steamify-ui` class exactly: a title match also hits Konsole and editor windows) and crop the full-screen capture to the client rectangle; mind the display scale (the Steam Machine runs at 1.75). diff --git a/CHANGELOG.md b/CHANGELOG.md index fdb6217..7d27de6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes, per version and per commit. Versions follow `steamify.sh`. Versions before 0.7.0 were numbered afterwards, one per merged pull request. -## 2.11.2 - 2026-10-13 +## 2.12.0 - 2026-10-13 - **feat: the patched gamescope comes in one build per CPU level, like CachyOS's repositories (generic, x86-64-v3, v4, znver4): Steamify picks the best one this CPU can run (`gsn_cpu_variant`), falls back to generic, and starts the installed gamescope once headless (`gsn_smoke_test`): a build that doesn't start is replaced by the generic one. CI compiles each with an explicit `-march` (a `-march=native` build died with SIGILL on a Ryzen) and checks the binary for instructions beyond its level.** - **feat: on NVIDIA the gaming session runs on the display's own mode and Steam's interface at its size: a second gamescope patch (`gamescope-ui-native.patch`, release `3.16.31-3` of steamify-gamescope-nvidia, now the pin; built once per CPU level, see below) keeps Steam's UI X server at the output size when Steam (with `-steamos3`) asks for 1920x1080, and a wrapper (`gamescope-display-wrapper.sh`, set up by the conversion with a drop-in of `gamescope-session.service`) starts gamescope on the mode KDE has saved for the connected display, else the biggest mode at the highest refresh rate: before, gaming mode ran at the display's preferred mode (60 Hz on many monitors) with a 1080p Steam UI. Tested on an RTX 5080, 3440x1440@175: widescreen, sharp, a Proton game starts** diff --git a/README.md b/README.md index 01498b3..59b9a71 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,9 @@ # Steamify CachyOS -The Steamify app's menu. On a Steam Machine (or any PC with an AMD or Intel -graphics card) it offers the full SteamOS conversion, on the left. On a PC with -an NVIDIA graphics card gamescope's gaming mode shows a corrupted picture, so the -menu offers **Gaming on NVIDIA** instead (Steam on the desktop, started at login, -optionally in Big Picture), on the right. +The Steamify app's menu, on a Steam Machine. On a PC with an NVIDIA graphics card (GTX 16 / RTX 20 series or +newer) the same SteamOS conversion is offered; Steamify installs a patched gamescope for it. -| On a Steam Machine | On a PC with an NVIDIA graphics card | -|---|---| -| ![The Steamify app's menu on a Steam Machine](assets/screenshot-menu-steam-machine.png) | ![The Steamify app's menu on a PC with an NVIDIA graphics card](assets/screenshot-menu-nvidia.png) | +![The Steamify app's menu on a Steam Machine](assets/screenshot-menu-steam-machine.png) Turn a CachyOS desktop PC into a SteamOS-style console: it boots straight into Steam's Big Picture (gamescope), and you can switch to the KDE Plasma diff --git a/TECHNICAL.md b/TECHNICAL.md index fdd197f..2678fd9 100644 --- a/TECHNICAL.md +++ b/TECHNICAL.md @@ -238,7 +238,7 @@ no fix known). The kernel parameters `nvidia-drm.modeset=1`/`fbdev=1` and loadin window straight to the display. What does work on an RTX 5080: Steam's Big Picture (`steam -gamepadui`) as a normal window of the Plasma desktop session, smooth and clean. -Since 2.11.2 there is a second way: gamescope with GBM-allocated scan-out buffers (`lib/gamescope-nvidia.sh`). On an RTX 5080 +Since 2.12.0 there is a second way: gamescope with GBM-allocated scan-out buffers (`lib/gamescope-nvidia.sh`). On an RTX 5080 (driver 615.78.08, 3440x1440@175) Steam's gaming UI in gamescope's DRM session is clean with it and shows artifacts everywhere without. The patch is nine commits of [farnoy/gamescope](https://github.com/farnoy/gamescope) (`nvidia-gbm-wayland`), carried in `patches/` (`gamescope-gbm-scanout.patch` and the recipe `gamescope-nvidia.PKGBUILD`, kept in sync with @@ -260,7 +260,7 @@ newer, Turing and later): the kernel parameters, the early modules, suspend memo offered any more (`nvidia_available`); a PC that had it on keeps it until the conversion is turned on, which turns it off (`nvidia_swap_out`). Turning the conversion off removes the setting and those settings, and keeps the packages. Tested on an RTX 5080 only. -Before 2.11.2, with an NVIDIA GPU the SteamOS conversion (`gaming`, and its options `boot`, `single`, `glyphs`) wasn't offered, unless +Before 2.12.0, with an NVIDIA GPU the SteamOS conversion (`gaming`, and its options `boot`, `single`, `glyphs`) wasn't offered, unless it was already on. `nvidia` ("Gaming on NVIDIA", `lib/nvidia.sh`) took its place (both would start Steam at login): it installs `steam` when missing (recorded in state `nvidia`, removed again only then) and enables the user unit `steamify-steam-autostart.service` (`services/`, `ExecStart=/usr/bin/steam @ARGS@`, Plasma only). Its sub-option `bigpicture` ("Steam starts in Big Picture", ticked along with it) rewrites the unit with `-gamepadui` and sets diff --git a/assets/screenshot-menu-nvidia.png b/assets/screenshot-menu-nvidia.png deleted file mode 100644 index 5c936fc..0000000 Binary files a/assets/screenshot-menu-nvidia.png and /dev/null differ diff --git a/lib/menu.sh b/lib/menu.sh index 4bbd791..8937fd8 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -26,7 +26,7 @@ NO_PRESELECT=(boot silent nvsilent cec kpin hdmi extended_controller_support) # FEATURE_BASELINE. FEATURE_BASELINE=2.1.0 declare -A FEATURE_VERSION=( - [gaming]=2.9.0 [boot]=2.1.0 [silent]=2.11.0 [nvidia]=2.11.2 [bigpicture]=2.10.0 [nvsilent]=2.11.0 [theme]=2.1.0 [glyphs]=2.1.0 [single]=2.1.0 + [gaming]=2.9.0 [boot]=2.1.0 [silent]=2.11.0 [nvidia]=2.12.0 [bigpicture]=2.10.0 [nvsilent]=2.11.0 [theme]=2.1.0 [glyphs]=2.1.0 [single]=2.1.0 [launcher]=2.1.0 [cec]=2.7.0 [machine]=2.9.0 [poweroff]=2.2.0 [vram]=2.3.0 [notify]=2.5.0 [steamgame]=2.5.1 [extended_controller_support]=2.10.0 [kpin]=2.1.0 [hdmi]=2.1.0 ) diff --git a/lib/nvidia.sh b/lib/nvidia.sh index fac2c2b..d7640db 100644 --- a/lib/nvidia.sh +++ b/lib/nvidia.sh @@ -37,12 +37,12 @@ nvidia_present() { return 1 } -# Not offered any more (2.11.2): the SteamOS conversion with the patched gamescope (lib/gamescope-nvidia.sh) covers NVIDIA PCs. +# Not offered any more (2.12.0): the SteamOS conversion with the patched gamescope (lib/gamescope-nvidia.sh) covers NVIDIA PCs. # A PC that has this on keeps it until the conversion is turned on, which calls nvidia_swap_out. nvidia_available() { return 1; } nvidia_migration_pending() { - # "Gaming on NVIDIA" is on (set up before 2.11.2) and the SteamOS conversion that replaces it isn't: the menu ticks the + # "Gaming on NVIDIA" is on (set up before 2.12.0) and the SteamOS conversion that replaces it isn't: the menu ticks the # conversion and shows it as an update, so a normal run moves the PC over (nvidia_swap_out in gsn_enable). nvidia_present && nvidia_status && ! gaming_status 2>/dev/null } diff --git a/steamify.sh b/steamify.sh index cf39a0d..424923d 100755 --- a/steamify.sh +++ b/steamify.sh @@ -15,7 +15,7 @@ set -uo pipefail # Release version, see CHANGELOG.md. -VERSION=2.11.2 +VERSION=2.12.0 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"