Dashboard patches: persist frame-controls placements and "Steam hidden" on disk

SteamOS's steamvr.service runs `rm -rf ~/.cache/SteamVR` on every SteamVR
start, which deletes vrwebhelper's browser profile and with it the
localStorage frame-controls kept its placements in, so they were lost on
every SteamVR restart and reboot.

steam-ui-patches: per-patch persistent state (`state = true`). The injector
keeps ~/.local/state/steam-frame-nix/ui-patches/<name>.json, seeds
window.__sfuiStore in a fresh page before the patch runs and writes the file
(atomically, on change, name-checked, max 64 KiB) when the page calls the
CDP binding __sfuiStoreSave.

frame-controls v5: placements saved there (v4 localStorage copy migrated
once, then removed). steam-close-button v8: "Steam hidden" saved there; a
restored hidden state hides Steam once if SteamVR already shows it when the
patch attaches (or first shows it before the patch sees Steam's frame).

README: "Changes outside Nix" lists the directory; install.sh uninstall
removes it.
This commit is contained in:
Pierre Kisters committed 2026-09-28 23:33:12 +02:00
1 parent 48d10cc483
commit 7fe68e055c
10 files changed
+215 -34

No files matched your search

+7 -2
View File
@@ -59,8 +59,9 @@ Commands:
uninstall [--yes] [--keep-nix]
Stop Home Manager's user services, uninstall Home Manager, uninstall
Nix (unless --keep-nix) and remove per-user Nix leftovers. Your
configuration directory is never deleted.
Nix (unless --keep-nix) and remove per-user Nix leftovers and the
dashboard patches' saved state (~/.local/state/steam-frame-nix/ui-patches).
Your configuration directory is never deleted.
status
Show Nix, Home Manager and user service state.
@@ -470,6 +471,10 @@ remove_leftovers() { # keep_nix
fi
fi
remove_path "$state/home-manager"
# Saved state of the dashboard UI patches (steam-ui-patches, state = true).
# Only this subdirectory: the directory's other files have their own rules.
remove_path "$state/steam-frame-nix/ui-patches"
rmdir "$state/steam-frame-nix" 2>/dev/null || true
if [[ -L $HM_CONFIG_LINK ]]; then
info "$HM_CONFIG_LINK pointed to $(readlink "$HM_CONFIG_LINK")"
remove_path "$HM_CONFIG_LINK"