From 773f4a6e6d5ddd8d20fd2db192ae764630628b8a Mon Sep 17 00:00:00 2001 From: The412Banner Date: Wed, 23 Sep 2026 00:30:47 -0400 Subject: [PATCH] Deck mode: the four helpers the client really calls, at the path it calls them On device the client's console log showed the calls: /usr/bin/steamos-polkit-helpers/steamos-update, steamos-select-branch, jupiter-biosupdate and jupiter-dock-updater - the polkit-helpers path, not /usr/bin. The missing steamos-update there was the 'Update Error' dialog. Stubs at both paths now. Also seen on device: -steamdeck alone opts the install into the steamdeck_stable branch too, so the branch guard is what keeps a session from reinstalling; and on the publicbeta channel Deck mode reports installed version 0 at every start and reinstalls the same client (rc=42, the launch URL lost with it), while on steamdeck_publicbeta the second launch comes up with no restart at all. --- .../com/steamdeck/launcher/session/SessionFiles.kt | 6 ++++++ .../usr/bin/steamos-polkit-helpers/jupiter-biosupdate | 3 +++ .../bin/steamos-polkit-helpers/jupiter-dock-updater | 4 ++++ .../bin/steamos-polkit-helpers/steamos-select-branch | 11 +++++++++++ .../usr/bin/steamos-polkit-helpers/steamos-update | 9 +++++++++ 5 files changed, 33 insertions(+) create mode 100755 tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-biosupdate create mode 100755 tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-dock-updater create mode 100755 tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-select-branch create mode 100755 tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-update diff --git a/app/src/main/java/com/steamdeck/launcher/session/SessionFiles.kt b/app/src/main/java/com/steamdeck/launcher/session/SessionFiles.kt index a4d16ec90..f619c9d6d 100644 --- a/app/src/main/java/com/steamdeck/launcher/session/SessionFiles.kt +++ b/app/src/main/java/com/steamdeck/launcher/session/SessionFiles.kt @@ -44,6 +44,12 @@ object SessionFiles { "usr/bin/jupiter-biosupdate" to "usr/bin/jupiter-biosupdate", "usr/bin/steamos-polkit-helpers/steamos-priv-write" to "usr/bin/steamos-polkit-helpers/steamos-priv-write", "usr/bin/steamos-polkit-helpers/steamos-set-timezone" to "usr/bin/steamos-polkit-helpers/steamos-set-timezone", + // On device the client called these four by their polkit-helpers path, not /usr/bin: the + // "Update Error" dialog was steamos-update missing there. + "usr/bin/steamos-polkit-helpers/steamos-update" to "usr/bin/steamos-polkit-helpers/steamos-update", + "usr/bin/steamos-polkit-helpers/steamos-select-branch" to "usr/bin/steamos-polkit-helpers/steamos-select-branch", + "usr/bin/steamos-polkit-helpers/jupiter-biosupdate" to "usr/bin/steamos-polkit-helpers/jupiter-biosupdate", + "usr/bin/steamos-polkit-helpers/jupiter-dock-updater" to "usr/bin/steamos-polkit-helpers/jupiter-dock-updater", ) // The desktop's launcher and labwc defaults, only where the desktop package is installed: // staging them into a runtime without it would make the desktop look present when it is not. diff --git a/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-biosupdate b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-biosupdate new file mode 100755 index 000000000..7feebb74a --- /dev/null +++ b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-biosupdate @@ -0,0 +1,3 @@ +#!/bin/sh +# No Deck BIOS here. The client calls this in Deck mode; a clean exit is "nothing to do". +exit 0 diff --git a/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-dock-updater b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-dock-updater new file mode 100755 index 000000000..1a2ccf72f --- /dev/null +++ b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/jupiter-dock-updater @@ -0,0 +1,4 @@ +#!/bin/sh +# No Deck dock here. The client calls this from the polkit-helpers directory in Deck mode; a +# clean exit is "nothing to update". +exit 0 diff --git a/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-select-branch b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-select-branch new file mode 100755 index 000000000..6f0c9d806 --- /dev/null +++ b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-select-branch @@ -0,0 +1,11 @@ +#!/bin/sh +# The SteamOS update-branch selector the client calls in Deck mode. The session forces the client +# branch on the command line and keeps package/beta in step with it, so a selection here would +# only start the restart loop the session script describes. List and report the stable branch; +# accept and ignore a choice. +case "${1:-}" in + -l) printf 'rel\n' ;; + -c) printf 'rel\n' ;; + *) : ;; +esac +exit 0 diff --git a/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-update b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-update new file mode 100755 index 000000000..fa99b087a --- /dev/null +++ b/tools/linuxfs/overlay/usr/bin/steamos-polkit-helpers/steamos-update @@ -0,0 +1,9 @@ +#!/bin/sh +# What the Steam client calls in Deck mode (from /usr/bin/steamos-polkit-helpers/, seen in its +# console log on device; a copy sits in /usr/bin as well) to look for a SteamOS update. There is no SteamOS +# here: the answer is "no update", which is exit 7 in SteamOS's convention, and the client moves +# on. --supports-duplicate-detection is a capability probe and answers yes. Staged from the apk. +case "${1:-}" in + --supports-duplicate-detection) exit 0 ;; +esac +exit 7