feat: Steam's OS Version is the SteamOS release Steamify follows (steamos-3.9), its OS Codename steam-machine; About this System keeps "CachyOS Linux" (UseOSReleaseVersion)

This commit is contained in:
theupriser committed 2026-09-28 19:28:10 +02:00
1 parent 3a58c72d16
commit a72d848e78
5 files changed
+37 -28

No files matched your search

+13 -9
View File
@@ -312,16 +312,20 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine
switches `boot` on an installed conversion: `WANTED` is `CURRENT` plus switches `boot` on an installed conversion: `WANTED` is `CURRENT` plus
that, so no updates or removals a normal run would pick. that, so no updates or removals a normal run would pick.
- What Steam's System settings show (SteamOS conversion, 2.9.0): the OS name - What Steam's System settings show (SteamOS conversion, 2.9.0): the OS name
stays CachyOS's everywhere (legal clarity; Steam reads `lsb_release -d`, stays CachyOS's everywhere (legal clarity; Steam's OS Name is
not touched). `/etc/os-release` gets only `VARIANT="Steamify <version>"`, `lsb_release -d`, not touched). `/etc/os-release` gets `VERSION_ID=steamos-X.Y`
`VARIANT_ID=steamify-<version>` (what Steam shows as OS Variant) and `VERSION_CODENAME=steamos-X.Y` (no `VERSION_ID`: KDE's About (Steam's OS Version: Valve's newest jupiter repo; offline, the previous
this System shows it after the name, "CachyOS Linux 2.9.0") (Valve's value), `VERSION_CODENAME=steam-machine`, `VARIANT="Steamify <version>"` and
newest jupiter repo), refreshed by `os_version_refresh` after every run that `VARIANT_ID=steamify-<version>` (Steam shows VARIANT_ID as OS Variant),
changes something; a pacman hook (`zz-steamify-os-release`) runs after refreshed by `os_version_refresh` after every run that changes something; a
cachyos-hooks. Never `NAME` or `PRETTY_NAME`: limine-snapper-sync finds the pacman hook (`zz-steamify-os-release`) runs after cachyos-hooks. KDE's About
boot entries by the OS name ("Target OS name ... not found in this System would show VERSION_ID after the name: `kcm-about-distrorc`
`UseOSReleaseVersion=true` (kset) makes it show os-release's VERSION, which
CachyOS doesn't have. Never `NAME` or `PRETTY_NAME`: limine-snapper-sync
finds the boot entries by the OS name ("Target OS name ... not found in
/boot/limine.conf"); `/etc/default/limine` gets `TARGET_OS_NAME="CachyOS"` /boot/limine.conf"); `/etc/default/limine` gets `TARGET_OS_NAME="CachyOS"`
when it has none, as a guard. when it has none, as a guard. The serial number (tmpfiles rule) is Steam
Machine support's, so Fremont only.
- `Relogin=true` means a gamescope that fails to start is relaunched in a - `Relogin=true` means a gamescope that fails to start is relaunched in a
tight loop; keep that in mind when changing session handling. tight loop; keep that in mind when changing session handling.
+2 -1
View File
@@ -8,7 +8,8 @@ one per merged pull request.
## 2.9.0 - 2026-09-28 ## 2.9.0 - 2026-09-28
- `d30d505` **chore: Version 2.9.0** - `d30d505` **chore: Version 2.9.0**
- **fix: Steam's OS Variant shows Steamify's version (VARIANT_ID=steamify-2.9.0; Steam shows VARIANT_ID, not VARIANT)** - **feat: Steam's OS Version is the SteamOS release Steamify follows (steamos-3.9), its OS Codename steam-machine; About this System keeps "CachyOS Linux" (UseOSReleaseVersion)**
- `27a4070` **fix: Steam's OS Variant shows Steamify's version (VARIANT_ID=steamify-2.9.0; Steam shows VARIANT_ID, not VARIANT)**
- `44bfe07` **fix: No VERSION_ID in os-release: About this System said "CachyOS Linux 2.9.0"; the version is in VARIANT ("Steamify 2.9.0")** - `44bfe07` **fix: No VERSION_ID in os-release: About this System said "CachyOS Linux 2.9.0"; the version is in VARIANT ("Steamify 2.9.0")**
- `435f69c` **feat: Steam's System settings: the OS name stays CachyOS (no renaming, also not in About this System), Steamify <version> as the variant, the SteamOS release it follows as the codename (steamos-3.9)** - `435f69c` **feat: Steam's System settings: the OS name stays CachyOS (no renaming, also not in About this System), Steamify <version> as the variant, the SteamOS release it follows as the codename (steamos-3.9)**
- `ce71b34` **feat: Steam's System settings and About this System like on SteamOS: OS name "CachyOS with Steamify" (lsb-release, kept through CachyOS updates by a pacman hook), Steamify as OS variant and version (os-release VARIANT/VERSION_ID; NAME/PRETTY_NAME stay CachyOS's for limine, TARGET_OS_NAME pinned), "CachyOS Linux with Steamify" in About this System; on a Steam Machine the serial number and Steam's Wi-Fi backend setting (existing installs get it as an update)** - `ce71b34` **feat: Steam's System settings and About this System like on SteamOS: OS name "CachyOS with Steamify" (lsb-release, kept through CachyOS updates by a pacman hook), Steamify as OS variant and version (os-release VARIANT/VERSION_ID; NAME/PRETTY_NAME stay CachyOS's for limine, TARGET_OS_NAME pinned), "CachyOS Linux with Steamify" in About this System; on a Steam Machine the serial number and Steam's Wi-Fi backend setting (existing installs get it as an update)**
+13 -10
View File
@@ -20,24 +20,24 @@ gaming_status() {
# What Steam shows in its System settings besides the OS name (which stays # What Steam shows in its System settings besides the OS name (which stays
# CachyOS's, for legal clarity and because limine-snapper-sync finds the boot # CachyOS's, for legal clarity and because limine-snapper-sync finds the boot
# entries by it): Steamify as the variant and version, the SteamOS release it # entries by it): the SteamOS release as the OS version, steam-machine as the
# follows as the codename (os-release VARIANT/VERSION_CODENAME; no # codename, Steamify with its version as the variant (os-release VERSION_ID,
# VERSION_ID, which About this System would show after CachyOS's name). # VERSION_CODENAME, VARIANT_ID; see patches/steamify-os-release.sh).
OS_NAME_SCRIPT=/usr/local/libexec/steamify-os-release OS_NAME_SCRIPT=/usr/local/libexec/steamify-os-release
OS_NAME_HOOK=/etc/pacman.d/hooks/zz-steamify-os-release.hook OS_NAME_HOOK=/etc/pacman.d/hooks/zz-steamify-os-release.hook
# limine's tools take the OS name from TARGET_OS_NAME, else os-release's # limine's tools take the OS name from TARGET_OS_NAME, else os-release's
# PRETTY_NAME: pinned to CachyOS, the boot entries never depend on os-release. # PRETTY_NAME: pinned to CachyOS, the boot entries never depend on os-release.
LIMINE_DEFAULTS=/etc/default/limine LIMINE_DEFAULTS=/etc/default/limine
steamos_codename() { steamos_release() {
# The SteamOS release Steamify follows: Valve's newest jupiter-X.Y repo # The SteamOS release Steamify follows: Valve's newest jupiter-X.Y repo
# (where the SteamOS extras come from), as a codename (os-release allows # (where the SteamOS extras come from), as an os-release ID (no spaces or
# no spaces or capitals: steamos-3.9). Offline (e.g. in the installer): # capitals: steamos-3.9). Offline (e.g. in the installer): the one set
# the one set before, if any. # before, if any.
local v local v
v="$(curl -fsL --max-time 15 "$VALVE_MIRROR/" 2>/dev/null | grep -oE 'jupiter-[0-9]+\.[0-9]+/' | tr -d / | sort -V | tail -n 1)" v="$(curl -fsL --max-time 15 "$VALVE_MIRROR/" 2>/dev/null | grep -oE 'jupiter-[0-9]+\.[0-9]+/' | tr -d / | sort -V | tail -n 1)"
if [[ -n "$v" ]]; then echo "steamos-${v#jupiter-}" if [[ -n "$v" ]]; then echo "steamos-${v#jupiter-}"
else sed -n 's/^VERSION_CODENAME=//p' /etc/os-release 2>/dev/null; fi else sed -n 's/^VERSION_ID=\(steamos-.*\)$/\1/p' /etc/os-release 2>/dev/null; fi
} }
os_name_enable() { os_name_enable() {
@@ -48,7 +48,10 @@ os_name_enable() {
fi fi
[[ -n "$(kreadconfig6 --file kcm-about-distrorc --group General --key Name 2>/dev/null)" ]] && [[ -n "$(kreadconfig6 --file kcm-about-distrorc --group General --key Name 2>/dev/null)" ]] &&
kset gaming kcm-about-distrorc General Name --delete kset gaming kcm-about-distrorc General Name --delete
patch_file steamify-os-release.sh | fill VERSION="$VERSION" CODENAME="$(steamos_codename)" | # About this System: os-release's VERSION (CachyOS has none) instead of
# VERSION_ID, which is the SteamOS release now.
kset gaming kcm-about-distrorc General UseOSReleaseVersion true
patch_file steamify-os-release.sh | fill VERSION="$VERSION" STEAMOS="$(steamos_release)" |
sudo install -Dm755 /dev/stdin "$OS_NAME_SCRIPT" && sudo install -Dm755 /dev/stdin "$OS_NAME_SCRIPT" &&
patch_file steamify-os-release.hook | fill SCRIPT="$OS_NAME_SCRIPT" | patch_file steamify-os-release.hook | fill SCRIPT="$OS_NAME_SCRIPT" |
sudo install -Dm644 /dev/stdin "$OS_NAME_HOOK" && sudo install -Dm644 /dev/stdin "$OS_NAME_HOOK" &&
@@ -82,7 +85,7 @@ os_version_refresh() {
# OS version follows Steamify's, not just the one that set it up. Silent: # OS version follows Steamify's, not just the one that set it up. Silent:
# the app reads the backend's stdout as JSON. # the app reads the backend's stdout as JSON.
gaming_status 2>/dev/null || return 0 gaming_status 2>/dev/null || return 0
grep -qx "VARIANT=\"Steamify $VERSION\"" /etc/os-release 2>/dev/null && return 0 grep -qx "VARIANT_ID=steamify-$VERSION" /etc/os-release 2>/dev/null && return 0
os_name_enable > /dev/null 2>&1 os_name_enable > /dev/null 2>&1
return 0 return 0
} }
+1 -1
View File
@@ -13,5 +13,5 @@ read and reviewed on their own. `lib/*.sh` reads them with `patch_file
| `steamify-fremont-poweroff.dkms.conf`, `steamify-cros-ec-cec.dkms.conf` | `lib/fremont-poweroff.sh`, `lib/cec.sh` | The DKMS modules' `dkms.conf` (`fill NAME=... VERSION=...`) | | `steamify-fremont-poweroff.dkms.conf`, `steamify-cros-ec-cec.dkms.conf` | `lib/fremont-poweroff.sh`, `lib/cec.sh` | The DKMS modules' `dkms.conf` (`fill NAME=... VERSION=...`) |
| `steam-shortcuts.py` | `lib/steam-game.sh` (Add as non-Steam game) | Reads and writes Steam's binary `shortcuts.vdf` (find, add or update, remove) | | `steam-shortcuts.py` | `lib/steam-game.sh` (Add as non-Steam game) | Reads and writes Steam's binary `shortcuts.vdf` (find, add or update, remove) |
| `steamify-notifier.py` | `lib/update-notifier.sh` (Update notifications) | The daily check: notification and tray icon when there's a new release | | `steamify-notifier.py` | `lib/update-notifier.sh` (Update notifications) | The daily check: notification and tray icon when there's a new release |
| `steamify-os-release.sh`, `steamify-os-release.hook` | `lib/login-manager.sh` (SteamOS conversion) | Steamify as the OS variant and version, and the SteamOS release it follows as the codename, for Steam's System settings (`VARIANT`, `VERSION_CODENAME` in `/etc/os-release`, no `VERSION_ID`; the OS name stays CachyOS's); the pacman hook runs it again after cachyos-hooks (`fill SCRIPT=... VERSION=... CODENAME=...`) | | `steamify-os-release.sh`, `steamify-os-release.hook` | `lib/login-manager.sh` (SteamOS conversion) | What Steam's System settings show besides the OS name (which stays CachyOS's): `VERSION_ID=steamos-X.Y`, `VERSION_CODENAME=steam-machine`, `VARIANT`/`VARIANT_ID` Steamify with its version, in `/etc/os-release`; the pacman hook runs it again after cachyos-hooks (`fill SCRIPT=... VERSION=... STEAMOS=...`) |
| `cros-ec-cec-single-port.patch` | `lib/cec.sh` (HDMI-CEC) | Makes Valve's Steam Machine CEC driver find amdgpu's HDMI port | | `cros-ec-cec-single-port.patch` | `lib/cec.sh` (HDMI-CEC) | Makes Valve's Steam Machine CEC driver find amdgpu's HDMI port |
+8 -7
View File
@@ -1,13 +1,14 @@
#!/bin/sh #!/bin/sh
# Installed by Steamify CachyOS (SteamOS conversion): what Steam shows in its # Installed by Steamify CachyOS (SteamOS conversion): what Steam shows in its
# System settings besides the OS name, which stays CachyOS's: Steamify as the # System settings besides the OS name, which stays CachyOS's: the SteamOS
# variant with its version, and the SteamOS release it follows as the # release Steamify follows as the OS version (VERSION_ID, e.g. steamos-3.9),
# codename (/etc/os-release's VARIANT, VERSION_CODENAME). No VERSION_ID: KDE's # steam-machine as the codename, and Steamify with its version as the variant
# About this System would show it after CachyOS's name ("CachyOS Linux 2.9.0"). NAME and # (VARIANT_ID, which Steam shows). KDE's About this System would show
# VERSION_ID after the name: the conversion sets its UseOSReleaseVersion, so it
# shows os-release's VERSION instead, which CachyOS doesn't have. NAME and
# PRETTY_NAME are never touched: limine-snapper-sync finds the boot entries by # PRETTY_NAME are never touched: limine-snapper-sync finds the boot entries by
# the OS name. The zz-steamify-os-release hook runs this after cachyos-hooks. # the OS name. The zz-steamify-os-release hook runs this after cachyos-hooks.
sed -i -e '/^VARIANT=/d' -e '/^VARIANT_ID=/d' -e '/^VERSION_ID=/d' -e '/^VERSION_CODENAME=/d' /etc/os-release sed -i -e '/^VARIANT=/d' -e '/^VARIANT_ID=/d' -e '/^VERSION_ID=/d' -e '/^VERSION_CODENAME=/d' /etc/os-release
# Steam shows VARIANT_ID as the OS Variant: the version goes in there too. printf '%s\n' 'VARIANT="Steamify @VERSION@"' 'VARIANT_ID=steamify-@VERSION@' 'VERSION_CODENAME=steam-machine' >> /etc/os-release
printf '%s\n' 'VARIANT="Steamify @VERSION@"' 'VARIANT_ID=steamify-@VERSION@' >> /etc/os-release [ -n "@STEAMOS@" ] && echo 'VERSION_ID=@STEAMOS@' >> /etc/os-release
[ -n "@CODENAME@" ] && echo 'VERSION_CODENAME=@CODENAME@' >> /etc/os-release
exit 0 exit 0