steam-close-button: keep Steam hidden after X until shown explicitly

Closing Steam with X now marks it hidden (state steamHidden). Before,
bar-only ended as soon as any window became active, so closing a docked
window afterwards let stock SteamVR fall back to Steam.

While hidden, the stock fallbacks go to the most recently active other
docked window with a tab, else bar-only:
- autoSwitchOverlayIfNeeded with no active frame;
- the dashboard mailbox's dashboard_overlay_destroyed handler (stock:
  switchToHomeOverlay -> Steam);
- show/switch requests for Steam with reason "theater frame destroyed"
  (key removed) or "SetDockLocation" (echo of X docking Steam: dropped).
Steam becoming the active frame (tab click, Steam menu pick,
SwitchToDashboardOverlay) ends hidden.

The hidden state replaces the rule that swallowed the first
ShowOverlay(main) from Steam after each dashboard open in bar-only (Steam
doesn't send one there; its only effect was eating a real Steam menu
pick). Version 7; state of versions 5/6 is taken over (bar-only implies
hidden), their fields are left for a rollback. Signatures: mailbox and
dashboard handler anchors, the ShowOverlay ones dropped.
This commit is contained in:
Pierre Kisters committed 2026-09-28 02:46:31 +02:00
1 parent 817190facd
commit 36fcb207bd
5 files changed
+170 -159

No files matched your search

+3 -4
View File
@@ -9,10 +9,9 @@ in {
imports = [ ./steam-ui-patches.nix ./steamvr-debugger.nix ];
options.steamFrame.dashboard.steamCloseButton.enable = lib.mkEnableOption ''
a Close (X) button on the dashboard's Steam window: docks it back if it
was in the world, then switches to the last active other window, or
leaves only the dashboard bar (until a window is activated, e.g. via the
Steam tab). Dashboard patch; off removes it (next switch)'';
a Close (X) button on the dashboard's Steam window. It hides Steam
(previous window or just the bar) until shown explicitly, e.g. via the
Steam tab. Dashboard patch; off removes it (next switch)'';
config = lib.mkIf cfg.enable {
steamFrame.uiPatches.patches = [ {