From 5a3d0b9d05050a89a79cd4adaf3a112d91496b30 Mon Sep 17 00:00:00 2001 From: Pierre Kisters <1524059+lhns@users.noreply.github.com> Date: Tue, 29 Sep 2026 00:47:16 +0200 Subject: [PATCH] README: full user documentation again, docs/ only technical The README is the complete user documentation again: features, install, two sessions, usage, the full options table (and renamed options), every feature with problem, usage, limitations, security and "remove when", UI patches at user level (DevTools on the LAN, after a Steam update), changes outside Nix, rollback and uninstall. docs/ keeps only the technical side (how the patches work, writing patches, signatures and the update procedure, the SteamVR debugger mechanics, cleanup and installer internals), linked from each feature. docs/options.md, two-sessions.md and desktop-integration.md are gone (their content is in the README). --- README.md | 974 +++++++++++++++++++++++++++++++---- docs/changes-outside-nix.md | 127 ++--- docs/dashboard.md | 202 +++----- docs/desktop-integration.md | 54 -- docs/firefox.md | 40 +- docs/jellyfin.md | 71 +-- docs/keyboard.md | 157 ++---- docs/launcher-menu.md | 86 +--- docs/options.md | 168 ------ docs/steamvr-debugger.md | 42 +- docs/two-sessions.md | 33 -- docs/ui-patches.md | 26 +- modules/steamvr-debugger.nix | 2 +- 13 files changed, 1126 insertions(+), 856 deletions(-) delete mode 100644 docs/desktop-integration.md delete mode 100644 docs/options.md delete mode 100644 docs/two-sessions.md diff --git a/README.md b/README.md index 378ac94..e77f99d 100644 --- a/README.md +++ b/README.md @@ -2,72 +2,103 @@ [Home Manager](https://github.com/nix-community/home-manager) modules for the Valve Steam Frame (SteamOS, `aarch64-linux`, standalone home-manager). They -work around quirks of the Frame's [two graphical sessions](docs/two-sessions.md), -enable hardware video decoding in Jellyfin, and extend Steam's and SteamVR's -UIs at runtime. +work around quirks of the Frame's [two graphical sessions](#two-sessions) +(portal, keyboard layout, clipboard, Firefox), enable hardware video decoding +in Jellyfin, and extend Steam's and SteamVR's UIs at runtime (VR keyboard, +"+" menu, dashboard windows, Steam close button, window curvature, window +controls). Everything is declarative: files are links into the Nix store, UI patches -live in memory. The few things written elsewhere are -[listed](docs/changes-outside-nix.md) and removed by `steam-frame-nix-cleanup`. +live in memory. The few things that have to be written elsewhere at runtime +are listed under [Changes outside Nix](#changes-outside-nix-exceptions), with +their lifetime and what removes them; `steam-frame-nix-cleanup` removes every +one of them (on each switch what the configuration no longer uses, `--all` +for everything). + +All options live under `steamFrame.*`. The portal fix and clipboard sync are +on by default; everything else is opt-in. + +- [Features](#features) · [Install](#install) · [Two sessions](#two-sessions) · + [Usage](#usage) · [Options](#options) +- [Fixes in detail](#fixes-in-detail): + [session](#session-settings-and-background-services-sessionnix), + [portal](#portal-sessionportalfix), + [keyboard layout](#keyboard-layout-keyboardlayout-keyboardvariant), + [VR keyboard extra keys](#steam-keyboard-patch-keyboardvrextrakeysenable), + [swipe and suggestions](#vr-keyboard-swipe-and-suggestions-keyboardvr), + [launcher menu](#launcher-menu-launchermenu), + [hidden apps](#hidden-apps-launchermenuhiddenapps), + [icon fallbacks](#icon-fallbacks-launchermenuiconfallbacks), + [dashboard windows](#dashboard-windows-dashboardwindows), + [Steam close button](#steam-close-button-dashboardsteamclosebuttonenable), + [window curvature](#window-curvature-dashboardwindowcurvature), + [window control bar](#window-control-bar-dashboardframecontrols), + [SteamVR debugger](#steamvr-debugger-steamvrdebuggerenable), + [clipboard sync](#clipboard-sync-clipboardsyncenable), + [Firefox](#firefox-firefox), + [Jellyfin hardware decoding](#jellyfin-hardware-decoding-jellyfinhardwaredecoding) +- [UI patches](#ui-patches-uipatchespatches): + [DevTools on the LAN](#devtools-on-the-lan), + [after a Steam update](#after-a-steam-update) +- [Changes outside Nix](#changes-outside-nix-exceptions) · + [Rollback](#rollback) · [Uninstall](#uninstall) + +Technical documentation (how the patches work, writing your own, fixing them +after a Steam update): [`docs/`](docs). ## Features -All options live under `steamFrame.*`; the portal fix and clipboard sync are -on by default, everything else is opt-in. Full reference: -[docs/options.md](docs/options.md). - Session and desktop: -- [Portal fix](docs/desktop-integration.md#portal) (`session.portalFix`): - apps in the Steam session can open links. -- [Clipboard sync](docs/desktop-integration.md#clipboard-sync) - (`clipboardSync`): one clipboard for the Steam session and the nested - desktop. -- [Session settings](docs/desktop-integration.md#session-settings-and-services) +- [Portal fix](#portal-sessionportalfix) (`session.portalFix`, on): apps in + the Steam session can open links. +- [Clipboard sync](#clipboard-sync-clipboardsyncenable) (`clipboardSync`, + on): one clipboard for the Steam session and the nested desktop. +- [Session settings](#session-settings-and-background-services-sessionnix) (`session.*`): outer bus and user services, for launchers and the other modules. Keyboard: -- [Keyboard layout](docs/keyboard.md#layout) (`keyboard.layout`, - `keyboard.variant`): XKB layout for the Steam session. -- [Extra keys](docs/keyboard.md#extra-keys) (`keyboard.vr.extraKeys`): - Esc/Ctrl/Alt, arrows, Delete, real chords and AltGr/non-ASCII characters - on the VR keyboard. -- [Swipe and suggestions](docs/keyboard.md#swipe-and-suggestions) +- [Keyboard layout](#keyboard-layout-keyboardlayout-keyboardvariant) + (`keyboard.layout`, `keyboard.variant`): XKB layout for the Steam session. +- [Extra keys](#steam-keyboard-patch-keyboardvrextrakeysenable) + (`keyboard.vr.extraKeys`): Esc/Ctrl/Alt, arrows, Delete, real chords and + AltGr/non-ASCII characters on the VR keyboard. +- [Swipe and suggestions](#vr-keyboard-swipe-and-suggestions-keyboardvr) (`keyboard.vr`): swipe typing, corrections, completions, Backspace drag. VR "+" menu: -- [Launcher menu](docs/launcher-menu.md#menu-patches) (`launcherMenu.*`): - sorted, Desktop pinned, closes on launch, no double launches, grid of - tiles, all programs without Developer Mode. -- [Hidden apps](docs/launcher-menu.md#hidden-apps) +- [Launcher menu](#launcher-menu-launchermenu) (`launcherMenu.*`): sorted, + Desktop pinned, closes on launch, no double launches, grid of tiles, all + programs without Developer Mode. +- [Hidden apps](#hidden-apps-launchermenuhiddenapps) (`launcherMenu.hiddenApps`) and - [icon fallbacks](docs/launcher-menu.md#icon-fallbacks) + [icon fallbacks](#icon-fallbacks-launchermenuiconfallbacks) (`launcherMenu.iconFallbacks`, on) for Konsole and KDE System Settings. -SteamVR dashboard ([needs the SteamVR debugger](docs/steamvr-debugger.md), -turned on automatically): +SteamVR dashboard (turns on the +[SteamVR debugger](#steamvr-debugger-steamvrdebuggerenable) automatically): -- [Dashboard windows](docs/dashboard.md#dashboard-windows) +- [Dashboard windows](#dashboard-windows-dashboardwindows) (`dashboard.windows`): larger max scale and push-back distance. -- [Steam close button](docs/dashboard.md#steam-close-button) +- [Steam close button](#steam-close-button-dashboardsteamclosebuttonenable) (`dashboard.steamCloseButton`): an X that hides the Steam window. -- [Window curvature](docs/dashboard.md#window-curvature) +- [Window curvature](#window-curvature-dashboardwindowcurvature) (`dashboard.windowCurvature`): adjustable curvature per window. -- [Window control bar](docs/dashboard.md#window-control-bar) +- [Window control bar](#window-control-bar-dashboardframecontrols) (`dashboard.frameControls`): move controls between bar and three-dot menu. Apps: -- [Firefox](docs/firefox.md) (`firefox`): launcher for the Flatpak with a VR +- [Firefox](#firefox-firefox) (`firefox`): launcher for the Flatpak with a VR fullscreen fix, optional AV1 off, a separate desktop profile. -- [Jellyfin](docs/jellyfin.md) (`jellyfin.hardwareDecoding`): hardware video - decoding in the Jellyfin Desktop Flatpak. +- [Jellyfin](#jellyfin-hardware-decoding-jellyfinhardwaredecoding) + (`jellyfin.hardwareDecoding`): hardware video decoding in the Jellyfin + Desktop Flatpak. -Writing your own patches of Steam's UI: [docs/ui-patches.md](docs/ui-patches.md) -(also: checking signatures after a Steam update). +Your own patches of Steam's UI: [UI patches](#ui-patches-uipatchespatches). ## Install @@ -82,92 +113,849 @@ The short link redirects to [`install.sh`](https://raw.githubusercontent.com/lhns/steam-frame-nix/main/install.sh) on `main`. `sudo` needs a password: run `passwd` first if you never set one. -It installs Nix (unless it already works), creates `~/nix-config` from the -[template](template) (or uses `~/.config/home-manager`, or -`--flake `) and runs `home-manager switch`; conflicting -dotfiles are renamed to `*.hm-backup-