mirror of
https://github.com/lhns/steam-frame-nix.git
synced 2026-10-06 04:04:16 +02:00
steamFrame.dashboard.windowCurvature: the "Toggle Curvature" row of a
window's More Options menu becomes a control (click: curved -> flat,
flat -> stock; drag up/down with the laser: curvature relative to
SteamVR's stock curve, snapping to 0 and 1). The patch moves each frame's
curvature-origin node to stock distance / value in outgoing scene graphs;
per-window values live in the systemui page. Lookups by signature
("window-curvature" in signatures.json, incl. check-only anchors).
Shared method hooks (lib/hooks.js, passed by mkPatch as 4th argument):
one SendMessage wrapper for dashboard-windows (now VERSION 3) and
window-curvature instead of a chain of per-patch wrappers; legacy
wrappers on top are unwound.
318 lines
13 KiB
JSON
318 lines
13 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/",
|
|
"styles": "css"
|
|
},
|
|
"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\""] }
|
|
}
|
|
}
|
|
},
|
|
"launcher-menu-grid": {
|
|
"bundle": "steamui",
|
|
"modules": {
|
|
"dashboardBar": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["allowLaunchProgram", "refBarPopopHandle", "#VRDashboard_LaunchNonSteamApp"] },
|
|
"expects": ["key:\"programs\"", "key:\"windows\"", "header:"]
|
|
},
|
|
"popupNames": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["\"valve.steam.gamepadui.barpopup\""] }
|
|
},
|
|
"scrollFade": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["ScrollFade", "ScrolledToTop", "ScrolledToBottom", "strClassNamesForScrollable"] },
|
|
"expects": ["scrollTop<=1", "clientHeight+1"]
|
|
},
|
|
"scrollFadeClasses": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["ScrollFade:\"", "ScrolledToTop:\"", "ScrolledToBottom:\""] }
|
|
},
|
|
"scrollFadeStyle": {
|
|
"checkOnly": true,
|
|
"stylesheet": { "includes": [
|
|
"mask-image:linear-gradient(to bottom, transparent 0%, black var(--scroll-fade-size), black calc(100% - var(--scroll-fade-size)), transparent 100%)",
|
|
"--scroll-fade-size:"
|
|
] }
|
|
},
|
|
"scrollShadowStyle": {
|
|
"checkOnly": true,
|
|
"stylesheet": { "includes": [
|
|
"z-index:9001;height:0;box-shadow:0 0 40px 40px #0e141b;transition:opacity .15s ease-out;pointer-events:none"
|
|
] }
|
|
}
|
|
}
|
|
},
|
|
"dashboard-windows": {
|
|
"bundle": "vrwebui-systemui",
|
|
"modules": {
|
|
"mailbox": {
|
|
"module": { "includes": ["\"mailbox_send \"", "WebSocketSend(", "\"vrcompositor_systemlayer\""] },
|
|
"exports": {
|
|
"Mailbox": { "type": "class", "protoMethods": ["SendMessage", "SendMessageAndWaitForResponse", "RegisterHandler"] }
|
|
}
|
|
},
|
|
"sceneGraph": {
|
|
"module": { "includes": ["\"update_scene_graph\"", "NextSGID()", "scene_graph:"] },
|
|
"exports": {
|
|
"resend": { "type": "function", "length": 0, "includes": ["NextSGID()", "setTimeout"] }
|
|
},
|
|
"expects": ["\"vrcompositor_systemlayer\"", ".SendMessage("]
|
|
},
|
|
"windowFrame": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["\"frame-resize-scale-max\"", "\"frame-resize-scale-min\""] }
|
|
},
|
|
"grabScale": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["\"grab-scale\"", "\"min-distance\"", "\"max-distance\""] }
|
|
}
|
|
}
|
|
},
|
|
"steam-close-button": {
|
|
"bundle": "vrwebui-systemui",
|
|
"modules": {
|
|
"mobx": {
|
|
"module": { "includes": ["runInAction:()=>", "makeObservable:()=>", "reaction:()=>"] }
|
|
},
|
|
"dock": {
|
|
"module": { "includes": ["e[e.Dashboard=1]=\"Dashboard\",e[e.LeftHand=2]=\"LeftHand\""] },
|
|
"exports": {
|
|
"EDockLocation": { "type": "object", "props": { "Dashboard": 1, "LeftHand": 2, "RightHand": 3, "World": 4, "Theater": 5 } }
|
|
}
|
|
},
|
|
"closing": {
|
|
"module": { "includes": ["this.componentName=\"closing\"", "closeMethodPriority"] },
|
|
"exports": {
|
|
"Closing": { "type": "class", "includes": ["componentName=\"closing\"", "RequestClose()"] }
|
|
},
|
|
"expects": ["defaultComponentProps=", "null!=this.componentProps.onCloseRequested", "get showCloseButton()",
|
|
"m_bShowSpinner=!0"]
|
|
},
|
|
"frameComponent": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["this.defaultComponentProps", "FramePageComponent '"] },
|
|
"expects": ["get componentProps()", ".componentProps)", "[this.componentName]"]
|
|
},
|
|
"frame": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["e[e.Alive=2]=\"Alive\""] },
|
|
"expects": ["this.m_eState=", "this.closing=", "this.docking=", "this.tab=", "get isActiveDashboardFrame()",
|
|
"this.props="]
|
|
},
|
|
"frameStore": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["window.FrameStore="] },
|
|
"expects": ["GetFrame(e){"]
|
|
},
|
|
"dashboardStore": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["window.DashboardStore="] },
|
|
"expects": ["_setActiveFrame(e,t){", "\"_setActiveFrame\"", "get mainSteamFrame()", "m_unMainSteamFrameID",
|
|
"get activeFrameID()", "get activeFrame()", "get visibilityState()", "get isFullyVisible()"]
|
|
},
|
|
"dashboard": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["window.Dashboard=this", "autoSwitchOverlayIfNeeded(){"] },
|
|
"expects": ["onShowOverlayRequestFromSteam(e){",
|
|
"SetImplementation(\"ShowOverlay\",(e=>{this.onShowOverlayRequestFromSteam(e)}))",
|
|
"this.autoSwitchOverlayIfNeeded()", "switchToFrameInternal(e,t,r){", "\"hideDashboard\"",
|
|
"visibleInDashboardBar"]
|
|
},
|
|
"docking": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["get dockLocation()", "SetDockLocation(e"], "excludes": ["get associatedSummonOverlayKeys()"] }
|
|
},
|
|
"overlayKeys": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["\"valve.steam.gamepadui.main\"", "\"valve.steam.gamepadui.appoverlay\""] }
|
|
}
|
|
}
|
|
},
|
|
"window-curvature": {
|
|
"bundle": "vrwebui-systemui",
|
|
"modules": {
|
|
"mobx": {
|
|
"module": { "includes": ["runInAction:()=>", "makeObservable:()=>", "reaction:()=>"] }
|
|
},
|
|
"dock": {
|
|
"module": { "includes": ["e[e.Dashboard=1]=\"Dashboard\",e[e.LeftHand=2]=\"LeftHand\""] },
|
|
"exports": {
|
|
"EDockLocation": { "type": "object", "props": { "Dashboard": 1, "LeftHand": 2, "RightHand": 3, "World": 4, "Theater": 5 } }
|
|
}
|
|
},
|
|
"mailbox": {
|
|
"module": { "includes": ["\"mailbox_send \"", "WebSocketSend(", "\"vrcompositor_systemlayer\""] },
|
|
"exports": {
|
|
"Mailbox": { "type": "class", "protoMethods": ["SendMessage", "SendMessageAndWaitForResponse", "RegisterHandler"] }
|
|
}
|
|
},
|
|
"sceneGraph": {
|
|
"module": { "includes": ["\"update_scene_graph\"", "NextSGID()", "scene_graph:"] },
|
|
"exports": {
|
|
"resend": { "type": "function", "length": 0, "includes": ["NextSGID()", "setTimeout"] }
|
|
},
|
|
"expects": ["\"vrcompositor_systemlayer\"", ".SendMessage("]
|
|
},
|
|
"curvature": {
|
|
"module": { "includes": ["this.componentName=\"curvature\"", "ToggleCurvature(){"] },
|
|
"exports": {
|
|
"Curvature": { "type": "class", "includes": ["componentName=\"curvature\"", "m_bCurveOverride"] }
|
|
},
|
|
"expects": ["get curvatureTransformOriginID(){return`frame:${this.frame.frameID}:curvature-origin`}",
|
|
"ToggleCurvature(){this.m_bCurveOverride=!this.shouldCurve}", "get shouldCurve()",
|
|
"get curvatureOriginDistance(){return this.shouldCurve?", ".curvatureDistance:1e3}", "translation:{z:"]
|
|
},
|
|
"actions": {
|
|
"module": { "includes": ["window.dashboardActionStore="] },
|
|
"exports": {
|
|
"store": { "type": "object", "methods": ["GetAction", "BIsVRLinkRemoteAction"] }
|
|
},
|
|
"expects": ["get partialParams()", "get protoForSteam()", "m_PartialParams"]
|
|
},
|
|
"frameControlsClasses": {
|
|
"module": { "includes": ["FrameControlsContainer:\"", "AdditionalOptionsRow:\"", "AdditionalOptionsLabel:\""] },
|
|
"exports": {
|
|
"row": { "type": "string", "regex": ["_AdditionalOptionsRow_"] },
|
|
"label": { "type": "string", "regex": ["_AdditionalOptionsLabel_"] }
|
|
}
|
|
},
|
|
"frameControls": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["legacy-frame-controls-additional-options-", "controlAdditionalOptionsItems.filter("] },
|
|
"expects": ["id:`legacy-frame-controls-additional-options-${", "isControlAdditionalOptionsOpen",
|
|
".AdditionalOptionsRow,", ".AdditionalOptionsLabel},", "display_name", "invocation", "onClick:()=>{", "onMouseDown:"]
|
|
},
|
|
"curvatureAction": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["\"#ToggleCurvatureTooltip\""] },
|
|
"expects": ["icon:{enum:40},icon_active:{enum:39},invocation:2", ".curvature.ToggleCurvature()"]
|
|
},
|
|
"frame": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["e[e.Alive=2]=\"Alive\""] },
|
|
"expects": ["this.curvature=", "this.docking=", "get isControlAdditionalOptionsOpen()",
|
|
"get controlAdditionalOptionsItems()", "get associatedSummonOverlayKeys()"]
|
|
},
|
|
"docking": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["get dockLocation()", "SetDockLocation(e"], "excludes": ["get associatedSummonOverlayKeys()"] },
|
|
"expects": ["get visualDockLocation()"]
|
|
},
|
|
"frameStore": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["window.FrameStore="] },
|
|
"expects": ["GetFrame(e){", "get frames()"]
|
|
},
|
|
"dashboardStore": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["window.DashboardStore="] },
|
|
"expects": ["get curvatureDistance()"]
|
|
},
|
|
"panel": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["properties[\"curvature-origin-id\"]"] }
|
|
},
|
|
"sceneGraphNodes": {
|
|
"checkOnly": true,
|
|
"module": { "includes": ["case\"VSG-TRANSFORM\":", ".properties.translation="] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|