ValveSoftware / ValveSoftware/SteamOS
Steam Game Mode incorrectly displays sleep animation when suspend is inhibited
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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