makedeb


proton-ge-custom-bin 8.3-1


A fancy custom distribution of Valves Proton with various patches

Click here to go back to the commit logs for proton-ge-custom-bin.

Commit:


Hash: e2893a580bbea2297a164b7c926f826a54594c7f

Message: Fixed launcher and config files

Diff


diff --git a/.SRCINFO b/.SRCINFO
index e0fd877..95bd8df 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -3,7 +3,7 @@ pkgname = proton-ge-custom-bin
 changelog = changelog.md
 pkgbase = proton-ge-custom-bin
 pkgdesc = A fancy custom distribution of Valves Proton with various patches
-pkgrel = 1
+pkgrel = 2
 pkgver = 7.35
 url = https://github.com/GloriousEggroll/proton-ge-custom
 arch = x86_64
@@ -44,8 +44,8 @@ source = proton-ge-custom-7.35.tar.gz::https://github.com/GloriousEggroll/proton
 source = user_settings.py
 source = launcher.sh
 b2sums = b907c95c3d7dd2277542347a6d7296bb23dad40d075a56d23e1688d9b3abebec2e1986d42e5ced540874854da19c6d1033636abb03af3f3d77c2fc3aafc5799b
-b2sums = c0f466bc55ea4aadda12800d1a2b55fe2bae75a6f547f8275115913f5c6da1728a64a5269d938e315fba9518dd0b7e1ac41ecf5fc3109b316399a1ecfbb87492
-b2sums = f2df30593cc5a72959dc14236e5958006f9c64d51fcea48de38df19da1428446fe6a2f0bd080736f60a4b40816f929559667d49c888b4a3793af88c9c12a6df4
+b2sums = d39460c4d5aada5a30c9fb7d9d7bd14c59a5c71d5af0d9ab7f3a6d2ee4e3dcc80026cf4bfc3682318ae5aeea5d318270bad21b8a6b88c978df5f4a325da39f84
+b2sums = 1c7f252e2f1229140bb628e820266137fd16b503bdf80680db8bd463ad60327217023b65c8080829d6354f8ce0bc673eabb95b7fd409c65650cf163dd16f8884
 makedepends = patch
 optdepends = kdialog: KDE splash dialog support
 optdepends = zenity: GNOME splash dialog support
diff --git a/PKGBUILD b/PKGBUILD
index a4583b4..122b8e4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -9,7 +9,7 @@
 pkgdesc='A fancy custom distribution of Valves Proton with various patches'
 pkgname='proton-ge-custom-bin'
 pkgver='7.35'
-pkgrel='1'
+pkgrel='2'
 arch=('x86_64')
 license=('BSD' 'LGPL' 'zlib' 'MIT' 'MPL' 'custom')
 changelog='changelog.md'
@@ -48,8 +48,8 @@ source=("${_pkgname}-${pkgver}.tar.gz::${url}/releases/download/${_srcdir}/${_sr
 	'user_settings.py'
 	'launcher.sh')
 b2sums=('b907c95c3d7dd2277542347a6d7296bb23dad40d075a56d23e1688d9b3abebec2e1986d42e5ced540874854da19c6d1033636abb03af3f3d77c2fc3aafc5799b'
-        'c0f466bc55ea4aadda12800d1a2b55fe2bae75a6f547f8275115913f5c6da1728a64a5269d938e315fba9518dd0b7e1ac41ecf5fc3109b316399a1ecfbb87492'
-        'f2df30593cc5a72959dc14236e5958006f9c64d51fcea48de38df19da1428446fe6a2f0bd080736f60a4b40816f929559667d49c888b4a3793af88c9c12a6df4')
+        'd39460c4d5aada5a30c9fb7d9d7bd14c59a5c71d5af0d9ab7f3a6d2ee4e3dcc80026cf4bfc3682318ae5aeea5d318270bad21b8a6b88c978df5f4a325da39f84'
+        '1c7f252e2f1229140bb628e820266137fd16b503bdf80680db8bd463ad60327217023b65c8080829d6354f8ce0bc673eabb95b7fd409c65650cf163dd16f8884')
 
 build() {
 	## patches
diff --git a/launcher.sh b/launcher.sh
index 80ee627..a0faf6f 100755
--- a/launcher.sh
+++ b/launcher.sh
@@ -5,6 +5,8 @@
 _proton=echo
 # default prefix dir if STEAM_COMPAT_DATA_PATH not set
 _pfx=${XDG_DATA_HOME:-~/.local/share}/proton-pfx
+# default dxvk state cache path if not set, could be compatible with dxvk-cache-pool application
+_cachepath=${XDG_CACHE_HOME:-~/.cache}/dxvk-cache-pool
 # default appid if STEAM_COMPAT_DATA_PATH or SteamAppId not set nor given as an argument
 _appid=0
 # default mode of execution if not given as an argument
@@ -18,44 +20,55 @@ set_env() {
 	# While this makes no sense in standalone, we need to set *some* path even if does not exists.
 	if [ -z ${STEAM_COMPAT_CLIENT_INSTALL_PATH+x} ]; then
 		export STEAM_COMPAT_CLIENT_INSTALL_PATH=${_steam}
-		echo "ProtonLauncher[$$] INFO: empty STEAM_COMPAT_CLIENT_INSTALL_PATH set to ${STEAM_COMPAT_CLIENT_INSTALL_PATH}"
+		>&2 echo "ProtonLauncher[$$] INFO: empty STEAM_COMPAT_CLIENT_INSTALL_PATH set to ${STEAM_COMPAT_CLIENT_INSTALL_PATH}"
 	fi
 	if ! [ -d "${STEAM_COMPAT_CLIENT_INSTALL_PATH}" ]; then
-		echo "ProtonLauncher[$$] WARN: directory ${STEAM_COMPAT_CLIENT_INSTALL_PATH} does not exist"
+		>&2 echo "ProtonLauncher[$$] WARN: directory ${STEAM_COMPAT_CLIENT_INSTALL_PATH} does not exist"
 	fi
 
 	# No data path to prefix? Let's set the default path. We want to include the AppId in the path like steam.
 	if [ -z ${STEAM_COMPAT_DATA_PATH+x} ]; then
 		export STEAM_COMPAT_DATA_PATH=${_pfx}/${SteamAppId:-${_appid}}
-		echo "ProtonLauncher[$$] INFO: empty STEAM_COMPAT_DATA_PATH set to ${STEAM_COMPAT_DATA_PATH}"
+		>&2 echo "ProtonLauncher[$$] INFO: empty STEAM_COMPAT_DATA_PATH set to ${STEAM_COMPAT_DATA_PATH}"
 	elif ! [ "${SteamGameId}" -ge 0 ] 2>/dev/null && ! [ "${SteamAppId}" -ge 0 ] 2>/dev/null && ! [ "$(basename "${STEAM_COMPAT_DATA_PATH}")" -ge 0 ] 2>/dev/null; then
 		export SteamAppId=${_appid}
-		echo "ProtonLauncher[$$] INFO: empty SteamAppId set to ${SteamAppId}"
+		>&2 echo "ProtonLauncher[$$] INFO: empty SteamAppId set to ${SteamAppId}"
 	fi
 	# If the prefix path does not exist yet, we will create it.
 	if ! [ -d "${STEAM_COMPAT_DATA_PATH}" ]; then
 		install -d "${STEAM_COMPAT_DATA_PATH}" || exit 1
-		echo "ProtonLauncher[$$] INFO: directory ${STEAM_COMPAT_DATA_PATH} created"
+		>&2 echo "ProtonLauncher[$$] INFO: directory ${STEAM_COMPAT_DATA_PATH} created"
+	fi
+
+	# DXVK state cache path not given, we will use a default.
+	if [ -z ${DXVK_STATE_CACHE_PATH+x} ]; then
+		export DXVK_STATE_CACHE_PATH=${_cachepath}
+		>&2 echo "ProtonLauncher[$$] INFO: empty DXVK_STATE_CACHE_PATH set to ${_cachepath}"
+	fi
+	# If the state cache path does not exist yet, we will create it.
+	if ! [ -d "${DXVK_STATE_CACHE_PATH}" ]; then
+		install -d "${DXVK_STATE_CACHE_PATH}" || exit 1
+		>&2 echo "ProtonLauncher[$$] INFO: directory ${DXVK_STATE_CACHE_PATH} created"
 	fi
 
 	# Placeholder in case we need the workaround again when tracked_files missing
 	if ! [ -f "${STEAM_COMPAT_DATA_PATH}"/tracked_files ]; then
 		if [ -f "${STEAM_COMPAT_DATA_PATH}"/version ]; then
-			echo "ProtonLauncher[$$] WARN: file ${STEAM_COMPAT_DATA_PATH}/tracked_files missing! Please report to AUR maintainer"
+			>&2 echo "ProtonLauncher[$$] WARN: file ${STEAM_COMPAT_DATA_PATH}/tracked_files missing! Please report to AUR maintainer"
 		fi
 	fi
 
-	# argument -e was provided, so summerize the relevant env we set so far.
+	# argument -e was provided, so summarize the relevant env we set so far.
 	if [ "${_printenv}" == "true" ] 2>/dev/null; then print_env; fi
 }
 
 print_usage() {
 	cat <<EOF
 
-USAGE:  proton executable.exe
-        proton [mode]  executable.exe
-        proton [appid] executable.exe
-        proton [--environment|-e] [--help|-h]
+USAGE:  proton [--environment|-e] executable.exe
+        proton [--environment|-e] [mode]  executable.exe
+        proton [--environment|-e] [appid] executable.exe
+        proton [--help|-h]
 
 EOF
 }
@@ -64,6 +77,8 @@ print_help() {
 	print_usage
 	cat <<EOF
 ENV:    STEAM_COMPAT_DATA_PATH
+        STEAM_COMPAT_CLIENT_INSTALL_PATH
+        DXVK_STATE_CACHE_PATH
         SteamAppId
         SteamGameId
 
@@ -71,40 +86,81 @@ Just call this proton launcher script with your app as the only argument
 to run it with the default prefix
 ${_pfx}/${_appid} and default mode "${_mode}".
 
+Use other invocations as stated with USAGE: and/or modify behavior with
+environment variables as described below.
+
 _mode_
+
 You can change the mode of operation by specifying it as the first argument.
 Possible values are: waitforexitandrun, run, getcompatpath, getnativepath
 
 _appid_
-Protonfixes uses three environment variables to determine the application to
-run fixes for. The env STEAM_COMPAT_DATA_PATH points to the wine prefix and
-usually includes the AppId. If the env SteamAppId (or SteamGameId) is set, it
-takes precedence as the AppId used.
 
-As proton itself needs the env STEAM_COMPAT_DATA_PATH, the default prefix
+Protonfixes (included by proton-ge) uses three environment variables to
+determine the application to run fixes for.
+The env STEAM_COMPAT_DATA_PATH points to the wine prefix and usually includes
+the AppId, which is used in that case. If the env SteamAppId (or SteamGameId)
+is set, it takes precedence as the AppId used by protonfixes.
+
+As proton itself needs the env STEAM_COMPAT_DATA_PATH set, the default prefix
 ${_pfx}/${_appid} is used when it is not set or empty.
-An AppId given by env SteamAppId will alter this path accordingly.
+In that case, an AppId given by env SteamAppId or as the first argument will
+alter this path accordingly.
+If STEAM_COMPAT_DATA_PATH is set, it will not be modified by a provided AppId.
 
-Provide "appid" as an argument instead of "mode" to change the AppId regardless
-of the env vars. In this case, the mode defaults to "${_mode}".
+Provide "appid" as the first argument to change the AppId regardless of
+the env vars (force). In this case, the mode defaults to "${_mode}".
 Useable for "appid": see https://steamdb.info/apps/
 
+_other_
+
+The env STEAM_COMPAT_CLIENT_INSTALL_PATH is set to "${_steam}" if not given,
+because proton cares. It has no effect if proton is not started from
+within steam anyway, therefore the path does not have to be actually resolvable.
+
+DXVK creates cache files right next to the executable if the env
+DXVK_STATE_CACHE_PATH is missing.
+This launcher sets it to "${_cachepath}"
+if not provided. It makes sharing of those files as well as read-only game
+folders possible. Also, the cache survives remove/reinstall of the game.
+
+You may share oder download caches for example from here:
+https://github.com/begin-theadventure/dxvk-caches/
+
 Note that the env SteamGameId is not set by this launcher script in any case.
 This env is evaluated by steam executables inside the prefix. Set it yourself
-as you see fit.
+if you see fit.
+
+To print the current env when this script is called, use the "-e" switch.
+
+_example invocations_
+
+# "${_mode}" winecfg in prefix ${_pfx}/${_appid}
+$ proton winecfg
 
-To see the current ENV when this script is called, use "-e" the switch.
+# "${_mode}" winecfg in prefix ${_pfx}/${_appid}, dump all env that have been set
+$ proton -e winecfg
+
+# "${_mode}" winecfg in prefix ${_pfx}/17330, matching protonfixes for crysis are run
+$ proton 17300 winecfg
+
+# returns native path in ${_pfx}/${_appid}
+$ proton getnativepath "C:\Windows"
+
+# "${_mode}" winecfg in prefix ~/myfolder, matching protonfixes are run
+$ env STEAM_COMPAT_DATA_PATH=~/myfolder proton 17300 winecfg
 
 EOF
 }
 
 print_env() {
-	cat <<EOF
+cat <<EOF
 
 Current ENVIRONMENT variables:
 
 STEAM_COMPAT_CLIENT_INSTALL_PATH  ${STEAM_COMPAT_CLIENT_INSTALL_PATH:-"Empty or not set."}
 STEAM_COMPAT_DATA_PATH            ${STEAM_COMPAT_DATA_PATH:-"Empty or not set."}
+DXVK_STATE_CACHE_PATH             ${DXVK_STATE_CACHE_PATH:-"Empty or not set."}
 SteamAppId                        ${SteamAppId:-"Empty or not set."}
 SteamGameId                       ${SteamGameId:-"Empty or not set."}
 EOF
@@ -131,14 +187,14 @@ case $# in
 	;;
 *)
 	if ! [ "$1" -ge 0 ] 2>/dev/null; then
-		# start proton with given arguments, compatible with standard proton invokation
+		# start proton with given arguments, compatible with standard proton invocation
 		set_env
 		"${_proton}" "${@}"
 	else
 		# first arg is a positive signed int, thus the appid
 		export SteamAppId="$1"
 		#export SteamGameId="$1"
-		echo "ProtonLauncher[$$] INFO: forcing SteamAppId to $1"
+		>&2 echo "ProtonLauncher[$$] INFO: forcing SteamAppId to $1"
 		set_env
 		"${_proton}" "${_mode}" "${@:2}"
 	fi
diff --git a/user_settings.py b/user_settings.py
index 4f09d0b..46b0b5e 100755
--- a/user_settings.py
+++ b/user_settings.py
@@ -11,8 +11,15 @@ user_settings = {
     #Use at your own risk.
 #    "DXVK_ASYNC": "1",
 
-    #Enable AMD FidelityFX Super Resolution (FSR). Only works in vulkan games (dxvk and vkd3d-proton included).
-#    "WINE_FULLSCREEN_FSR": "1",
+    #Disable AMD FidelityFX Super Resolution (FSR), as it is enabled by default. FSR only works in vulkan games (dxvk and vkd3d-proton included).
+#    "WINE_FULLSCREEN_FSR": "0",
+
+    #By default, the "balanced" resolution option for FSR is added to the resolution list if a mode is not specified.
+    #possible modes : ultra, quality, balanced, performance.
+#    "WINE_FULLSCREEN_FSR_MODE": "performance",
+
+    #Add "widthxheight" to the in-game resolution list. Example resolution: 1234x4321
+#    "WINE_FULLSCREEN_FSR_CUSTOM_MODE": "1234x4321"
 
     #The default sharpening of 5 is enough without needing modification, but can be changed with 0-5 if wanted.
     #0 is the maximum sharpness, higher values mean less sharpening.
@@ -115,7 +122,7 @@ user_settings = {
 
     #wine-mono debug logging (Wine's .NET replacement)
 #    "WINE_MONO_TRACE": "E:System.NotImplementedException",
-    #"MONO_LOG_LEVEL": "info",
+#    "MONO_LOG_LEVEL": "info",
 
     #general purpose media logging
 #    "GST_DEBUG": "4",