blob: d52bb855dfe50496767c9c39206f5affb12e7725 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
#!/bin/sh
# use for debug only.
# set -x
if [ -z "$1" ] || [ -z "$WINEPREFIX" ] || [ -z "$GAMEID" ]; then
echo "Usage: WINEPREFIX=<wine-prefix-path> GAMEID=<ulwgl-id> PROTONPATH=<proton-version-path> ./gamelauncher.sh <executable-path> <arguments>"
echo "Ex:"
echo "WINEPREFIX=$HOME/Games/epic-games-store GAMEID=egs PROTONPATH=\"$HOME/.steam/steam/compatibilitytools.d/GE-Proton8-28\" ./gamelauncher.sh \"$HOME/Games/epic-games-store/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe\" \"-opengl -SkipBuildPatchPrereq\""
exit 1
fi
ULWGL_PROTON_VER="ULWGL-Proton-8.0-5"
ULWGL_LAUNCHER_VER="0.1-RC3"
me="$(readlink -f "$0")"
#here="${me%/*}"
# Self-update
# In flatpak it will check for /app/share/ULWGL/ULWGL-launcher.tar.gz and check version
# In distro package it will check for /usr/share/ULWGL/ULWGL-launcher.tar.gz and check version
# If tarball does not exist it will just download it.
if [ ! -d "$HOME"/.local/share/ULWGL/ ]; then
if [ -f "${me%/*/*}"/share/ULWGL/ULWGL-launcher.tar.gz ]; then
tar -zxvf "${me%/*/*}"/share/ULWGL/ULWGL-launcher.tar.gz --one-top-level="$HOME"/.local/share/ULWGL
else
wget https://github.com/Open-Wine-Components/ULWGL-launcher/releases/download/$ULWGL_LAUNCHER_VER/ULWGL-launcher.tar.gz
tar -zxvf ULWGL-launcher.tar.gz --one-top-level="$HOME"/.local/share/ULWGL
fi
else
if [ "$ULWGL_LAUNCHER_VER" != "$(cat "$HOME"/.local/share/ULWGL/ULWGL-VERSION)" ]; then
rm -Rf "$HOME"/.local/share/ULWGL/
if [ -f "${me%/*/*}"/share/ULWGL/ULWGL-launcher.tar.gz ]; then
tar -zxvf "${me%/*/*}"/share/ULWGL/ULWGL-launcher.tar.gz --one-top-level="$HOME"/.local/share/ULWGL
else
wget https://github.com/Open-Wine-Components/ULWGL-launcher/releases/download/$ULWGL_LAUNCHER_VER/ULWGL-launcher.tar.gz
tar -zxvf ULWGL-launcher.tar.gz --one-top-level="$HOME"/.local/share/ULWGL
fi
fi
fi
if [ "$WINEPREFIX" ]; then
if [ ! -d "$WINEPREFIX" ]; then
mkdir -p "$WINEPREFIX"
export PROTON_DLL_COPY="*"
fi
if [ ! -d "$WINEPREFIX"/pfx ]; then
ln -s "$WINEPREFIX" "$WINEPREFIX"/pfx > log 2>&1
fi
if [ ! -f "$WINEPREFIX"/tracked_files ]; then
touch "$WINEPREFIX"/tracked_files
fi
if [ ! -f "$WINEPREFIX/dosdevices/" ]; then
mkdir -p "$WINEPREFIX"/dosdevices
ln -s "../drive_c" "$WINEPREFIX/dosdevices/c:" > log 2>&1
fi
fi
if [ -n "$PROTONPATH" ]; then
if [ ! -d "$PROTONPATH" ]; then
echo "ERROR: $PROTONPATH is invalid, aborting!" exit 1
exit 1
fi
fi
if [ -z "$PROTONPATH" ]; then
if [ ! -d "$HOME"/.local/share/Steam/compatibilitytools.d/$ULWGL_PROTON_VER ]; then
wget https://github.com/Open-Wine-Components/ULWGL-Proton/releases/download/$ULWGL_PROTON_VER/$ULWGL_PROTON_VER.tar.gz
wget https://github.com/Open-Wine-Components/ULWGL-Proton/releases/download/$ULWGL_PROTON_VER/$ULWGL_PROTON_VER.sha512sum
checksum=$(sha512sum $ULWGL_PROTON_VER.tar.gz)
if [ "$checksum" = "$(cat $ULWGL_PROTON_VER.sha512sum)" ]; then
tar -zxvf $ULWGL_PROTON_VER.tar.gz --one-top-level="$HOME"/.local/share/Steam/compatibilitytools.d/
rm $ULWGL_PROTON_VER.tar.gz
rm $ULWGL_PROTON_VER.sha512sum
else
echo "ERROR: $ULWGL_PROTON_VER.tar.gz checksum does not match $ULWGL_PROTON_VER.sha512sum, aborting!"
rm $ULWGL_PROTON_VER.tar.gz
rm $ULWGL_PROTON_VER.sha512sum
exit 1
fi
fi
PROTONPATH="$HOME"/.local/share/Steam/compatibilitytools.d/$ULWGL_PROTON_VER
else
export PROTONPATH="$PROTONPATH"
fi
export ULWGL_ID="$GAMEID"
export STEAM_COMPAT_APP_ID="0"
numcheck='^[0-9]+$'
if echo "$ULWGL_ID" | cut -d "-" -f 2 | grep -Eq "$numcheck"; then
STEAM_COMPAT_APP_ID=$(echo "$ULWGL_ID" | cut -d "-" -f 2)
export STEAM_COMPAT_APP_ID
fi
export SteamAppId="$STEAM_COMPAT_APP_ID"
export SteamGameId="$STEAM_COMPAT_APP_ID"
# TODO: Ideally this should be the main game install path, which is often, but not always the path of the game's executable.
if [ -z "$STEAM_COMPAT_INSTALL_PATH" ]; then
exepath="$(readlink -f "$1")"
gameinstallpath="${exepath%/*}"
export STEAM_COMPAT_INSTALL_PATH="$gameinstallpath"
fi
compat_lib_path=$(findmnt -T "$STEAM_COMPAT_INSTALL_PATH" | tail -n 1 | awk '{ print $1 }')
if [ "$compat_lib_path" != "/" ]; then
export STEAM_COMPAT_LIBRARY_PATHS="${STEAM_COMPAT_LIBRARY_PATHS:+"${STEAM_COMPAT_LIBRARY_PATHS}:"}$compat_lib_path"
fi
if [ -z "$STEAM_RUNTIME_LIBRARY_PATH" ]; then
# The following info taken from steam ~/.local/share/ubuntu12_32/steam-runtime/run.sh
host_library_paths=
exit_status=0
ldconfig_output=$(/sbin/ldconfig -XNv 2> /dev/null; exit $?) || exit_status=$?
if [ $exit_status != 0 ]; then
echo "Warning: An unexpected error occurred while executing \"/sbin/ldconfig -XNv\", the exit status was $exit_status"
fi
echo "$ldconfig_output" | while IFS= read -r line; do
# If line starts with a leading / and contains :, it's a new path prefix
case "$line" in
/*:*)
library_path_prefix=$(echo "$line" | cut -d: -f1)
host_library_paths="$host_library_paths$library_path_prefix:"
;;
esac
done
host_library_paths="${LD_LIBRARY_PATH:+"${LD_LIBRARY_PATH}:"}$host_library_paths"
steam_runtime_library_paths="${STEAM_COMPAT_INSTALL_PATH}:${host_library_paths}"
export STEAM_RUNTIME_LIBRARY_PATH="$steam_runtime_library_paths"
fi
if [ -z "$PROTON_VERB" ]; then
export PROTON_VERB="waitforexitandrun"
fi
export STEAM_COMPAT_CLIENT_INSTALL_PATH=''
export STEAM_COMPAT_DATA_PATH="$WINEPREFIX"
export STEAM_COMPAT_SHADER_PATH="$STEAM_COMPAT_DATA_PATH"/shadercache
export PROTON_CRASH_REPORT_DIR='/tmp/ULWGL_crashreports'
export FONTCONFIG_PATH=''
export EXE="$1"
if [ "$EXE" = "createprefix" ]; then
# Hack, leave empty.
# forces proton to create a prefix without actually running anything.
EXE=""
fi
shift 1
export STEAM_COMPAT_TOOL_PATHS="$PROTONPATH:$HOME"/.local/share/ULWGL
export STEAM_COMPAT_MOUNTS="$PROTONPATH:$HOME"/.local/share/ULWGL
"$HOME"/.local/share/ULWGL/ULWGL "--verb=$PROTON_VERB" -- "$PROTONPATH"/proton "$PROTON_VERB" "$EXE" "$@"
|