makedeb
A fancy custom distribution of Valves Proton with various patches
Click here to go back to the commit logs for proton-ge-custom-bin.
Hash: e2893a580bbea2297a164b7c926f826a54594c7f
Message: Fixed launcher and config files
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",