ValveSoftware / ValveSoftware/SteamOS

Steam Game Mode incorrectly displays sleep animation when suspend is inhibited

Open
#2,619 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
2.6k
Forks
83
Avg merge
4m
Merged PRs (30d)
3

Description

Despite system suspend being inhibited, the Steam client still plays the sleep animation and blacks out the UI. Since the suspend request is ultimately blocked, the system remains awake but the display stays black, leaving Game Mode in an unusable state (the mouse cursor is still visible).

Background

I have created a service that allows applications (games, media players, etc.) to inhibit system suspend through the standard org.freedesktop.ScreenSaver interface while in Game Mode. This service has been submitted to Bazzite, is MIT licensed, and could also be adopted by SteamOS: https://github.com/ublue-os/bazzite/pull/5234, Bazzite Deck Sleep Inhibitor

Issue

In Game Mode, the Steam client is responsible for tracking user inactivity and initiating system suspend. However, when a sleep inhibitor is active, Steam still performs its sleep animation and blanks the display before the suspend request is rejected by the system.

As a result, the system never actually suspends, but the Game Mode UI is no longer usable because the display remains black.

Suggested fix

I suggest to fix this, the Steam client should reset and pause the inactivity timer while sleep is inhibited.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin with the Steam client's Game Mode inactivity handling and its interaction with the org.freedesktop.ScreenSaver inhibition interface; reproduce the inhibited-suspend path and observe when the sleep animation and display blanking occur. Done means the inactivity timer is reset or paused while inhibition is active and the UI remains usable when the suspend request is rejected.

Written by the indexing model from the issue text.

Assessment

Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.