From 7869b472be991cf6a8a7ba32b9a3cdb3fcf6e9da Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Fri, 2 Oct 2026 10:15:59 +0200 Subject: [PATCH] feat: Steam Deck/Machine icons is a sub-option of the SteamOS conversion (it only changes gaming mode) --- CHANGELOG.md | 1 + TECHNICAL.md | 3 ++- lib/backend.sh | 4 ++-- lib/menu.sh | 7 ++++--- ui/qml/AppState.qml | 3 ++- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11c165b..91ee239 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ one per merged pull request. ## 2.11.0 - 2026-10-01 - `5da1833` **feat: "Start Steam silently" sub-option: under the SteamOS conversion (`silent`, on by default, as before) and under Gaming on NVIDIA (`nvsilent`, opt-in, not together with Big Picture); the SteamOS one is called "Start Steam silently in desktop mode" and is always shown, also on a Steam Machine; it is Steam's own autostart entry (`~/.config/autostart/steam.desktop`), so Steam's setting "Run Steam when my computer starts" follows it** +- **feat: "Steam Deck/Machine icons" (`glyphs`) is a sub-option of the SteamOS conversion, like "Start Steam silently in desktop mode": it only changes gaming mode** ## 2.10.0 - 2026-10-01 diff --git a/TECHNICAL.md b/TECHNICAL.md index dde3e2b..b032ba3 100644 --- a/TECHNICAL.md +++ b/TECHNICAL.md @@ -126,7 +126,8 @@ The conversion also sets what Steam's System settings show, see **Steam Deck/Machine icons:** `STEAM_GAMEPADUI_ARGS="-gamepadui -steamos3"` in `~/.config/environment.d/` (and gamescope-session's own environment -file), which makes Steam show Steam Deck button glyphs in gaming mode. +file), which makes Steam show Steam Deck button glyphs in gaming mode. It is a sub-option of the SteamOS conversion (`gaming`): +it does nothing without gaming mode, ticking it ticks the conversion and turning the conversion off turns it off. ## SteamOS desktop look diff --git a/lib/backend.sh b/lib/backend.sh index fb97b49..f205da8 100644 --- a/lib/backend.sh +++ b/lib/backend.sh @@ -158,8 +158,8 @@ backend_apply() { [[ "${WANTED[nvsilent]:-0}" == 1 ]] && WANTED[nvidia]=1 [[ "${WANTED[bigpicture]:-0}" == 1 ]] && WANTED[nvsilent]=0 [[ "${WANTED[nvidia]:-0}" == 0 ]] && { WANTED[bigpicture]=0; WANTED[nvsilent]=0; } - [[ "${WANTED[silent]:-0}" == 1 ]] && component_available gaming && WANTED[gaming]=1 - [[ "${WANTED[gaming]:-0}" == 0 ]] && WANTED[silent]=0 + [[ "${WANTED[silent]:-0}" == 1 || "${WANTED[glyphs]:-0}" == 1 ]] && component_available gaming && WANTED[gaming]=1 + [[ "${WANTED[gaming]:-0}" == 0 ]] && { WANTED[silent]=0; WANTED[glyphs]=0; } [[ "${WANTED[poweroff]:-0}" == 1 ]] && WANTED[machine]=1 [[ "${WANTED[machine]:-0}" == 0 ]] && WANTED[poweroff]=0 [[ "${WANTED[kpin]:-0}" == 1 ]] && WANTED[machine]=1 diff --git a/lib/menu.sh b/lib/menu.sh index cf09ec5..ce65dcb 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -5,12 +5,12 @@ # Menu order. Components are turned on in this order and off in reverse; # gaming must come first (single user builds on it). -COMPONENTS=(gaming boot silent nvidia bigpicture nvsilent theme glyphs single launcher steamgame notify extended_controller_support vram cec machine poweroff kpin hdmi bios) +COMPONENTS=(gaming boot silent glyphs nvidia bigpicture nvsilent theme single launcher steamgame notify extended_controller_support vram cec machine poweroff kpin hdmi bios) # One-off actions rather than on/off components: never preselected, never # re-applied, not listed as on or off. ACTIONS=(bios) # Sub-options, shown indented under their parent and only while it's ticked. -declare -A PARENT=([boot]=gaming [silent]=gaming [bigpicture]=nvidia [nvsilent]=nvidia [steamgame]=launcher [poweroff]=machine [kpin]=machine [hdmi]=machine [bios]=machine) +declare -A PARENT=([boot]=gaming [silent]=gaming [glyphs]=gaming [bigpicture]=nvidia [nvsilent]=nvidia [steamgame]=launcher [poweroff]=machine [kpin]=machine [hdmi]=machine [bios]=machine) # Never preselected on a first run: booting into the desktop is a choice, # gamescope is the default; HDMI-CEC is opt-in (it can wake the machine or # upset other devices on the TV, even on SteamOS), except on a Steam Machine, @@ -307,8 +307,9 @@ toggle_component() { # Silent and Big Picture exclude each other. if [[ "$c" == nvsilent && "${WANTED[nvsilent]}" == 1 ]]; then WANTED[nvidia]=1; WANTED[bigpicture]=0; fi if [[ "$c" == nvidia && "${WANTED[nvidia]}" == 0 ]]; then WANTED[nvsilent]=0; fi - if [[ "$c" == gaming && "${WANTED[gaming]}" == 0 ]]; then WANTED[silent]=0; fi + if [[ "$c" == gaming && "${WANTED[gaming]}" == 0 ]]; then WANTED[silent]=0; WANTED[glyphs]=0; fi if [[ "$c" == silent && "${WANTED[silent]}" == 1 ]]; then WANTED[gaming]=1; fi + if [[ "$c" == glyphs && "${WANTED[glyphs]}" == 1 ]]; then WANTED[gaming]=1; fi # The power-off fix is opt-out: ticked along with Steam Machine support. if [[ "$c" == machine ]]; then WANTED[poweroff]=${WANTED[machine]}; fi if [[ "$c" == poweroff && "${WANTED[poweroff]}" == 1 ]]; then WANTED[machine]=1; fi diff --git a/ui/qml/AppState.qml b/ui/qml/AppState.qml index 9a95b00..6148d9c 100644 --- a/ui/qml/AppState.qml +++ b/ui/qml/AppState.qml @@ -78,13 +78,14 @@ Item { w[id] = !w[id]; // The same rules as the terminal menu (toggle_component). var hasGaming = items.some(function (i) { return i.id === "gaming"; }); - if (id === "gaming" && !w.gaming) { w.single = false; w.silent = false; } + if (id === "gaming" && !w.gaming) { w.single = false; w.silent = false; w.glyphs = false; } if (id === "single" && w.single && hasGaming) w.gaming = true; if (id === "nvidia") w.bigpicture = w.nvidia; if (id === "bigpicture" && w.bigpicture) { w.nvidia = true; w.nvsilent = false; } if (id === "nvsilent" && w.nvsilent) { w.nvidia = true; w.bigpicture = false; } if (id === "nvidia" && !w.nvidia) w.nvsilent = false; if (id === "silent" && w.silent) w.gaming = true; + if (id === "glyphs" && w.glyphs) w.gaming = true; if (id === "machine") w.poweroff = w.machine; if (id === "poweroff" && w.poweroff) w.machine = true; if (id === "machine" && !w.machine) w.kpin = false;