Skip to content

[Feature Request] Execute steam://close/bigpicture on "Exit Big Picture Mode" to prevent Desktop Mode hangs #12577

@theserdzo

Description

@theserdzo

System information: Steam Deck Q4 OLED

#!
BIOS: F7G0112
Kernel: 6.11.11-valve26-neptune-611-gb3afa9aa9ae7
Mesa: 24.03.4.197725

Steam build ID: 20251027.1
SteamOS update branch: Stable
SteamOS version: 3.7.17 | 1766460156

Steam client beta: N/A
SteamOS beta: NO
Checked for updates: YES

Description of the issue in as much detail as possible:
Expected behavior:
When selecting “Exit Big Picture Mode” from Desktop Mode, Steam should cleanly close the UI and return to a fully usable desktop.

Actual behavior:
The desktop remains partially unusable until Steam is manually terminated.

After entering Big Picture Mode from Desktop Mode (via double tapping the Steam button in order to e.g. change controller settings) and then exiting BPM, the interface results in the UI hanging;
The Steam app window turns black and becomes unresponsive. Keyboard input and controller shortcuts stop working, and KDE displays a “Process ‘steam’ is not responding” dialog.

Steps for reprode this issue:

  • Boot into SteamOS and switch to Desktop Mode.
  • Launch Big Picture Mode from Desktop Mode (e.g., double-click the Steam button).
  • Select “Exit Big Picture Mode” or minimize the BPM window.
  • Result: Steam hangs, shows a black window, and frequently triggers the system “Not Responding” dialog.

#!
Attempted Workarounds / Proof of Concept:
I have developed two admittedly sloppy scripts to mitigate this, which confirm that a forced URI call or window resource kill solves the issue:

  1. A "Fix" Shell Script:

I tested xdotool windowkill to destroy the window resource directly, which successfully prevents the "Not Responding" dialog.

  1. A Background Listener:

A bash script on autostart using xprop to monitor the WM_STATE of the "Steam" window. When the window enters an Iconic (minimized) state, it automatically fires the close URI.

Listener Logic Used:

#!/bin/bash
# Path to fix script
FIX_SCRIPT="/home/deck/fix_steam.sh"
CLASS_NAME="Steam"

echo "Monitoring for Steam UI"

while true; do
    WID=$(xdotool search --class "$CLASS_NAME" | tail -n 1)
    if [ -n "$WID" ]; then
        STATE=$(xprop -id "$WID" WM_STATE 2>/dev/null | grep -o "window state: Iconic")

        if [ -n "$STATE" ]; then
            echo "Minimize/Exit detected. Running fix"
            steam steam://close/bigpicture
            
            while [ -n "$STATE" ]; do
                sleep 3
                STATE=$(xprop -id "$WID" WM_STATE 2>/dev/null | grep -o "window state: Iconic")
            done
        fi
    fi
done

<img width="1280" height="800" alt="Image" src="https://github.com/user-attachments/assets/e3d9cd99-86b7-43c8-9ef3-ecf144b88923" />
<img width="1280" height="800" alt="Image" src="https://github.com/user-attachments/assets/4ef9ad0e-3ab7-4dde-bb77-80e84a807718" />
<img width="1280" height="800" alt="Image" src="https://github.com/user-attachments/assets/cb97b4cb-61de-4335-9976-767d12dd6472" />

<img width="1280" height="800" alt="Image" src="https://github.com/user-attachments/assets/aefe7c7f-648a-4a95-b7dd-ab159eb89f72" />
<img width="1280" height="800" alt="Image" src="https://github.com/user-attachments/assets/a62d2845-c913-41a0-89bc-b7a9ad96807e" />
<img width="1280" height="800" alt="Image" src="https://github.com/user-attachments/assets/964c941e-a951-42b1-952c-f3325faa9a37" />

<img width="1280" height="800" alt="Image" src="https://github.com/user-attachments/assets/eaa7ce60-12c3-416e-8f0c-95ba081572e5" />

Proposed Solution:
Implement a cleaner termination hook for the GamepadUI (BPM) interface when accessed via Desktop Mode.

The "Exit Big Picture Mode" button should programmatically trigger:
steam steam://close/bigpicture

This single command cleanly closes the GamepadUI while keeping the Steam service running, avoiding the window manager timeout and UI hang - while automatically triggering Steam’s built-in failsafe to relaunch the main window.

Benefits:
Stability: Eliminates the "Not Responding" system pop-up for Desktop Mode users.
Performance: Ensures the steamwebhelper resources used for the GamepadUI are fully released.
Consistency: Aligns the Desktop Mode experience with the seamless transitions found in Gaming Mode.
##########################
P.S. I love the Deck and enjoy solving these edge-case interface hurdles
up for hire, if in need for a human engineer (:

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions