diff options
| author | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2026-03-21 07:57:48 -0400 |
|---|---|---|
| committer | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2026-03-21 07:57:48 -0400 |
| commit | 2668d9649bf36d1e279470f81918464dd30f5e3d (patch) | |
| tree | 8fcdd23a0f2485bb109467bce6608955932c3d1c /defaults/assets | |
| parent | d81bb130385114389728f849d0ab8cccf62b90d1 (diff) | |
| download | Decky-Framegen-2668d9649bf36d1e279470f81918464dd30f5e3d.tar.gz Decky-Framegen-2668d9649bf36d1e279470f81918464dd30f5e3d.zip | |
Add per-game config APIs and proxy persistence
Diffstat (limited to 'defaults/assets')
| -rwxr-xr-x | defaults/assets/fgmod.sh | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/defaults/assets/fgmod.sh b/defaults/assets/fgmod.sh index 7aa62bb..9864ca1 100755 --- a/defaults/assets/fgmod.sh +++ b/defaults/assets/fgmod.sh @@ -24,10 +24,11 @@ error_exit() { bundle_root="${HOME}/fgmod" managed_dir_name="optiscaler-managed" manifest_name="manifest.env" -proxy_name="${OPTISCALER_PROXY:-${DLL:-winmm}}" +default_proxy="winmm" +proxy_name="${OPTISCALER_PROXY:-${DLL:-}}" proxy_name="${proxy_name%.dll}" -proxy_dll="${proxy_name}.dll" -backup_dll="${proxy_name}-original.dll" +proxy_dll="" +backup_dll="" support_files=( "libxess.dll" @@ -44,11 +45,6 @@ support_files=( "fakenvapi.ini" ) -case "$proxy_name" in - winmm|dxgi|version|dbghelp|winhttp|wininet|d3d12) ;; - *) error_exit "Unsupported OPTISCALER_PROXY '$proxy_name'." ;; -esac - [[ -d "$bundle_root" ]] || error_exit "OptiScaler runtime not installed at $bundle_root" [[ -n "${STEAM_COMPAT_DATA_PATH:-}" ]] || error_exit "STEAM_COMPAT_DATA_PATH is required. Use this wrapper from a Steam/Proton launch option." [[ $# -ge 1 ]] || error_exit "Usage: $0 program [program_arguments...]" @@ -85,12 +81,26 @@ cleanup_stage_files() { mkdir -p "$system32_path" "$managed_root" "$managed_plugins" existing_proxy="" +preferred_proxy="" if [[ -f "$manifest_path" ]]; then # shellcheck disable=SC1090 source "$manifest_path" existing_proxy="${MANAGED_PROXY:-}" + preferred_proxy="${PREFERRED_PROXY:-}" +fi + +if [[ -z "$proxy_name" ]]; then + proxy_name="${preferred_proxy:-$default_proxy}" fi +case "$proxy_name" in + winmm|dxgi|version|dbghelp|winhttp|wininet|d3d12) ;; + *) error_exit "Unsupported OPTISCALER_PROXY '$proxy_name'." ;; +esac + +proxy_dll="${proxy_name}.dll" +backup_dll="${proxy_name}-original.dll" + if [[ -n "$existing_proxy" && "$existing_proxy" != "$proxy_name" ]]; then log "Switching managed proxy from $existing_proxy to $proxy_name" cleanup_stage_files "$existing_proxy" @@ -149,6 +159,7 @@ fi cat > "$manifest_path" <<EOF MANAGED_PROXY="$proxy_name" +PREFERRED_PROXY="$preferred_proxy" BUNDLE_ROOT="$bundle_root" BUNDLE_VERSION="$runtime_version" SYSTEM32_PATH="$system32_path" |
