mirror of
https://github.com/lhns/steam-frame-nix.git
synced 2026-10-06 03:00:13 +02:00
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).
This commit is contained in:
1 parent
23b79e9499
commit
5a3d0b9d05
13 files changed
+1126
-856
No files matched your search
+26
-60
@@ -1,78 +1,44 @@
|
||||
# Launcher menu
|
||||
# Launcher menu: how it works
|
||||
|
||||
The VR dashboard's "+" menu (non-Steam programs). Options:
|
||||
[options.md#launcher-menu](options.md#launcher-menu).
|
||||
Technical details of the "+" menu features. What they do and how to
|
||||
configure them: README, [launcher menu](../README.md#launcher-menu-launchermenu),
|
||||
[hidden apps](../README.md#hidden-apps-launchermenuhiddenapps),
|
||||
[icon fallbacks](../README.md#icon-fallbacks-launchermenuiconfallbacks).
|
||||
|
||||
## Menu patches
|
||||
|
||||
`launcherMenu.*`.
|
||||
`launcherMenu.*` (module `launcher-menu`): [UI patches](ui-patches.md) in
|
||||
Steam's `SharedJSContext` (`modules/launcher-menu/`), each registered only
|
||||
when its option is set and reverted by its unpatch when unset (next switch):
|
||||
|
||||
**Problem:** the menu is in random order with "Desktop" somewhere in a
|
||||
scrolling list, and a click shows no feedback until the window appears, so
|
||||
programs often get started twice.
|
||||
- `order/`: sorts `ScanForInstalledNonSteamApps()` by name (Steam lists the
|
||||
programs in GLib hash-table order);
|
||||
- `pinned-desktop/`: hides Desktop in the list and pins a proxy above/below
|
||||
it;
|
||||
- `launch/`: wraps `LaunchNonSteamApp` (menu-only) to close the menu and/or
|
||||
debounce repeated launches;
|
||||
- `grid/`: restyles Steam's own items as tiles, which is why launching,
|
||||
sounds and controller navigation keep working;
|
||||
- `show-all/`: empties the list Steam hides without Developer Mode.
|
||||
|
||||
**What it does:**
|
||||
|
||||
- `sort`: programs sorted by name (case-insensitive), Desktop included.
|
||||
- `pinDesktop = "top"` / `"bottom"`: Desktop pinned above/below the list,
|
||||
always visible.
|
||||
- `closeOnLaunch`: the menu closes on click.
|
||||
- `launchDebounceSeconds = <seconds>`: a repeat launch of the same command
|
||||
within that time is ignored (and logged); a program that exits right away
|
||||
can only be restarted once the time is up.
|
||||
- `grid.enable`: the programs section becomes a grid of tiles (icon, name
|
||||
below); "Add desktop window" stays a list. Only restyles Steam's items, so
|
||||
launching, sounds and controller navigation keep working. The popup is
|
||||
300 px wide, so `grid.columns` sets the tile size (3 ≈ 92 px, 4 ≈ 68 px,
|
||||
5 ≈ 53 px); `grid.maxRows` limits visible rows, the rest scrolls.
|
||||
- `showAllApps`: without Developer Mode Steam hides `konsole`,
|
||||
`systemsettings`, `dolphin`, `plasma-discover`, `vlc`, `firewall-config`,
|
||||
`cmake-gui`, `qrenderdoc`, `lxterminal` and `sh`; this lifts that filter
|
||||
only, so Developer Mode (sshd, xrdp, LAN DevTools forwards) can stay off.
|
||||
Hide single programs with [`hiddenApps`](#hidden-apps).
|
||||
|
||||
**Steam Developer Mode** (a Steam setting, not managed here) also makes the
|
||||
menu list every desktop entry; `showAllApps` does the same without it.
|
||||
|
||||
**Limitation:** the pinned Desktop works with the laser but not with
|
||||
thumbstick / D-pad navigation.
|
||||
|
||||
**How it works:** [UI patches](ui-patches.md) in Steam's `SharedJSContext`.
|
||||
All revert when turned off (next switch). The anchors (APIs, React props,
|
||||
CSS) are verified by the offline checker. Tested with Steam client
|
||||
1790377368.
|
||||
Their anchors (APIs, React props, CSS) are in `modules/lib/signatures.json`
|
||||
and verified by the [offline checker](ui-patches.md#after-a-steam-update).
|
||||
|
||||
## Hidden apps
|
||||
|
||||
`launcherMenu.hiddenApps`: desktop entry ids (no `.desktop`).
|
||||
|
||||
**Problem:** with Developer Mode or `showAllApps`, the "+" menu lists every
|
||||
desktop entry, including system tools.
|
||||
|
||||
**Fix:** a user entry with `Hidden=true` in `~/.local/share/applications`
|
||||
masks the system one (also in the KDE menu). The "+" menu always hides
|
||||
`steam` and `vrurlhandler`; for Konsole in VR use
|
||||
[`showAllApps`](#menu-patches).
|
||||
`launcherMenu.hiddenApps` (module `hidden-apps`): a Home Manager-linked
|
||||
desktop entry with `Hidden=true` per id in `~/.local/share/applications`,
|
||||
which masks the system entry of the same id for Steam and KDE alike.
|
||||
|
||||
## Icon fallbacks
|
||||
|
||||
`launcherMenu.iconFallbacks.enable` (on by default), `iconFallbacks.extra`.
|
||||
|
||||
**Problem:** Steam resolves `Icon=` only in the hicolor theme (and
|
||||
`pixmaps`), so Konsole and KDE System Settings, whose icons only Breeze has,
|
||||
show without icon.
|
||||
|
||||
**Fix:** Home Manager links nixpkgs' Breeze SVGs of `utilities-terminal`
|
||||
and `preferences-system` (plus `extra`) into
|
||||
`~/.local/share/icons/hicolor/scalable/apps/`; a name Breeze doesn't have
|
||||
fails the build, `enable = false` provides none. When the set of links
|
||||
`launcherMenu.iconFallbacks.*`: Home Manager links nixpkgs' Breeze SVGs
|
||||
into `~/.local/share/icons/hicolor/scalable/apps/`. When the set of links
|
||||
changes, the switch bumps the mtime of `~/.local/share/icons/hicolor`, so a
|
||||
running Steam rescans (GTK only rereads a theme whose directory changed).
|
||||
Each switch also prints hints: icons of programs Steam can't find that
|
||||
Breeze has (add them to `extra`), and fallbacks hicolor has anyway.
|
||||
The switch's hints come from `icon-fallbacks.sh`.
|
||||
|
||||
**Migration:** until 2026-09 a script made these links on switch and listed
|
||||
them in `~/.local/state/steam-frame-nix/icon-fallbacks`; the first switch
|
||||
replaces them with Home Manager's and `steam-frame-nix-cleanup` removes the
|
||||
rest. `iconFallbacks` used to be a list; a list now fails with a hint (use
|
||||
`extra`, or `enable = false` for `[ ]`).
|
||||
rest.
|
||||
Reference in new issue
Block a user