mirror of
https://github.com/lhns/steam-frame-nix.git
synced 2026-10-06 05:00:24 +02:00
UI patches: find Steam internals by signature, offline checker
Runtime patches no longer use webpack module ids or minified export names, which change with every Steam UI build: - modules/lib/finders.js: finder library (getWebpackRequire, findModule/findExport by source text and shape, resolveAll with a per-page cache, findFiberUp/findFiberDown/findInReactTree), installed once per page as window.__sfuiFind. - modules/lib/signatures.json: the signatures, per patch, shared by the patches and the checker. lib/default.nix mkPatch wraps a patch `(find, sigs, opts) => ...` with the library, its signatures and options; exposed as steamFrame.uiPatches.lib. - Keyboard patch (VERSION 10): layouts module, current/enabled layout getters, arrow keys, VR keyboard status and VirtualKeyboardManager are found by signature; if one doesn't match it reports which and leaves Steam untouched. unpatch.js uses references the patch remembered. The helper logs inject results when they change. - launcher-menu launch/pinned-desktop use the library's fiber helpers; launch no longer depends on the bar popup's window name. - scripts/check-signatures.mjs (+ webpack-modules.mjs): extracts module factories from the installed bundles without a browser and checks every signature (found / ambiguous / missing, with module ids and export names). README: "Finders and signatures", "After a Steam update".
This commit is contained in:
1 parent
dd6f3602aa
commit
6a8924f219
14 files changed
+1022
-78
No files matched your search
@@ -11,8 +11,17 @@
|
||||
# performs those requests with xdotool on :0 (X focus follows the window
|
||||
# selected in VR) and reverts the patch when stopped (unpatch.js). Its
|
||||
# allowlist can't type ASCII text or press Enter.
|
||||
# Depends on Steam UI internals; tested with Steam client 1790377368.
|
||||
{ config, pkgs, lib, ... }: {
|
||||
# Depends on Steam UI internals, found by signature (lib/finders.js, entry
|
||||
# "steam-keyboard-patch" in lib/signatures.json) rather than webpack module
|
||||
# ids; after a Steam update, scripts/check-signatures.mjs tells whether they
|
||||
# still match. Tested with Steam client 1790377368 (UI build 11041156).
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
patch = (import ./lib { inherit pkgs; }).mkPatch {
|
||||
name = "steam-keyboard-patch";
|
||||
src = ./steam-keyboard-patch/patch.js;
|
||||
};
|
||||
in {
|
||||
imports = [ ./session.nix ];
|
||||
|
||||
options.steamFrame.steamKeyboardPatch.enable = lib.mkEnableOption ''
|
||||
@@ -31,7 +40,7 @@
|
||||
ExecStart = lib.escapeShellArgs [
|
||||
"${pkgs.nodejs}/bin/node"
|
||||
"${./steam-keyboard-patch/helper.mjs}"
|
||||
"${./steam-keyboard-patch/patch.js}"
|
||||
"${patch}"
|
||||
"${./steam-keyboard-patch/unpatch.js}"
|
||||
"${pkgs.xdotool}/bin/xdotool"
|
||||
];
|
||||
|
||||
Reference in new issue
Block a user