mirror of
https://github.com/lhns/steam-frame-nix.git
synced 2026-10-06 04:04:16 +02:00
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".
105 lines
3.9 KiB
JSON
105 lines
3.9 KiB
JSON
{
|
|
"bundles": {
|
|
"steamui": {
|
|
"description": "Steam client UI (SharedJSContext and its popups, e.g. the VR keyboard and dashboard bar)",
|
|
"chunkGlobal": "webpackChunksteamui",
|
|
"dir": "~/.local/share/Steam/steamui",
|
|
"html": "index.html",
|
|
"exclude": "^localization/"
|
|
},
|
|
"vrwebui-systemui": {
|
|
"description": "SteamVR dashboard (vrwebhelper page systemui)",
|
|
"chunkGlobal": "webpackChunkvrwebui",
|
|
"dir": "/opt/steamvr/resources/webinterface/dashboard",
|
|
"html": "systemui.html"
|
|
}
|
|
},
|
|
"patches": {
|
|
"steam-keyboard-patch": {
|
|
"bundle": "steamui",
|
|
"modules": {
|
|
"layouts": {
|
|
"module": { "includes": ["name:\"qwerty\"", "rgLayout:", "GetKeyboardLayoutSettings"] },
|
|
"exports": {
|
|
"currentLayout": {
|
|
"type": "function", "length": 0,
|
|
"includes": ["GetKeyboardLayoutSettings", "currentLayout"],
|
|
"excludes": ["selectedLayouts", "SetKeyboardLayout"]
|
|
},
|
|
"enabledLayouts": {
|
|
"type": "function", "length": 0,
|
|
"includes": ["GetKeyboardLayoutSettings", "selectedLayouts"],
|
|
"excludes": ["useState", "SetKeyboardLayout", "SetValidKeyboardLayouts"]
|
|
},
|
|
"arrowLeft": { "type": "object", "props": { "key": "ArrowLeft" } },
|
|
"arrowUp": { "type": "object", "props": { "key": "ArrowUp" } },
|
|
"arrowDown": { "type": "object", "props": { "key": "ArrowDown" } },
|
|
"arrowRight": { "type": "object", "props": { "key": "ArrowRight" } }
|
|
},
|
|
"expects": ["Half", "rgLayout:", "leftActionButton"]
|
|
},
|
|
"vrStatus": {
|
|
"module": { "includes": ["get VRKeyboardStatus()"] },
|
|
"exports": {
|
|
"holder": { "type": "object", "getters": ["VRKeyboardStatus"] }
|
|
},
|
|
"expects": ["bIsOpen:", "sOverlayKey", "unAppID"]
|
|
},
|
|
"keyboardManager": {
|
|
"module": { "includes": ["SendClientPasteCommand(){", "HandleVirtualKeyDown(", "GetEnterKeyLabel("] },
|
|
"exports": {
|
|
"VirtualKeyboardManager": {
|
|
"type": "class",
|
|
"protoMethods": ["HandleVirtualKeyDown", "GetEnterKeyLabel", "SendClientPasteCommand"]
|
|
}
|
|
},
|
|
"expects": ["m_ActiveElementProps", "m_bDismissOnEnter", "m_Instance", "GetVROverlayKey()",
|
|
"MainRunningAppID", "ControllerKeyboardSendText"]
|
|
},
|
|
"keyboardComponent": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["TypeKeyInternal(", "toggleStates", "standardLayout"] },
|
|
"expects": ["\"data-key\"", "\"data-key-row\"", "HandleVirtualKeyDown"]
|
|
},
|
|
"popupManager": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["g_PopupManager", "GetPopups()"] }
|
|
}
|
|
}
|
|
},
|
|
"launcher-menu-order": {
|
|
"bundle": "steamui",
|
|
"modules": {
|
|
"programList": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["ScanForInstalledNonSteamApps("] }
|
|
}
|
|
}
|
|
},
|
|
"launcher-menu-launch": {
|
|
"bundle": "steamui",
|
|
"modules": {
|
|
"dashboardBar": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["allowLaunchProgram", "refBarPopopHandle", "#VRDashboard_LaunchNonSteamApp"] },
|
|
"expects": ["LaunchNonSteamApp(", "\"VRDashboardBarSmallButton\"", "BPopupOpen()", "closePopup()"]
|
|
}
|
|
}
|
|
},
|
|
"launcher-menu-pinned-desktop": {
|
|
"bundle": "steamui",
|
|
"modules": {
|
|
"dashboardBar": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["allowLaunchProgram", "refBarPopopHandle", "#VRDashboard_LaunchNonSteamApp"] },
|
|
"expects": ["header:", "strExePath", "rctContents"]
|
|
},
|
|
"popupNames": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["\"valve.steam.gamepadui.barpopup\""] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|