Compare commits

...

14 Commits

Author SHA1 Message Date
Mikhail Tergoev
57fcfa605e Scripts version 2390 2025-02-23 11:44:31 +03:00
Mikhail Tergoev
97077fa67a added use local dxvk.conf in games with FAKE_DLSS_3 2025-02-22 15:18:26 +03:00
Mikhail Tergoev
14d49fd0bd updated PW_USE_FAKE_DLSS_3_INFO 2025-02-22 14:56:29 +03:00
Mikhail Tergoev
fcc171ba59 Merge branch 'alex2844-steamAppIdToName' into devel 2025-02-20 22:55:19 +03:00
Mikhail Tergoev
1eccf55f87 Merge branch 'steamAppIdToName' of github.com:alex2844/PortWINE into alex2844-steamAppIdToName 2025-02-20 22:55:10 +03:00
Mikhail Tergoev
b7464e20d1 Merge branch 'Boria138-cachyos' into devel 2025-02-20 22:52:46 +03:00
Mikhail Tergoev
68252ee565 Merge branch 'cachyos' of github.com:Boria138/PortWINE into Boria138-cachyos 2025-02-20 22:52:40 +03:00
Boris Yumankulov
3a07d63ccd
Added CachyOS Proton to download other wine 2025-02-20 10:10:56 +05:00
Alex Smith
46aaca1ee1 removed debug information 2025-02-12 22:28:17 +05:00
Alex Smith
d21849c121 support appid as name on listSteamGames
Добавил поддержку игр у которых вместо названия используется SteamAppId
Для них appid берется из названии игры, а name из имени скрипта
2025-02-12 22:08:19 +05:00
Alex Smith
1d2ac06f24 cache steamapplist on getSteamId
Добавил кеширование списка приложений получаемых с сервера steam
Так же поиск по этому списку теперь регистронезависимый
2025-02-12 21:27:51 +05:00
Alex Smith
f9b8fd069c listInstalledSteamGames
Добавлена проверка "StateFlags"
Игры отбираются только при наличии "SharedDepots"
2025-02-12 01:43:11 +05:00
Alex Smith
b354de779c USE_STEAMGRIDDB
Убрал опечатку в USE_STEA'B'GRIDDB
2025-02-12 00:27:15 +05:00
Alex Smith
7132e0f00e USE_STEAMAPPID_AS_NAME
Добавил возможность использовать SteamAppId вместо названия
Тем самым стим будет подтягивать раскладки геймпадов для игр
2025-02-12 00:24:27 +05:00
8 changed files with 120 additions and 54 deletions

@ -2,6 +2,15 @@ You can help us in the development of the project on the website: https://linux-
----------------------------------------
Changelog:
###Scripts version 2390### / Date: 23.02.2025 / Download update size: 4 megabytes
* added information that you can not use FAKE_DLSS_3 in multiplayer games
* added individual dxvk.conf file using FAKE_DLSS_3 to replace the video card in games on Nvidia RTX 4090
* added the ability to download "Cachyos Proton" (thanks Boria138)
* improved PortProton integration functions with Steam (thanks Alex2844):
- added the ability to use SteamAppId instead of the name of the game that will be added to Steam. Thus, Steam will tighten the layouts of gamepads for games. For USE_STEAMAPPID_AS_NAME (addNonSteamGame) variable is used
- added check "StateFlags" and the presence of a section "SharedDepots" in the manifest (listInstalledSteamGames)
- added caching of the list of applications received from the Steam server
###Scripts version 2389### / Date: 20.02.2025 / Download update size: 4 megabytes
* added setting USE_FAKE_DLSS_3 to apply Framegen mods to games by replacing DLSS DLL with FSR3 DLL

@ -2,6 +2,15 @@
-----------------------------------------
История изменений:
###Scripts version 2390### / Дата: 23.02.2025 / Размер скачиваемого обновления: 4 мегабайта
* добавлена информация о том что нельзя использовать FAKE_DLSS_3 в мультиплеерных играх
* добавлен индивидуальный dxvk.conf файл при использовании FAKE_DLSS_3 для подмены определения видеокарты в играх на NVIDIA RTX 4090
* добавлена возможность скачивания "CachyOS Proton" (спасибо Boria138)
* улучшены функции интеграции PortProton со Steam (спасибо alex2844):
- добавлена возможность использовать "SteamAppId" вместо названия игры которое будет добавлено в стим. Тем самым стим будет подтягивать раскладки геймпадов для игр. Для активации используется переменная USE_STEAMAPPID_AS_NAME (addNonSteamGame)
- добавлена проверка "StateFlags" и наличие секции "SharedDepots" в манифесте (listInstalledSteamGames)
- добавлено кеширование списка приложений получаемых с сервера steam. Так же поиск по этому списку теперь регистронезависимый (getSteamId)
###Scripts version 2389### / Дата: 20.02.2025 / Размер скачиваемого обновления: 4 мегабайта
* добавлена настройка USE_FAKE_DLSS_3 которая включает подмену DLSS 3 (с возможностью генерации кадров) в FSR3

@ -7,7 +7,7 @@
msgid ""
msgstr "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-20 00:55+0300\n"
"POT-Creation-Date: 2025-02-22 14:55+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -522,8 +522,8 @@ msgstr ""
msgid "Enable DLSS translator in FSR 2 in DirectX 12 games (CyberFSR2)"
msgstr ""
msgid "Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (Decky-"
"Framegen)"
msgid "Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (based "
"on Decky-Framegen) Do not use in multiplayer games"
msgstr ""
msgid "Enable Easy Anti-Cheat and BattlEye Anti-Cheat runtimes (required if "

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-20 00:55+0300\n"
"POT-Creation-Date: 2025-02-22 14:55+0300\n"
"PO-Revision-Date: 2024-11-13 08:18+0500\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -610,8 +610,8 @@ msgstr ""
#, fuzzy
msgid ""
"Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (Decky-"
"Framegen)"
"Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (based on "
"Decky-Framegen) Do not use in multiplayer games"
msgstr ""
"Habilitar el traductor de DLSS en FSR 2 en juegos DirectX 12 (CyberFSR2)"

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-20 00:55+0300\n"
"PO-Revision-Date: 2025-02-20 00:59+0300\n"
"POT-Creation-Date: 2025-02-22 14:55+0300\n"
"PO-Revision-Date: 2025-02-22 14:56+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ru_RU\n"
@ -627,12 +627,12 @@ msgstr ""
"Позволяет задействовать FSR 2 в играх с поддержкой DLSS"
msgid ""
"Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (Decky-"
"Framegen)"
"Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (based on "
"Decky-Framegen) Do not use in multiplayer games"
msgstr ""
"Включить трансляцию DLSS 3 с генерацией кадров в FSR 3 в играх на DirectX 12 "
"(Decky-Framegen). Клавиша Insert открывает окно настроек OptiScaler внутри "
"игры."
"игры. Не используйте в мультиплеерных играх"
msgid ""
"Enable Easy Anti-Cheat and BattlEye Anti-Cheat runtimes (required if game "

@ -100,23 +100,30 @@ getAppId() {
getSteamId() {
unset SteamAppId
local cache_file="${PORT_WINE_TMP_PATH:-/tmp}/steamid_cache.json"
local applist_cache_file="${PORT_WINE_TMP_PATH:-/tmp}/steamapplist_cache.json"
[[ -n "${1:-}" ]] && NOSTAPPNAME="$1"
if [[ -z "${SteamIds:-}" ]] && [[ -f "${cache_file}" ]]; then
SteamIds=$(<"${cache_file}")
fi
if [[ -n "${SteamIds:-}" ]] && jq -e --arg key "$NOSTAPPNAME" 'has($key)' <<< "${SteamIds}" > /dev/null; then
if [[ -n "${SteamIds:-}" ]] && jq -e --arg key "${NOSTAPPNAME}" 'has($key)' <<< "${SteamIds}" > /dev/null; then
SteamAppId=$(jq -r --arg key "${NOSTAPPNAME}" '.[$key]' <<< "${SteamIds}")
else
if [[ -n "${1:-}" ]] && [[ "${USE_STEABGRIDDB:-1}" == "1" ]]; then
if [[ -n "${1:-}" ]] && [[ "${USE_STEAMGRIDDB:-1}" == "1" ]]; then
getSteamGridDBId "${NOSTAPPNAME}" > /dev/null
fi
if [[ $SteamGridDBTypeSteam == true ]]; then
if [[ ${SteamGridDBTypeSteam} == true ]]; then
SRES=$(curl -Ls --connect-timeout 5 -m 10 -e "https://www.steamgriddb.com/game/${SteamGridDBId}" "https://www.steamgriddb.com/api/public/game/${SteamGridDBId}")
if jq -e ".success == true" <<< "${SRES}" > /dev/null 2>&1; then
SteamAppId="$(jq -r '.data.platforms.steam.id' <<< "${SRES}")"
fi
elif [[ "${USE_STEABGRIDDB:-1}" == "0" ]]; then
SteamAppId="$(curl -s --connect-timeout 5 -m 10 "https://api.steampowered.com/ISteamApps/GetAppList/v2/" | jq --arg name "${NOSTAPPNAME}" '.applist.apps[] | select(.name == $name) | .appid')"
elif [[ "${USE_STEAMGRIDDB:-1}" == "0" ]]; then
if [[ ! -f "${applist_cache_file}" ]] || [[ $(find "${applist_cache_file}" -mmin +1440) ]]; then
applist_data=$(curl -s --connect-timeout 5 "https://api.steampowered.com/ISteamApps/GetAppList/v2/")
[[ -n "${applist_data}" ]] && echo "${applist_data}" > "${applist_cache_file}"
else
applist_data=$(<"${applist_cache_file}")
fi
[[ -n "${applist_data}" ]] && SteamAppId=$(jq --arg name "${NOSTAPPNAME,,}" '.applist.apps[] | select(.name == $name) | .appid' <<< "${applist_data,,}")
fi
SteamIds=$(jq --arg key "${NOSTAPPNAME}" --arg value "${SteamAppId:-}" '. + {($key): $value}' <<< "${SteamIds:-$(jq -n '{}')}")
echo "${SteamIds}" > "${cache_file}"
@ -129,7 +136,7 @@ getSteamId() {
getSteamGridDBId() {
unset SteamGridDBId
NOSTAPPNAME="$1"
if [[ "${USE_STEABGRIDDB:-1}" == "1" ]] && [[ -n "${SGDBAPIKEY}" ]] && [[ -n "${BASESTEAMGRIDDBAPI}" ]] && curl -fs --connect-timeout 5 -m 10 -o /dev/null "${BASESTEAMGRIDDBAPI}"; then
if [[ "${USE_STEAMGRIDDB:-1}" == "1" ]] && [[ -n "${SGDBAPIKEY}" ]] && [[ -n "${BASESTEAMGRIDDBAPI}" ]] && curl -fs --connect-timeout 5 -m 10 -o /dev/null "${BASESTEAMGRIDDBAPI}"; then
SGDBRES=$(curl -Ls --connect-timeout 5 -m 10 -H "Authorization: Bearer ${SGDBAPIKEY}" "${BASESTEAMGRIDDBAPI}/search/autocomplete/${NOSTAPPNAME// /_}")
if jq -e ".success == true and (.data | length > 0)" <<< "${SGDBRES}" > /dev/null 2>&1; then
if jq -e '.data[0].types | contains(["steam"])' <<< "${SGDBRES}" > /dev/null; then
@ -141,7 +148,7 @@ getSteamGridDBId() {
echo "${SteamGridDBId}"
fi
else
USE_STEABGRIDDB="0"
USE_STEAMGRIDDB="0"
fi
}
@ -204,10 +211,12 @@ listInstalledSteamGames() {
jq -n '[]'
else
for manifest_file in "${manifests[@]}"; do
name="$(grep -Po '"name"\s+"\K[^"]+' "$manifest_file")";
if [[ ! "${name}" =~ ^(Proton |Steam Linux Runtime|Steamworks Common) ]]; then
name="$(grep -Po '"name"\s+"\K[^"]+' "${manifest_file}")";
stateflags="$(grep -Po '"StateFlags"\s+"\K\d+' "${manifest_file}")"
# if [[ ! "${name}" =~ ^(Proton |Steam Linux Runtime|Steamworks Common) ]]; then
if ((stateflags & 4)) && grep -q '"SharedDepots"' "${manifest_file}"; then
jq -n \
--arg id "$(grep -Po '"appid"\s+"\K\d+' "$manifest_file")" \
--arg id "$(grep -Po '"appid"\s+"\K\d+' "${manifest_file}")" \
--arg name "${name}" \
'{id: $id, name: $name}'
fi
@ -234,10 +243,21 @@ listSteamGames() {
jq -r '.[] | tostring' <<< "$(listNonSteamGames)" | while read -r game; do
id=$(jq -r '.id' <<< "${game}")
name=$(jq -r '.name' <<< "${game}")
jq -r \
--arg SteamAppId "$(getSteamId "${name}")" \
--arg SteamGameId "$(getSteamGameId $id)" \
'{AppId: .id, SteamAppId: ($SteamAppId | if . == "" then "0" else . end), SteamGameId: $SteamGameId, Name: .name} | tostring' <<< "${game}"
exe=$(jq -r '.exe' <<< "${game}")
if [[ "${name}" =~ ^[0-9]+$ ]] && [[ "${exe}" =~ .sh$ ]]; then
appid="${name}"
name=$(basename "${exe}" .sh)
else
appid="$(getSteamId "${name}")"
[[ -z "${appid}" ]] && appid="0"
fi
gid="$(getSteamGameId $id)"
jq -n \
--arg id "${id}" \
--arg appid "${appid}" \
--arg gid "${gid}" \
--arg name "${name}" \
'{AppId: $id, SteamAppId: $appid, SteamGameId: $gid, Name: $name}'
done
) | jq -s '.'
}
@ -350,8 +370,8 @@ downloadImageSteamGridDB() {
}
addGrids() {
getSteamGridDBId "${name_desktop}" > /dev/null
if [[ "${USE_STEABGRIDDB:-1}" == "0" ]]; then
[[ -z "${SteamGridDBId}" ]] && getSteamGridDBId "${name_desktop}" > /dev/null
if [[ -z "${SteamAppId}" ]] && [[ "${USE_STEAMGRIDDB:-1}" == "0" ]]; then
getSteamId > /dev/null
fi
if [[ -n "${SteamGridDBId}" ]] || [[ -n "${SteamAppId}" ]]; then
@ -474,8 +494,8 @@ addNonSteamGame() {
fi
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
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
NOSTAIDVDFHEX="$(generateShortcutVDFHexAppId "${NOSTAIDVDF}")" # 4byte little-endian hexidecimal of above 32bit signed integer, which we write out to the binary VDF - ex: c1c25adc
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}"
cat <<-EOF > "${NOSTSHPATH}"
@ -491,9 +511,15 @@ addNonSteamGame() {
cp "${SCPATH}" "${SCPATH//.vdf}_${PROGNAME}_backup.vdf" 2>/dev/null
fi
if [[ "${USE_STEAMAPPID_AS_NAME:-0}" == "1" ]]; then
SteamAppId=$(getSteamId "${NOSTAPPNAME}")
[[ -n "${SteamAppId}" ]] && NOSTAPPNAME="${SteamAppId}"
fi
addEntry
if [[ "${DOWNLOAD_STEAM_GRID}" == "1" ]] ; then
NOSTAPPNAME="${name_desktop}"
pw_start_progress_bar_block "${translations[Please wait. downloading covers for]} ${NOSTAPPNAME}"
addGrids
pw_stop_progress_bar

@ -2,6 +2,7 @@
# Author: Castro-Fidel (linux-gaming.ru)
# shellcheck disable=SC2034
########################################################################
$PW_DEBUG
print_error () { printf "\E[31m%s Error: $@ %s\e[0m\n" ;}
export -f print_error
@ -3160,6 +3161,7 @@ start_portwine () {
export GST_PLUGIN_SYSTEM_PATH_1_0="${WINEDIR}/lib64/gstreamer-1.0:${WINEDIR}/lib/gstreamer-1.0"
fi
export GST_GL_WINDOW="surfaceless"
unset GST_GL_WINDOW
create_new_dir "${PORT_WINE_TMP_PATH}/gstreamer_tmp"
export WINE_GST_REGISTRY_DIR="${PORT_WINE_TMP_PATH}/gstreamer_tmp"
@ -3181,7 +3183,7 @@ start_portwine () {
if [[ "${PW_LOG}" == 1 ]] \
|| [[ -n "$PW_DEBUG" ]]
then
check_variables WINEDEBUG "+loaddll,+dll"
check_variables WINEDEBUG "err+all"
check_variables WINE_MONO_TRACE "E:System.NotImplementedException"
check_variables VKBASALT_LOG_LEVEL "error"
else
@ -3350,7 +3352,7 @@ start_portwine () {
# NVAPI, DLSS AND FAKE DLSS
FAKE_DLSS_3_PATH="$PW_PLUGINS_PATH/fake_dlss/DeckyFramegen_$PW_FAKE_DLSS_3_VER/bin/"
FAKE_DLSS_3_FILES="amd_fidelityfx_dx12.dll amd_fidelityfx_vk.dll d3dcompiler_47.dll dlss-enabler.dll
dlss-enabler-upscaler.dll dlssg_to_fsr3_amd_is_better-3.0.dll dlssg_to_fsr3_amd_is_better.dll
dlss-enabler-upscaler.dll dlssg_to_fsr3_amd_is_better-3.0.dll dlssg_to_fsr3_amd_is_better.dll dxvk.conf
dlssg_to_fsr3.ini fakenvapi.ini libxess.dll nvapi64.dll _nvngx.dll nvngx.ini nvngx-wrapper.dll dxgi.dll"
ORIGINAL_GAME_DLLS="d3dcompiler_47.dll amd_fidelityfx_dx12.dll amd_fidelityfx_vk.dll libxess.dll nvapi64.dll _nvngx.dll"
PATH_TO_GAME_EXEC="$PATH_TO_GAME"
@ -3409,6 +3411,10 @@ start_portwine () {
for rm_dll in "nvngx.ini" "nvngx.dll" "_nvngx.dll" ; do
try_remove_file "${WINEPREFIX}/drive_c/windows/system32/$rm_dll"
done
if [[ -f "$PATH_TO_GAME_EXEC/dxvk.conf" ]] ; then
export DXVK_CONFIG_FILE="$PATH_TO_GAME_EXEC/dxvk.conf"
fi
elif [[ "${PW_USE_FAKE_DLSS}" == "1" ]] ; then
DXVK_ENABLE_NVAPI="1"
try_remove_file "${WINEPREFIX}/drive_c/windows/system32/_nvngx.dll"
@ -4163,10 +4169,6 @@ start_portwine () {
fi
add_in_start_portwine
if [[ -f "${PATH_TO_GAME}/dxvk.conf" ]] ; then
export DXVK_CONFIG_FILE="${PATH_TO_GAME}/dxvk.conf"
fi
if [[ "$LANGUAGE" == ru ]] ; then
for chk_lang_and_uname in "steam_emu.ini" "steam_api.ini" "steam_api64.ini" "SteamConfig.ini" ; do
if [[ -f "${PATH_TO_GAME}/${chk_lang_and_uname}" ]] ; then
@ -4819,6 +4821,7 @@ gui_proton_downloader () {
unset VERSION_WINE_GIT VERSION_INSTALLED_WINE URL_VERSION_PROTON_GIT GIVE_WINE_URL
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_pw_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_cachyos_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_ge_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_installed_wine"
@ -4875,6 +4878,15 @@ gui_proton_downloader () {
done
sed -i -e "/${PW_WINE_LG_VER}/d" -e '/plugins/d' -e '/^$/d' "${PW_TMPFS_PATH}/tmp_proton_pw_git"
fi
# PROTON_CACHYOS
read -r -d '' -a PROTON_CACHYOS_GIT < <(curl -s "https://api.github.com/repos/CachyOS/proton-cachyos/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4 | grep -v "v3" | grep -v "znver4")
if [[ -n "${PROTON_CACHYOS_GIT[0]}" ]] ; then
for PGEGIT in "${PROTON_CACHYOS_GIT[@]}" ; do
echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_proton_cachyos_git"
done
fi
pw_stop_progress_bar
if [[ -z "${PROTON_PW_GIT}" ]] ; then
@ -4886,7 +4898,7 @@ gui_proton_downloader () {
for INSTALLING_VERSION_IN_DIST in * ; do
sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PW_TMPFS_PATH}/tmp_proton_pw_git" \
"${PW_TMPFS_PATH}/tmp_proton_ge_git" "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" \
"${PW_TMPFS_PATH}/tmp_wine_ge_custom_git"
"${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" "${PW_TMPFS_PATH}/tmp_proton_cachyos_git"
done
popd 1>/dev/null || fatal
@ -4894,6 +4906,7 @@ gui_proton_downloader () {
TMP_PROTON_GE_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_ge_git" | tr '\n' ' ')"
TMP_PROTON_KR_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" | tr '\n' ' ')"
TMP_PROTON_CU_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" | tr '\n' ' ')"
TMP_PROTON_CACHYOS_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" | tr '\n' ' ')"
ls -l ${PORT_WINE_PATH}/data/dist | awk '{print $9}' | sed -e "/$PW_PROTON_LG_VER/d" -e "/$PW_WINE_LG_VER/d" -e '/^$/d' 1>"${PW_TMPFS_PATH}/tmp_installed_wine"
TMP_INSTALLED_WINE="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_installed_wine" | tr '\n' ' ')"
@ -4937,6 +4950,14 @@ gui_proton_downloader () {
"${pw_yad}" --plug=$KEY_WINE --tabnum=5 --list --checklist --separator="" \
--gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" --gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" \
--column "${translations[Set]}" \
--column "${translations[Select WINE for download:]}" \
$TMP_PROTON_CACHYOS_GIT \
1>> "${PW_TMPFS_PATH}/tmp_set_wine" \
2>/dev/null &
"${pw_yad}" --plug=$KEY_WINE --tabnum=6 --list --checklist --separator="" \
--gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" --gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" \
--column "${translations[Set]}" \
--column "${translations[Select installed WINE for delete:]}" \
$TMP_INSTALLED_WINE \
1> "${PW_TMPFS_PATH}/tmp_installed_wine_set" \
@ -4950,6 +4971,7 @@ gui_proton_downloader () {
--tab="WINE-KRON4EK!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="PROTON-GE!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="WINE-GE-CUSTOM!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="PROTON-CACHYOS!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="${translations[INSTALLED]}!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--button="${translations[CANCEL]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!":1 \
--button="${translations[OK]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!":0 2>/dev/null
@ -5020,7 +5042,7 @@ gui_proton_downloader () {
if [[ "$1" != "silent" ]] ; then
for GIVE_ALL_WINE in ${VERSION_WINE_GIT} ; do
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" ; do
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" ; do
if [[ ${GIVE_WINE_URL^^} =~ ${GIVE_ALL_WINE^^} ]] ; then
export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL
fi
@ -5031,7 +5053,7 @@ gui_proton_downloader () {
restart_pp
else
print_error "$PW_WINE_USE"
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" ; do
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" ; do
if [[ ${GIVE_WINE_URL^^} =~ ${PW_WINE_USE^^} ]] ; then
export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL
fi
@ -5093,7 +5115,7 @@ gui_edit_db () {
PW_USE_SHADER_CACHE_INFO=${translations[Use WINE shader caching (disable only if there are microfreezes in the game)]}
PW_WINE_FULLSCREEN_FSR_INFO=${translations[Works while using any version of ProtonGE in full screen mode at a resolution below the standard screen]}
PW_USE_FAKE_DLSS_INFO=${translations[Enable DLSS translator in FSR 2 in DirectX 12 games (CyberFSR2)]}
PW_USE_FAKE_DLSS_3_INFO=${translations[Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (Decky-Framegen)]}
PW_USE_FAKE_DLSS_3_INFO=${translations[Enable DLSS 3 with FG translator in FSR 3 in DirectX 12 games (based on Decky-Framegen) Do not use in multiplayer games]}
PW_USE_EAC_AND_BE_INFO=${translations[Enable Easy Anti-Cheat and BattlEye Anti-Cheat runtimes (required if game used this anti-cheats)]}
PW_REDUCE_PULSE_LATENCY_INFO=${translations[Reduce pulseaudio latency to fix intermittent sound]}
PW_USE_US_LAYOUT_INFO=${translations[Forced use of the us layout (useful for games in which the control works correctly only on the us layout)]}

@ -1,6 +1,6 @@
#!/usr/bin/env bash
#Author: Castro-Fidel (linux-gaming.ru)
#SCRIPTS_NEXT_VERSION=2389
#SCRIPTS_NEXT_VERSION=2390
#SCRIPTS_STABLE_VERSION=2388
########################################################################
export AI_TOP_GAMES="PW_LGC PW_VKPLAY PW_EPIC PW_BATTLE_NET PW_WORLD_OF_SEA_BATTLE PW_RUSSIAN_FISHING PW_HO_YO_PLAY PW_FARLIGHT84 PW_WARFRAME PW_WGC PW_UBISOFT"