diff --git a/tools/linuxfs/overlay/usr/local/bin/bannerlator-session b/tools/linuxfs/overlay/usr/local/bin/bannerlator-session index 318e7a0ed..65e6e414e 100755 --- a/tools/linuxfs/overlay/usr/local/bin/bannerlator-session +++ b/tools/linuxfs/overlay/usr/local/bin/bannerlator-session @@ -312,18 +312,35 @@ case $mode in # in yet - so the install dialog only appeared after the user restarted the client by hand. # With no remembered sign-in, ask again once the sign-in has happened: the client binary # started a second time with a URL hands it to the running instance and exits. + # + # The request is also dropped while the client is still in its post-logon compat phase (it + # probes every registered tool then): with publicbeta 1790380355 that phase took 27 s and a + # request sent 15 s after sign-in vanished (2026-09-26, no dialog; 1790121765 was done in + # time). So wait for the client to say the phase is over ("Waiting for compat in post-logon + # took" in its console log; at most 90 s if it never does), then ask - and ask again, twice + # at most, if no install has started a minute later. if ! grep -q '"RememberPassword"[[:space:]]*"1"' "$steam_root/config/loginusers.vdf" 2>/dev/null; then ( + _bl_acf="$steam_root/steamapps/appmanifest_4427310.acf" _bl_conn="$steam_root/logs/connection_log.txt" + _bl_cons="$steam_root/logs/console_log.txt" _bl_from=$(stat -c %s "$_bl_conn" 2>/dev/null || echo 0) + _bl_cfrom=$(stat -c %s "$_bl_cons" 2>/dev/null || echo 0) for _ in $(seq 1 180); do sleep 10 - [ -f "$steam_root/steamapps/appmanifest_4427310.acf" ] && exit 0 + [ -f "$_bl_acf" ] && exit 0 if tail -c +$((_bl_from + 1)) "$_bl_conn" 2>/dev/null | grep -q "RecvMsgClientLogOnResponse() : processing complete"; then - sleep 15 - [ -f "$steam_root/steamapps/appmanifest_4427310.acf" ] && exit 0 - step "signed in: asking the client again for the ARM64 Proton" - "$steam_root/steamrtarm64/steam" steam://install/4427310 >/dev/null 2>&1 || true + for _ in $(seq 1 45); do + tail -c +$((_bl_cfrom + 1)) "$_bl_cons" 2>/dev/null | grep -q "Waiting for compat in post-logon took" && break + sleep 2 + done + for _bl_try in 1 2 3; do + sleep 10 + [ -f "$_bl_acf" ] && exit 0 + step "signed in: asking the client again for the ARM64 Proton (try $_bl_try of 3)" + "$steam_root/steamrtarm64/steam" steam://install/4427310 >/dev/null 2>&1 || true + sleep 50 + done exit 0 fi done