From 9cd22f047d59fe833633b90ba7ffdec45da6b6ad Mon Sep 17 00:00:00 2001 From: Pierre Kisters <1524059+lhns@users.noreply.github.com> Date: Thu, 1 Oct 2026 04:07:07 +0200 Subject: [PATCH] Launchers, VR "+" menu: module header comments point to the docs The patch list, keyring summary, triggers and icon fallback history are in docs/launchers.md, docs/launcher-menu.md and next to the code they describe. --- modules/launcher-menu.nix | 32 +++++++++----------------------- modules/launchers.nix | 23 ++++++++--------------- 2 files changed, 17 insertions(+), 38 deletions(-) diff --git a/modules/launcher-menu.nix b/modules/launcher-menu.nix index 3d5c5dd..0b82ae1 100644 --- a/modules/launcher-menu.nix +++ b/modules/launcher-menu.nix @@ -1,24 +1,8 @@ -# The VR dashboard's "+" menu (non-Steam programs). Steam lists them in GLib -# hash-table order (random-looking). Steam UI patches in SharedJSContext, each -# registered only when its option is set, reverted when unset (next switch): -# - order/: sorts ScanForInstalledNonSteamApps() by name; -# - pinned-desktop/: hides Desktop in the list, pins a proxy above/below it; -# - launch/: wraps LaunchNonSteamApp (menu-only) to close the menu and/or -# debounce repeated launches; -# - grid/: programs as a grid of tiles, optionally maxRows visible; -# - show-all/: empties the list Steam hides without Developer Mode. -# Tested with Steam client 1790377368. -# -# iconFallbacks (not a patch): Steam resolves Icon= names only in hicolor (and -# pixmaps), so Breeze-only icons (Konsole, KDE System Settings) are missing. -# Home Manager links a fixed list of them from nixpkgs' Breeze into -# ~/.local/share/icons/hicolor/scalable/apps (a missing name fails the -# build); on switch, icon-fallbacks.sh --suggest only prints hints (names to -# add, names no longer needed), and hicolor's mtime is bumped when the list -# changed so a running Steam rescans. Until 2026-09 a script made the links -# on switch (removed by steam-frame-nix-cleanup, or before checkLinkTargets -# where Home Manager takes over). iconFallbacks was a list of names until -# 2026-09; a list fails with a pointer to enable/extra (until ~2026-12). +# The VR dashboard's "+" menu (launcherMenu.*, docs/launcher-menu.md): Steam +# UI patches in SharedJSContext (launcher-menu//), each registered +# only while its option is set (its unpatch runs on the next switch), and the +# icon fallbacks: Breeze icons linked into hicolor, hints from +# launcher-menu/icon-fallbacks.sh. Tested with Steam client 1790377368. { config, lib, pkgs, ... }: let cfg = config.steamFrame.launcherMenu; @@ -128,7 +112,8 @@ in { Hicolor links for program icons only Breeze has, so the "+" menu shows them (Steam looks only in hicolor). ''; - # Formerly a list of names: fail with a message instead (see assertion). + # A list of names until 2026-09: fails with a pointer to enable/extra + # (see the assertion; until ~2026-12). type = lib.types.coercedTo (lib.types.listOf lib.types.str) (names: { legacyList = names; }) (lib.types.submodule { @@ -181,7 +166,8 @@ in { value.source = breezeIcon name; }) icons); - # The script's links of 2026-09 where Home Manager links now. + # Until 2026-09 a script made these links on switch: replaced by Home + # Manager's (steam-frame-nix-cleanup removes the rest). config.steamFrame.cleanup.migrateLinks = map (name: { path = "${iconDir}/scalable/apps/${name}.svg"; target = "/nix/store/*-breeze-icons-*/share/icons/breeze/apps/*"; diff --git a/modules/launchers.nix b/modules/launchers.nix index 50892cc..7792265 100644 --- a/modules/launchers.nix +++ b/modules/launchers.nix @@ -1,18 +1,11 @@ -# Launchers: an app's own desktop entry (from its Flatpak, Nix package or a -# host file), rewritten with extra environment, options, wrappers, MIME -# defaults and wallet access, under the same desktop ID in -# ~/.local/share/applications, so it replaces the original in the KDE menu -# and the "+" menu (which reads only that directory). -# - Flatpak/host file entries only exist at runtime: steam-frame-nix-launchers -# (launchers/generate.sh + rewrite.awk) writes them to -# /steam-frame-nix/applications (tmpfs), on switch, at -# login and when Flatpak installs/updates apps (path unit); the Home -# Manager links point there. -# - Package entries are rewritten at build time. -# - keyring: one kwalletd6 for both sessions (the outer bus), the wallet's -# D-Bus names for Flatpaks, --password-store=kwallet6 for Electron. -# Replaces the keyring module (steamFrame.keyring.*), whose options fail with -# the new form. +# Launchers (launchers., docs/launchers.md): the app's own desktop +# entry, rewritten (launchers/rewrite.awk), under the same desktop ID in +# ~/.local/share/applications. Package entries are rewritten at build time; +# Flatpak and host file entries only exist at runtime, so +# steam-frame-nix-launchers (launchers/generate.sh) writes them to +# /steam-frame-nix/applications (tmpfs), where the Home +# Manager links point. Replaces the keyring module (steamFrame.keyring.*), +# whose options fail with the new form. { config, lib, pkgs, ... }: let cfg = config.steamFrame.launchers;