Merge branch 'steamPlay' of github.com:alex2844/PortWINE into alex2844-steamPlay
This commit is contained in:
commit
f366f1e7e3
@ -293,7 +293,7 @@ parseSteamShortcutEntryLaunchOptions() {
|
||||
}
|
||||
|
||||
parseSteamTargetExe() {
|
||||
grep -E 'flatpak|start\.sh' "$1" | head -n 1 | awk -F'"' '{print $(NF-1)}'
|
||||
grep -E '^[^# ]*?(flatpak|start\.sh)' "$1" | head -n 1 | sed 's/ "\$@"//' | awk -F'"' '{print $(NF-1)}'
|
||||
}
|
||||
|
||||
restartSteam() {
|
||||
@ -356,10 +356,10 @@ addGrids() {
|
||||
fi
|
||||
if [[ -n "${SteamGridDBId}" ]] || [[ -n "${SteamAppId}" ]]; then
|
||||
create_new_dir "${STCFGPATH}/grid"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAIDGRID:-0}.jpg" "mimes=image/jpeg" "dimensions=460x215,920x430" || downloadImageSteam "header.jpg" "${NOSTAIDGRID:-0}.jpg" || echo "Failed to load header.jpg"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAIDGRID:-0}p.jpg" "mimes=image/jpeg" "dimensions=600x900,660x930" || downloadImageSteam "library_600x900_2x.jpg" "${NOSTAIDGRID:-0}p.jpg" || echo "Failed to load library_600x900_2x.jpg"
|
||||
downloadImageSteamGridDB "heroes" "${NOSTAIDGRID:-0}_hero.jpg" "mimes=image/jpeg" || downloadImageSteam "library_hero.jpg" "${NOSTAIDGRID:-0}_hero.jpg" || echo "Failed to load library_hero.jpg"
|
||||
downloadImageSteamGridDB "logos" "${NOSTAIDGRID:-0}_logo.png" "mimes=image/png" || downloadImageSteam "logo.png" "${NOSTAIDGRID:-0}_logo.png" || echo "Failed to load logo.png"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAPPID:-0}.jpg" "mimes=image/jpeg" "dimensions=460x215,920x430" || downloadImageSteam "header.jpg" "${NOSTAPPID:-0}.jpg" || echo "Failed to load header.jpg"
|
||||
downloadImageSteamGridDB "grids" "${NOSTAPPID:-0}p.jpg" "mimes=image/jpeg" "dimensions=600x900,660x930" || downloadImageSteam "library_600x900_2x.jpg" "${NOSTAPPID:-0}p.jpg" || echo "Failed to load library_600x900_2x.jpg"
|
||||
downloadImageSteamGridDB "heroes" "${NOSTAPPID:-0}_hero.jpg" "mimes=image/jpeg" || downloadImageSteam "library_hero.jpg" "${NOSTAPPID:-0}_hero.jpg" || echo "Failed to load library_hero.jpg"
|
||||
downloadImageSteamGridDB "logos" "${NOSTAPPID:-0}_logo.png" "mimes=image/png" || downloadImageSteam "logo.png" "${NOSTAPPID:-0}_logo.png" || echo "Failed to load logo.png"
|
||||
else
|
||||
echo "Game is not found"
|
||||
fi
|
||||
@ -423,16 +423,18 @@ removeNonSteamGame() {
|
||||
if [[ -n "${NOSTSHPATH}" ]]; then
|
||||
mv "${SCPATH}" "${SCPATH//.vdf}_${PROGNAME}_backup.vdf" 2>/dev/null
|
||||
jq --arg id "${appid}" 'map(select(.id != $id))' <<< "${games}" | jq -c '.[]' | while read -r game; do
|
||||
NOSTAIDGRID=$(jq -r '.id' <<< "${game}")
|
||||
NOSTAPPID=$(jq -r '.id' <<< "${game}")
|
||||
NOSTAPPNAME=$(jq -r '.name' <<< "${game}")
|
||||
NOSTEXEPATH=$(jq -r '.exe' <<< "${game}")
|
||||
NOSTSTDIR=$(jq -r '.dir' <<< "${game}")
|
||||
NOSTICONPATH=$(jq -r '.icon' <<< "${game}")
|
||||
NOSTARGS=$(jq -r '.args' <<< "${game}")
|
||||
NOSTAIDVDFHEX=$(bigToLittleEndian $(printf '%08x' "${NOSTAIDGRID}"))
|
||||
NOSTAIDVDFHEX=$(bigToLittleEndian $(printf '%08x' "${NOSTAPPID}"))
|
||||
addEntry
|
||||
done
|
||||
rm -f "${STCFGPATH}/grid/${appid}.jpg" "${STCFGPATH}/grid/${appid}p.jpg" "${STCFGPATH}/grid/${appid}_hero.jpg" "${STCFGPATH}/grid/${appid}_logo.png"
|
||||
rm -rf "${HOME}/.local/share/Steam/steamapps/compatdata/${appid}"
|
||||
rm -rf "${HOME}/.local/share/Steam/steamapps/shadercache/${appid}"
|
||||
if [[ -f "${NOSTSHPATH}" ]]; then
|
||||
isInstallGame=false
|
||||
for STUIDCUR in $(getUserIds); do
|
||||
@ -464,8 +466,8 @@ addNonSteamGame() {
|
||||
if [[ -n "${SCPATH}" ]]; then
|
||||
[[ -z "${NOSTSHPATH}" ]] && NOSTSHPATH="${STEAM_SCRIPTS}/${name_desktop}.sh"
|
||||
NOSTAPPNAME="${name_desktop}"
|
||||
NOSTAIDGRID=$(getAppId "${NOSTSHPATH}")
|
||||
if [[ -z "${NOSTAIDGRID}" ]]; then
|
||||
NOSTAPPID=$(getAppId "${NOSTSHPATH}")
|
||||
if [[ -z "${NOSTAPPID}" ]]; then
|
||||
NOSTEXEPATH="${NOSTSHPATH}"
|
||||
if [[ -z "${NOSTSTDIR}" ]]; then
|
||||
NOSTSTDIR="${STEAM_SCRIPTS}"
|
||||
@ -473,17 +475,16 @@ addNonSteamGame() {
|
||||
NOSTICONPATH="${PORT_WINE_PATH}/data/img/${name_desktop_png}.png"
|
||||
NOSTAIDVDF="$(generateShortcutVDFAppId "${NOSTAPPNAME}${NOSTEXEPATH}")" # signed integer AppID, stored in the VDF as hexidecimal - ex: -598031679
|
||||
NOSTAIDVDFHEX="$(generateShortcutVDFHexAppId "$NOSTAIDVDF")" # 4byte little-endian hexidecimal of above 32bit signed integer, which we write out to the binary VDF - ex: c1c25adc
|
||||
NOSTAIDGRID="$(extractSteamId32 "$NOSTAIDVDF")" # unsigned 32bit ingeger version of "$NOSTAIDVDF", which is used as the AppID for Steam artwork ("grids"), as well as for our shortcuts
|
||||
NOSTAPPID="$(extractSteamId32 "$NOSTAIDVDF")" # unsigned 32bit ingeger version of "$NOSTAIDVDF", which is used as the AppID for Steam artwork ("grids"), as well as for our shortcuts
|
||||
|
||||
create_new_dir "${STEAM_SCRIPTS}"
|
||||
echo "#!/usr/bin/env bash" > "${NOSTSHPATH}"
|
||||
echo "export START_FROM_STEAM=1" >> "${NOSTSHPATH}"
|
||||
echo "export LD_PRELOAD=" >> "${NOSTSHPATH}"
|
||||
if check_flatpak; then
|
||||
echo "flatpak run ru.linux_gaming.PortProton \"${portwine_exe}\" " >> "${NOSTSHPATH}"
|
||||
else
|
||||
echo "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" " >> "${NOSTSHPATH}"
|
||||
fi
|
||||
cat <<-EOF > "${NOSTSHPATH}"
|
||||
#!/usr/bin/env bash
|
||||
export LD_PRELOAD=
|
||||
export START_FROM_STEAM=1
|
||||
export START_FROM_FLATPAK=$(check_flatpak && echo 1 || echo 0)
|
||||
"${PORT_SCRIPTS_PATH}/start.sh" "${portwine_exe}" "\$@"
|
||||
EOF
|
||||
chmod u+x "${NOSTSHPATH}"
|
||||
|
||||
if [[ -f "${SCPATH}" ]] ; then
|
||||
|
@ -2903,10 +2903,12 @@ edit_db_from_gui () {
|
||||
then
|
||||
for mod_db in "$@" ; do
|
||||
proxy_mod_db="${!mod_db}"
|
||||
if [[ $proxy_mod_db =~ (${translations[Disabled]}|${translations[Disable]}) ]] ; then
|
||||
proxy_mod_db=disabled
|
||||
elif [[ $proxy_mod_db =~ (${translations[Enabled]}|${translations[Enable]}) ]] ; then
|
||||
proxy_mod_db=enabled
|
||||
if (( ${#translations[@]} > 0 )); then
|
||||
if [[ $proxy_mod_db =~ (${translations[Disabled]}|${translations[Disable]}) ]] ; then
|
||||
proxy_mod_db=disabled
|
||||
elif [[ $proxy_mod_db =~ (${translations[Enabled]}|${translations[Enable]}) ]] ; then
|
||||
proxy_mod_db=enabled
|
||||
fi
|
||||
fi
|
||||
|
||||
# Escaping backslashes and quotes for Windows paths
|
||||
@ -4395,6 +4397,35 @@ pw_yad_form_vulkan () {
|
||||
fi
|
||||
}
|
||||
|
||||
steamplay_launch () {
|
||||
if [[ -n "${portwine_exe:-}" ]]; then
|
||||
cd "$(dirname "${portwine_exe}")"
|
||||
export PORTWINE_DB_FILE="${portwine_exe}.ppdb"
|
||||
[[ -f "${PORTWINE_DB_FILE}" ]] && source "${PORTWINE_DB_FILE}"
|
||||
PORT_WINE_PREFIX="${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME:-DEFAULT}"
|
||||
for path in "ProgramData" "users/Public" "users/steamuser"; do
|
||||
mkdir -p "${PORT_WINE_PREFIX}/drive_c/${path}"
|
||||
if [[ ! -L "${WINEPREFIX}/drive_c/${path}" ]]; then
|
||||
mkdir -p "${WINEPREFIX}/drive_c/users/"
|
||||
rm -rf "${WINEPREFIX}/drive_c/${path}"
|
||||
ln -sr "${PORT_WINE_PREFIX}/drive_c/${path}" "${WINEPREFIX}/drive_c/${path}"
|
||||
fi
|
||||
done
|
||||
if [[ -n "${PW_DLL_INSTALL:-}" ]] ; then
|
||||
update_winetricks
|
||||
PATH="${PATH}:${PW_PLUGINS_PATH}/portable/bin" LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PW_PLUGINS_PATH}/portable/lib/lib64:${PW_PLUGINS_PATH}/portable/lib/lib32" \
|
||||
"${PORT_WINE_TMP_PATH}/winetricks" -q ${PW_DLL_INSTALL}
|
||||
fi
|
||||
[[ $PW_LOG != 1 ]] && debug_timer --start -s "PW_TIME_IN_GAME"
|
||||
"${STEAM_COMPAT_TOOL_PATHS%%:*}/proton" "run" "${portwine_exe}" "$@"
|
||||
if [[ $PW_LOG != 1 ]] && [[ -n $START_PW_TIME_IN_GAME ]] ; then
|
||||
debug_timer --end -s "PW_TIME_IN_GAME"
|
||||
PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 ))
|
||||
search_desktop_file
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
portwine_launch () {
|
||||
start_portwine
|
||||
unset PW_VD_TMP
|
||||
|
@ -6,6 +6,11 @@ export url_site="https://linux-gaming.ru/portproton/"
|
||||
export url_cloud="https://cloud.linux-gaming.ru/portproton"
|
||||
export url_git="https://git.linux-gaming.ru/CastroFidel/PortWINE"
|
||||
########################################################################
|
||||
if [[ "${START_FROM_FLATPAK:-0}" == 1 ]] && [[ -z "${STEAM_COMPAT_DATA_PATH:-}" ]] && command -v "flatpak" &>/dev/null; then
|
||||
unset START_FROM_FLATPAK
|
||||
flatpak run ru.linux_gaming.PortProton "$@"
|
||||
exit
|
||||
fi
|
||||
echo '
|
||||
█░░ █ █▄░█ █░█ ▀▄▀ ▄▄ █▀▀ ▄▀█ █▀▄▀█ █ █▄░█ █▀▀ ░ █▀█ █░█
|
||||
█▄▄ █ █░▀█ █▄█ █░█ ░░ █▄█ █▀█ █░▀░█ █ █░▀█ █▄█ ▄ █▀▄ █▄█
|
||||
@ -96,7 +101,7 @@ fi
|
||||
unset MANGOHUD MANGOHUD_DLSYM PW_NO_ESYNC PW_NO_FSYNC PW_VULKAN_USE WINEDLLOVERRIDES PW_NO_WRITE_WATCH PW_YAD_SET PW_ICON_FOR_YAD
|
||||
unset PW_CHECK_AUTOINSTALL PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PORTWINE_DB PORTWINE_DB_FILE RADV_PERFTEST
|
||||
unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME PW_PATH
|
||||
unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR PW_WINE_CPU_TOPOLOGY
|
||||
unset PW_PREFIX_NAME VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR PW_WINE_CPU_TOPOLOGY
|
||||
unset MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR
|
||||
unset PW_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START PW_AUTOINSTALL_EXE NOSTSTDIR RADV_DEBUG PW_NO_AUTO_CREATE_SHORTCUT
|
||||
unset PW_TERM PW_EXEC_FROM_DESKTOP WEBKIT_DISABLE_DMABUF_RENDERER PW_AMD_VULKAN_USE PW_VK_ICD_FILENAMES LAUNCH_URI
|
||||
@ -191,6 +196,12 @@ if [[ $TRANSLATIONS_VER != "$scripts_install_ver" ]] ; then
|
||||
source "$PW_CACHE_LANG_PATH/$LANGUAGE"
|
||||
fi
|
||||
|
||||
if [[ -n "${STEAM_COMPAT_DATA_PATH:-}" ]]; then
|
||||
steamplay_launch "${@:2}"
|
||||
exit
|
||||
fi
|
||||
unset WINEPREFIX
|
||||
|
||||
# check PortProton theme
|
||||
if [[ -n "$GUI_THEME" ]] \
|
||||
&& [[ -f "$PW_GUI_THEMES_PATH/$GUI_THEME.pptheme" ]]
|
||||
|
Loading…
Reference in New Issue
Block a user