Compare commits

..

16 Commits

10 changed files with 404 additions and 202 deletions

View File

@ -2,6 +2,15 @@ You can help us in the development of the project on the website: https://linux-
---------------------------------------- ----------------------------------------
Changelog: Changelog:
###Scripts version 2370### / Date: 01.11.2024 / Download update size: 215 megabytes
* updated PROTON_LG to version "9-18"
* updated versions:
* DXVK_GIT "2.4.1-393" (shared with dxvk-nvapi)
* VKD3D_GIT "1.1-4240" (shared with vkd3d-shader)
* improved function of adding shortcuts to steam (thanks alex2844)
* updated --help argument for CLI and added translations (thanks to Htylol)
* added the ability to change interface scaling in running applications (thanks to Htylol)
###Scripts version 2369### / Date: 31.10.2024 / Download update size: 4 megabytes ###Scripts version 2369### / Date: 31.10.2024 / Download update size: 4 megabytes
* added automatic installation of games (thanks to Chal55rus): * added automatic installation of games (thanks to Chal55rus):
* Chicken Invaders Universe * Chicken Invaders Universe

View File

@ -2,6 +2,15 @@
----------------------------------------- -----------------------------------------
История изменений: История изменений:
###Scripts version 2370### / Дата: 01.11.2024 / Размер скачиваемого обновления: 215 мегабайт
* обновлен PROTON_LG до версии "9-18"
* обновлены версии:
* DXVK_GIT "2.4.1-393" (совместно с dxvk-nvapi)
* VKD3D_GIT "1.1-4240" (совместно vkd3d-shader)
* улучшена функция добавления ярлыков в steam (спасибо alex2844)
* обновлен аргумент --help для CLI и добавлены переводы (спасибо Htylol)
* добавлена возможность изменять масштабирование инетрфейса в запущенных приложениях (спасибо Htylol)
###Scripts version 2369### / Дата: 31.10.2024 / Размер скачиваемого обновления: 4 мегабайта ###Scripts version 2369### / Дата: 31.10.2024 / Размер скачиваемого обновления: 4 мегабайта
* добавлены автоустановки игр (спасибо Chal55rus): * добавлены автоустановки игр (спасибо Chal55rus):
* Chicken Invaders Universe * Chicken Invaders Universe

View File

@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "Project-Id-Version: PACKAGE VERSION\n" msgstr "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-26 06:41+0500\n" "POT-Creation-Date: 2024-11-01 02:46+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -1388,6 +1388,12 @@ msgid "Select which video card will be used to run the game (used for all "
"running games and programs in PortProton)" "running games and programs in PortProton)"
msgstr "" msgstr ""
msgid "Force dpi for fonts"
msgstr ""
msgid "Here you can set forced dpi for fonts in wine"
msgstr ""
msgid "Choice wine audio driver" msgid "Choice wine audio driver"
msgstr "" msgstr ""
@ -1676,3 +1682,38 @@ msgstr ""
msgid "Please wait. downloading covers for" msgid "Please wait. downloading covers for"
msgstr "" msgstr ""
msgid "use"
msgstr ""
msgid "Forces all scripts to be updated to a working state\n"
" (helps if "
"PortProton is not working)"
msgstr ""
msgid "Reinstalls PortProton and resets all settings to default"
msgstr ""
msgid "Creates a files with translations .pot and .po"
msgstr ""
msgid "Debug scripts for PortProton\n"
" (saved log in"
msgstr ""
msgid "Check update scripts for PortProton"
msgstr ""
msgid "Launches the application immediately, requires the path to the .exe "
"file"
msgstr ""
msgid "After the variable, the path to the .exe file is required and then "
"the variables.\n"
" (List their "
"variables and values for example PW_MANGOHUD=1 PW_VKBASALT=0, etc.)"
msgstr ""
msgid "--autoinstall and the name of what needs to be installed is given in "
"the list below:"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-26 06:41+0500\n" "POT-Creation-Date: 2024-11-01 02:43+0500\n"
"PO-Revision-Date: 2024-10-26 13:58+0500\n" "PO-Revision-Date: 2024-10-26 13:58+0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -1814,6 +1814,12 @@ msgstr ""
"Selecciona qué tarjeta de vídeo se utilizará para ejecutar el juego (se " "Selecciona qué tarjeta de vídeo se utilizará para ejecutar el juego (se "
"utiliza para todos los juegos y programas en ejecución en PortProton)" "utiliza para todos los juegos y programas en ejecución en PortProton)"
msgid "Force dpi for fonts"
msgstr ""
msgid "Here you can set forced dpi for fonts in wine"
msgstr ""
msgid "Choice wine audio driver" msgid "Choice wine audio driver"
msgstr "Controlador de audio de vino elegido" msgstr "Controlador de audio de vino elegido"
@ -2175,6 +2181,47 @@ msgstr ""
msgid "Please wait. downloading covers for" msgid "Please wait. downloading covers for"
msgstr "Por favor, espera. Descargando portadas para" msgstr "Por favor, espera. Descargando portadas para"
msgid "use"
msgstr ""
msgid ""
"Forces all scripts to be updated to a working state\n"
" (helps if PortProton is "
"not working)"
msgstr ""
#, fuzzy
msgid "Reinstalls PortProton and resets all settings to default"
msgstr "Restaurar configuraciones predeterminadas"
msgid "Creates a files with translations .pot and .po"
msgstr ""
msgid ""
"Debug scripts for PortProton\n"
" (saved log in"
msgstr ""
#, fuzzy
msgid "Check update scripts for PortProton"
msgstr "Espere la actualización PortProton"
msgid ""
"Launches the application immediately, requires the path to the .exe file"
msgstr ""
msgid ""
"After the variable, the path to the .exe file is required and then the "
"variables.\n"
" (List their variables "
"and values for example PW_MANGOHUD=1 PW_VKBASALT=0, etc.)"
msgstr ""
msgid ""
"--autoinstall and the name of what needs to be installed is given in the "
"list below:"
msgstr ""
#~ msgid "" #~ msgid ""
#~ "A higher number of duplicate desktop files were found for this file." #~ "A higher number of duplicate desktop files were found for this file."
#~ "\\nShould I delete the extra ones or not?" #~ "\\nShould I delete the extra ones or not?"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-26 06:41+0500\n" "POT-Creation-Date: 2024-11-01 02:43+0500\n"
"PO-Revision-Date: 2024-10-26 06:43+0500\n" "PO-Revision-Date: 2024-11-01 02:44+0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: ru_RU\n" "Language: ru_RU\n"
@ -1792,6 +1792,13 @@ msgstr ""
"Выбор видеокарты для запуска игры (используется для всех запущенных игр и " "Выбор видеокарты для запуска игры (используется для всех запущенных игр и "
"программ в PortProton)" "программ в PortProton)"
msgid "Force dpi for fonts"
msgstr "Принудительное разрешение шрифтов"
msgid "Here you can set forced dpi for fonts in wine"
msgstr ""
"Здесь вы можете установить принудительное разрешение для шрифтов в Wine"
msgid "Choice wine audio driver" msgid "Choice wine audio driver"
msgstr "Выбрать звуковой драйвер" msgstr "Выбрать звуковой драйвер"
@ -2161,6 +2168,55 @@ msgstr "SteamGridDB не отвечает, принудительно отклю
msgid "Please wait. downloading covers for" msgid "Please wait. downloading covers for"
msgstr "Пожалуйста, подождите. Загрузка обложек для" msgstr "Пожалуйста, подождите. Загрузка обложек для"
msgid "use"
msgstr "использовать"
msgid ""
"Forces all scripts to be updated to a working state\n"
" (helps if PortProton is "
"not working)"
msgstr ""
"Принудительно обновляет все скрипты до рабочего состояния.\n"
" (помогает, если "
"PortProton не работает)"
msgid "Reinstalls PortProton and resets all settings to default"
msgstr "Переустанавливает PortProton и сбрасывает все настройки по умолчанию"
msgid "Creates a files with translations .pot and .po"
msgstr "Создает файлы с переводами .pot и .po"
msgid ""
"Debug scripts for PortProton\n"
" (saved log in"
msgstr ""
"Скрипты отладки для PortProton\n"
" (сохраняет лог в"
msgid "Check update scripts for PortProton"
msgstr "Проверьте скрипты обновления для PortProton"
msgid ""
"Launches the application immediately, requires the path to the .exe file"
msgstr "Запускает приложение сразу, требует путь к exe-файлу"
msgid ""
"After the variable, the path to the .exe file is required and then the "
"variables.\n"
" (List their variables "
"and values for example PW_MANGOHUD=1 PW_VKBASALT=0, etc.)"
msgstr ""
"После переменной необходимо указать путь к файлу .exe, а затем переменные.\n"
" (Перечислите их "
"переменные и значения, например PW_MANGOHUD=1 PW_VKBASALT=0 и т. д.)"
msgid ""
"--autoinstall and the name of what needs to be installed is given in the "
"list below:"
msgstr ""
"--autoinstall и название того, что необходимо установить, указано в списке "
"ниже:"
#~ msgid "" #~ msgid ""
#~ "A higher number of duplicate desktop files were found for this file." #~ "A higher number of duplicate desktop files were found for this file."
#~ "\\nShould I delete the extra ones or not?" #~ "\\nShould I delete the extra ones or not?"

View File

@ -1,8 +1,7 @@
#!/bin/bash #!/usr/bin/env bash
# GPL-3.0 license # GPL-3.0 license
# based on https://github.com/sonic2kk/steamtinkerlaunch/blob/master/steamtinkerlaunch # based on https://github.com/sonic2kk/steamtinkerlaunch/blob/master/steamtinkerlaunch
PROGNAME="PortProton" PROGNAME="PortProton"
name_desktop_png="${name_desktop// /_}"
NOSTAPPNAME="$name_desktop" NOSTAPPNAME="$name_desktop"
NOSTEXEPATH="\"${STEAM_SCRIPTS}/${name_desktop}.sh\"" NOSTEXEPATH="\"${STEAM_SCRIPTS}/${name_desktop}.sh\""
# NOSTSTDIR="\"${PATH_TO_GAME}\"" # NOSTSTDIR="\"${PATH_TO_GAME}\""

View File

@ -200,28 +200,17 @@ change_locale () {
export -f change_locale export -f change_locale
generate_pot () { generate_pot () {
sed 's/{translations\[/(gettext \"/g' functions_helper > functions_helper_tmp local FILES_FOR_GETTEXT i
sed -i 's/]}/")/g' functions_helper_tmp FILES_FOR_GETTEXT=(functions_helper start.sh setup.sh add_in_steam.sh help_info)
sed -i 's/eval_translations/gettext/g' functions_helper_tmp for i in ${FILES_FOR_GETTEXT[@]} ; do
sed 's/{translations\[/(gettext \"/g' "${PORT_SCRIPTS_PATH}/$i" > "${PORT_SCRIPTS_PATH}/${i}_tmp"
sed 's/{translations\[/(gettext \"/g' start.sh > start.sh_tmp sed -i 's/]}/")/g' "${PORT_SCRIPTS_PATH}/${i}_tmp"
sed -i 's/]}/")/g' start.sh_tmp sed -i 's/eval_translations/gettext/g' "${PORT_SCRIPTS_PATH}/${i}_tmp"
sed -i 's/eval_translations/gettext/g' start.sh_tmp done
sed 's/{translations\[/(gettext \"/g' setup.sh > setup.sh_tmp
sed -i 's/]}/")/g' setup.sh_tmp
sed -i 's/eval_translations/gettext/g' setup.sh_tmp
sed 's/{translations\[/(gettext \"/g' add_in_steam.sh > add_in_steam.sh_tmp
sed -i 's/]}/")/g' add_in_steam.sh_tmp
sed -i 's/eval_translations/gettext/g' add_in_steam.sh_tmp
#Когда присходит предупреждение: синтаксис $"..." запрещен по соображениям безопасности; используйте eval_gettext #Когда присходит предупреждение: синтаксис $"..." запрещен по соображениям безопасности; используйте eval_gettext
#и ругается на строку в которой нет перевода, можно использовать sed -i '//d' и убрать эту строку #и ругается на строку в которой нет перевода, можно использовать sed -i '//d' и убрать эту строку
#либо отредактировать сам код, чтобы не было такой ошибки (к примеру вместо двойных ковычек использовать в таком месте одинарные) #либо отредактировать сам код, чтобы не было такой ошибки (к примеру вместо двойных ковычек использовать в таком месте одинарные)
for lang in $LANGUAGES_LIST ; do
for lang in $LANGUAGES_LIST
do
echo "${lang}" echo "${lang}"
create_new_dir "${PORT_WINE_PATH}/data/locales/${lang}/LC_MESSAGES/" create_new_dir "${PORT_WINE_PATH}/data/locales/${lang}/LC_MESSAGES/"
LANG_PO="${PORT_WINE_PATH}/data/locales/${lang}/LC_MESSAGES/PortProton.po" LANG_PO="${PORT_WINE_PATH}/data/locales/${lang}/LC_MESSAGES/PortProton.po"
@ -233,6 +222,7 @@ generate_pot () {
"data/scripts/setup.sh_tmp" \ "data/scripts/setup.sh_tmp" \
"data/scripts/functions_helper_tmp" \ "data/scripts/functions_helper_tmp" \
"data/scripts/add_in_steam.sh_tmp" \ "data/scripts/add_in_steam.sh_tmp" \
"data/scripts/help_info_tmp" \
-o "$TEMPLATE_POT" -o "$TEMPLATE_POT"
popd 1>/dev/null || fatal popd 1>/dev/null || fatal
if [[ -f "$LANG_PO" ]] ; then if [[ -f "$LANG_PO" ]] ; then
@ -248,6 +238,7 @@ generate_pot () {
try_remove_file "${PORT_SCRIPTS_PATH}/setup.sh_tmp" try_remove_file "${PORT_SCRIPTS_PATH}/setup.sh_tmp"
try_remove_file "${PORT_SCRIPTS_PATH}/functions_helper_tmp" try_remove_file "${PORT_SCRIPTS_PATH}/functions_helper_tmp"
try_remove_file "${PORT_SCRIPTS_PATH}/add_in_steam.sh_tmp" try_remove_file "${PORT_SCRIPTS_PATH}/add_in_steam.sh_tmp"
try_remove_file "${PORT_SCRIPTS_PATH}/help_info_tmp"
try_remove_dir "${PW_CACHE_LANG_PATH}" try_remove_dir "${PW_CACHE_LANG_PATH}"
} }
export -f generate_pot export -f generate_pot
@ -1275,6 +1266,86 @@ combobox_fix () {
fi fi
} }
get_and_set_reg_file () {
local name_block name_for_find find_block find_file find_line count name_for_new_block
local line_reg find_number_line find_check_file name_for_set name_block_old
name_block=$2
name_block_old=$name_block
name_for_find=$3
name_for_set=$4
name_for_new_block=$5
name_block=${name_block//\\/\\\\}
name_block=${name_block//\[/\\[}
find_block=$(grep -n "${name_block//\]/\\]}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/"*.reg)
if [[ -n $find_block ]] ; then
find_file=${find_block//:*/}
find_line=${find_block//$find_file:/}
find_line=${find_line//:*/}
count=-1
while IFS= read -r line_reg ; do
((count++))
if [[ $line_reg =~ $name_for_find ]] ; then
find_number_line=$(( count + find_line ))
find_check_file=1
break
fi
[[ -z $line_reg ]] && break
done <<< $(sed -n "$find_line"',$p' $find_file)
IFS="$orig_IFS"
fi
if [[ $1 == --add ]] ; then
if [[ -z $find_block ]] ; then
if [[ -n $name_for_new_block ]] ; then
sed -i '$a\\n'"${name_block_old//\\/\\\\}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg"
find_file=${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg
find_line=$(wc -l "$find_file" | awk -F" " '{print $1}')
find_line=$(( find_line - 1 ))
else
print_error "$name_block_old not found in reg files"
return 1
fi
fi
if [[ $name_for_set =~ ^[0-9]+$ ]] ; then
name_for_set=$(convert_dec_and_hex --dec "$name_for_set")
fi
if [[ ! $name_for_set =~ ^[0-9]+$ ]] ; then
if [[ $find_check_file == 1 ]] ; then
sed -i "${find_number_line}s/$name_for_find.*/$name_for_find\"$name_for_set\"/" "$find_file"
else
print_info "Added ${name_for_find//=*} to reg file"
sed -i "$(( find_line + 1 ))"'a\\n'"$name_for_find\"$name_for_set\"" "$find_file"
fi
else
if [[ $find_check_file == 1 ]] ; then
sed -i "${find_number_line}s/$name_for_find.*/$name_for_find$name_for_set/" "$find_file"
else
print_info "Added ${name_for_find//=*} to reg file"
sed -i "$(( find_line + 1 ))"'a\\n'"$name_for_find$name_for_set" "$find_file"
fi
fi
elif [[ $1 == --delete ]] ; then
[[ $find_check_file != 1 ]] && return 0
print_info "Delete ${name_for_find//=*} to reg file"
sed -i "${find_number_line}d" "$find_file"
fi
}
convert_dec_and_hex () {
local type=$1
local num=$2
case "$type" in
--dec)
# Преобразование из десятичного в шестнадцатеричный
echo -n $(printf "%08x" $num) ;;
--hex)
# Преобразование из шестнадцатеричного в десятичный
echo $(( 0x$num )) ;;
*)
echo "Неверный тип преобразования. Используйте --dec или --hex." ;;
esac
}
restart_pp () { restart_pp () {
case "$1" in case "$1" in
--userconf) export RESTART_PP_USED="userconf" ;; --userconf) export RESTART_PP_USED="userconf" ;;
@ -1644,7 +1715,7 @@ regdlloverrides () {
wait_wineserver () { wait_wineserver () {
while ls -l /proc/*/exe >/dev/null 2>&1 | grep -ie PortProton | grep -E 'wine(64)?-preloader|wineserver' while ls -l /proc/*/exe >/dev/null 2>&1 | grep -ie PortProton | grep -E 'wine(64)?-preloader|wineserver'
do do
sleep 1 sleep 0.1
done done
"$WINESERVER" -w "$WINESERVER" -w
return 0 return 0
@ -2454,7 +2525,7 @@ pw_check_command () {
unset TIMEOUT_CMD unset TIMEOUT_CMD
return 1 return 1
else else
print_info "$S_CMD - found" # print_info "$S_CMD - found"
unset TIMEOUT_CMD unset TIMEOUT_CMD
return 0 return 0
fi fi
@ -2690,7 +2761,7 @@ pw_find_exe () {
pw_stop_progress_bar pw_stop_progress_bar
unset FIND_TO_GUI unset FIND_TO_GUI
while read line; do while read -r line; do
FIND_TO_GUI+="${line}%" FIND_TO_GUI+="${line}%"
done < "${PW_TMPFS_PATH}/tmp_yad_find_exe" done < "${PW_TMPFS_PATH}/tmp_yad_find_exe"
@ -3681,93 +3752,39 @@ start_portwine () {
echo "Set to win${PW_WINDOWS_VER}" echo "Set to win${PW_WINDOWS_VER}"
fi fi
if [[ "${portwine_exe}" == *-Shipping.exe ]] ; then if [[ "$portwine_exe" == *-Shipping.exe ]] ; then
echo "Disable EAC" echo "Disable EAC"
[[ -z "${LAUNCH_PARAMETERS}" ]] && export LAUNCH_PARAMETERS+=" -eac-nop-loaded " [[ -z "$LAUNCH_PARAMETERS" ]] && export LAUNCH_PARAMETERS+=" -eac-nop-loaded "
fi fi
HIDRAW_VAR="$(grep "DisableHidraw" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg")" if [[ "$PW_DINPUT_PROTOCOL" == "1" ]] ; then
SDL_VAR="$(grep "Enable SDL" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg")" get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "0"
if [[ "${PW_DINPUT_PROTOCOL}" == "1" ]] ; then get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "0"
if [[ "$HIDRAW_VAR" ]] \
&& [[ "$SDL_VAR" ]]
then
if [[ "${HIDRAW_VAR: -1}" != "0" ]] ; then
sed -i "s/${HIDRAW_VAR}/${HIDRAW_VAR%?}0/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg"
fi
if [[ "${SDL_VAR: -1}" != "0" ]] ; then
sed -i "s/${SDL_VAR}/${SDL_VAR%?}0/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg"
fi
else
print_info "Added DisableHidraw = 0 to reg file"
${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
"${WINELOADER}" reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus" /v "DisableHidraw" /t REG_DWORD /d 0 /f
print_info "Added Enable SDL = 0 to reg file"
${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
"${WINELOADER}" reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus" /v "Enable SDL" /t REG_DWORD /d 0 /f
fi
else else
# var_winedlloverride_update "xinput1_1,xinput1_2,xinput1_3,xinput9_1_0=b" get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "1"
get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "1"
if [[ "$HIDRAW_VAR" ]] \
&& [[ "$SDL_VAR" ]]
then
if [[ "${HIDRAW_VAR: -1}" != "1" ]] ; then
sed -i "s/${HIDRAW_VAR}/${HIDRAW_VAR%?}1/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg"
fi
if [[ "${SDL_VAR: -1}" != "1" ]] ; then
sed -i "s/${SDL_VAR}/${SDL_VAR%?}1/" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg"
fi
else
print_info "Added DisableHidraw = 1 to reg file"
${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
"${WINELOADER}" reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus" /v "DisableHidraw" /t REG_DWORD /d 1 /f
print_info "Added Enable SDL = 1 to reg file"
${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
"${WINELOADER}" reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus" /v "Enable SDL" /t REG_DWORD /d 1 /f
fi
fi fi
WINE_WAYLAND_VAR="$(grep "x11,wayland" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg")" if [[ "$PW_WINE_DPI_VALUE" != "disabled" ]] ; then
if [[ "${PW_USE_NATIVE_WAYLAND}" == "1" ]] ; then get_and_set_reg_file --add '[Control Panel\\Desktop]' '"LogPixels"=dword:' "${PW_WINE_DPI_VALUE// (*/}"
if [[ ! "$WINE_WAYLAND_VAR" ]] ; then fi
print_info "Enable experimental Wayland support"
${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ if [[ "$PW_USE_NATIVE_WAYLAND" == "1" ]] ; then
"${WINELOADER}" reg add "HKEY_CURRENT_USER\Software\Wine\Drivers" /v "Graphics" /t REG_SZ /d "x11,wayland" /f
fi
export PW_DISPLAY="env DISPLAY=" export PW_DISPLAY="env DISPLAY="
export PW_USE_RUNTIME="0" export PW_USE_RUNTIME="0"
get_and_set_reg_file --add '[Software\\Wine\\Drivers]' '"Graphics"=' "x11,wayland" "user"
else else
unset PW_DISPLAY unset PW_DISPLAY
if [[ "$WINE_WAYLAND_VAR" ]] ; then get_and_set_reg_file --delete '[Software\\Wine\\Drivers]' '"Graphics"=' "x11,wayland"
print_info "Disable experimental Wayland support"
${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
"${WINELOADER}" reg delete "HKEY_CURRENT_USER\Software\Wine\Drivers" /v Graphics /f
fi
fi fi
if [[ "${PW_SOUND_DRIVER_USE}" != "disabled" ]] \ if [[ "$PW_SOUND_DRIVER_USE" != "disabled" ]] ; then
&& grep -v "\"Audio\"=\"$PW_SOUND_DRIVER_USE\"" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg" &>/dev/null get_and_set_reg_file --add '[Software\\Wine\\Drivers]' '"Audio"=' "$PW_SOUND_DRIVER_USE" "user"
then
if grep "\"Audio\"=" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg" &>/dev/null ; then
sed -i 's/"Audio"=".*"/"Audio"="'${PW_SOUND_DRIVER_USE}'"/' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg"
else
echo -e '\n[Software\\Wine\\Drivers]\n"Audio"="'${PW_SOUND_DRIVER_USE}'"' >> "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg"
fi
kill_portwine
elif [[ "${PW_SOUND_DRIVER_USE}" == "disabled" ]] \
&& grep -v "\"Audio\"=" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg" &>/dev/null
then
sed -i '/\[Software\\Wine\\Drivers\]/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg" &>/dev/null
sed -i "/\"Audio\"=/d" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg" &>/dev/null
fi fi
pw_stop_progress_bar pw_stop_progress_bar
if ! check_start_from_steam ; then if ! check_start_from_steam ; then
pw_tray_icon pw_tray_icon
sleep 0.5
fi fi
if [[ "${PW_CHECK_AUTOINSTALL}" != "1" ]] ; then if [[ "${PW_CHECK_AUTOINSTALL}" != "1" ]] ; then
@ -4370,8 +4387,6 @@ pw_tray_icon () {
PW_GUI_TRAY_PATH="${PW_GUI_THEMES_PATH}/tray" PW_GUI_TRAY_PATH="${PW_GUI_THEMES_PATH}/tray"
env LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" "${PW_GUI_TRAY_PATH}/tray_gui_pp" & env LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" "${PW_GUI_TRAY_PATH}/tray_gui_pp" &
fi fi
return 0
} }
# GUI GET OTHER WINE # GUI GET OTHER WINE
@ -5564,41 +5579,50 @@ gui_userconf () {
--field=" $NEW_STEAM_BEHAVIOR ${translations[steam covers download]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"${translations[If downloading steam covers is enabled, they will be downloaded and created. (Disablement is provided in cases where their downloading is unavailable for some reason)]}":"FBTN" '@bash -c "button_click --userconf change_download_grid"' \ --field=" $NEW_STEAM_BEHAVIOR ${translations[steam covers download]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"${translations[If downloading steam covers is enabled, they will be downloaded and created. (Disablement is provided in cases where their downloading is unavailable for some reason)]}":"FBTN" '@bash -c "button_click --userconf change_download_grid"' \
2>/dev/null & 2>/dev/null &
if [[ -n "${PW_SOUND_DRIVER_USE}" ]] \ if [[ -n "$PW_SOUND_DRIVER_USE" ]] \
&& [[ "${PW_SOUND_DRIVER_USE}" != "disabled" ]] && [[ "$PW_SOUND_DRIVER_USE" != "disabled" ]]
then then
SOUND_DRIVER_VAR="${PW_SOUND_DRIVER_USE}" SOUND_DRIVER_VAR="$PW_SOUND_DRIVER_USE"
else else
SOUND_DRIVER_VAR="disabled" SOUND_DRIVER_VAR="disabled"
fi fi
if [[ -n "${PW_GPU_USE}" ]] \ if [[ -n "$PW_GPU_USE" ]] \
&& [[ "${PW_GPU_USE}" != "disabled" ]] && [[ "$PW_GPU_USE" != "disabled" ]]
then then
GPU_VAR="${PW_GPU_USE}" GPU_VAR="$PW_GPU_USE"
else else
GPU_VAR="disabled" GPU_VAR="disabled"
fi fi
if [[ -n "${DESKTOP_WITH_TIME}" ]] \ if [[ -n "$DESKTOP_WITH_TIME" ]] \
&& [[ "${DESKTOP_WITH_TIME}" != "disabled" ]] && [[ "$DESKTOP_WITH_TIME" != "disabled" ]]
then then
DESKTOP_WITH_TIME="enabled" DESKTOP_WITH_TIME="enabled"
else else
DESKTOP_WITH_TIME="disabled" DESKTOP_WITH_TIME="disabled"
fi fi
if [[ -n "${SORT_WITH_TIME}" ]] \ if [[ -n "$SORT_WITH_TIME" ]] \
&& [[ "${SORT_WITH_TIME}" == "disabled" ]] && [[ "$SORT_WITH_TIME" == "disabled" ]]
then then
SORT_WITH_TIME="disabled" SORT_WITH_TIME="disabled"
else else
SORT_WITH_TIME="enabled" SORT_WITH_TIME="enabled"
fi fi
"${pw_yad}" --plug=$KEY_USERCONF_GUI --tabnum="2" --form --columns=1 --separator="%" --homogeneous-row \ if [[ -n "$PW_WINE_DPI_VALUE" ]] \
&& [[ "$PW_WINE_DPI_VALUE" != "disabled" ]]
then
YAD_DPI_VAR="$PW_WINE_DPI_VALUE"
else
YAD_DPI_VAR="disabled"
fi
"${pw_yad}" --plug=$KEY_USERCONF_GUI --tabnum="2" --form --columns=1 --separator="@" --homogeneous-row \
--gui-type-text="$PANED_GUI_TYPE_TEXT_DOWN" --gui-type-layout="$PANED_GUI_TYPE_LAYOUT_DOWN" \ --gui-type-text="$PANED_GUI_TYPE_TEXT_DOWN" --gui-type-layout="$PANED_GUI_TYPE_LAYOUT_DOWN" \
--field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix --disabled "$GPU_VAR" "$GET_GPU_NAMES")" \ --field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix --disabled "$GPU_VAR" "$GET_GPU_NAMES")" \
--field="${translations[Force dpi for fonts]}!${translations[Here you can set forced dpi for fonts in wine]} :CB" "$(combobox_fix --disabled "$YAD_DPI_VAR" "96 (100%)!120 (125%)!144 (150%)!168 (175%)!192 (200%)!216 (225%)!240 (250%)!264 (275%)!288 (300%)")" \
--field="${translations[Choice wine audio driver]}!${translations[Fixes sound popling if choice alsa]} :CB" "$(combobox_fix --disabled "$SOUND_DRIVER_VAR" "alsa!oss!pulse")" \ --field="${translations[Choice wine audio driver]}!${translations[Fixes sound popling if choice alsa]} :CB" "$(combobox_fix --disabled "$SOUND_DRIVER_VAR" "alsa!oss!pulse")" \
--field="${translations[Choice gui themes]}!${translations[Allows you to select a theme for PortProton]} :CB" "$(combobox_fix "$GUI_THEME" "default!compact!classic")" \ --field="${translations[Choice gui themes]}!${translations[Allows you to select a theme for PortProton]} :CB" "$(combobox_fix "$GUI_THEME" "default!compact!classic")" \
--field="${translations[Time display]}!${translations[Displays time spent in an application or game]} :CB" "$(combobox_fix --disabled "$DESKTOP_WITH_TIME" "enabled")" \ --field="${translations[Time display]}!${translations[Displays time spent in an application or game]} :CB" "$(combobox_fix --disabled "$DESKTOP_WITH_TIME" "enabled")" \
@ -5633,14 +5657,15 @@ gui_userconf () {
gui_open_user_conf gui_open_user_conf
;; ;;
166) 166)
IFS='%' read -r -a PW_ADD_SETTINGS_UC <"${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" IFS='@' read -r -a PW_ADD_SETTINGS_UC <"${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb"
IFS="$orig_IFS" IFS="$orig_IFS"
PW_GPU_USE="${PW_ADD_SETTINGS_UC[0]}" PW_GPU_USE="${PW_ADD_SETTINGS_UC[0]}"
PW_SOUND_DRIVER_USE="${PW_ADD_SETTINGS_UC[1]}" PW_WINE_DPI_VALUE="${PW_ADD_SETTINGS_UC[1]}"
GUI_THEME="${PW_ADD_SETTINGS_UC[2]}" PW_SOUND_DRIVER_USE="${PW_ADD_SETTINGS_UC[2]}"
DESKTOP_WITH_TIME="${PW_ADD_SETTINGS_UC[3]}" GUI_THEME="${PW_ADD_SETTINGS_UC[3]}"
SORT_WITH_TIME="${PW_ADD_SETTINGS_UC[4]}" DESKTOP_WITH_TIME="${PW_ADD_SETTINGS_UC[4]}"
edit_user_conf_from_gui PW_GPU_USE PW_SOUND_DRIVER_USE GUI_THEME DESKTOP_WITH_TIME SORT_WITH_TIME SORT_WITH_TIME="${PW_ADD_SETTINGS_UC[5]}"
edit_user_conf_from_gui PW_GPU_USE PW_WINE_DPI_VALUE PW_SOUND_DRIVER_USE GUI_THEME DESKTOP_WITH_TIME SORT_WITH_TIME
restart_pp restart_pp
;; ;;
esac esac
@ -5780,42 +5805,59 @@ portwine_output_yad_shortcut () {
fi fi
if [[ "${PW_SHORTCUT_STEAM}" == "TRUE" ]] ; then if [[ "${PW_SHORTCUT_STEAM}" == "TRUE" ]] ; then
export STEAM_SCRIPTS="${PORT_WINE_PATH}/steam_scripts" SLUF="${HOME}/.local/share/Steam/config/loginusers.vdf"
create_new_dir "${STEAM_SCRIPTS}" if [[ -f "${SLUF}" ]]; then
echo "#!/usr/bin/env bash" > "${STEAM_SCRIPTS}/${name_desktop}.sh" SLUFUB=false
echo "export START_FROM_STEAM=1" >> "${STEAM_SCRIPTS}/${name_desktop}.sh" STUID64=""
echo "export LD_PRELOAD=" >> "${STEAM_SCRIPTS}/${name_desktop}.sh" while IFS= read -r line; do
if check_flatpak if [[ "${line}" =~ ^[[:space:]]*\"([0-9]+)\"$ ]]; then
then echo "flatpak run ru.linux_gaming.PortProton \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh" STUIDCUR="${BASH_REMATCH[1]}"
else echo "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh" SLUFUB=true
fi elif [[ "${line}" == *'"MostRecent"'*'"1"' && ${SLUFUB} = true ]]; then
chmod u+x "${STEAM_SCRIPTS}/${name_desktop}.sh" STUID64="${STUIDCUR}"
export SCVDF="shortcuts.vdf" break
for STUIDPATH in "${HOME}"/.local/share/Steam/userdata/*/; do elif [[ "${line}" == "}" ]]; then
if [[ -d "$STUIDPATH" ]]; then SLUFUB=false
create_new_dir "${STUIDPATH}config/" fi
create_new_dir "${STUIDPATH}config/grid" done < "${SLUF}"
export SCPATH="${STUIDPATH}config/$SCVDF" if [ -n "${STUID64}" ]; then
export SGGRIDDIR="${STUIDPATH}config/grid" STUID32=$((STUID64 - 76561197960265728))
# shellcheck source=/dev/null STUIDPATH="${HOME}/.local/share/Steam/userdata/${STUID32}"
source "${PORT_SCRIPTS_PATH}/add_in_steam.sh" if [[ -d "${STUIDPATH}" ]]; then
fi export SCPATH="${STUIDPATH}/config/shortcuts.vdf"
done if [[ -f "${SCPATH}" ]]; then
export STEAM_SCRIPTS="${PORT_WINE_PATH}/steam_scripts"
if [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && pgrep -i steam &>/dev/null ; then create_new_dir "${STEAM_SCRIPTS}"
if yad_question "${translations[For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?]}" ; then echo "#!/usr/bin/env bash" > "${STEAM_SCRIPTS}/${name_desktop}.sh"
pw_start_progress_bar_block "${translations[Restarting STEAM... Please wait.]}" echo "export START_FROM_STEAM=1" >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
kill -s SIGTERM $(pgrep -a steam) &>/dev/null echo "export LD_PRELOAD=" >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
while pgrep -i steam &>/dev/null ; do if check_flatpak
sleep 0.5 then echo "flatpak run ru.linux_gaming.PortProton \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
done else echo "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
steam & fi
sleep 5 chmod u+x "${STEAM_SCRIPTS}/${name_desktop}.sh"
pw_stop_progress_bar create_new_dir "${STUIDPATH}/config/"
exit 0 create_new_dir "${STUIDPATH}/config/grid"
export SGGRIDDIR="${STUIDPATH}/config/grid"
source "${PORT_SCRIPTS_PATH}/add_in_steam.sh"
if [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && pgrep -i steam &>/dev/null ; then
if yad_question "${translations[For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?]}" ; then
pw_start_progress_bar_block "${translations[Restarting STEAM... Please wait.]}"
kill -s SIGTERM $(pgrep -a steam) &>/dev/null
while pgrep -i steam &>/dev/null ; do
sleep 0.5
done
steam &
sleep 5
pw_stop_progress_bar
exit 0
fi
fi
unset PW_SKIP_RESTART_STEAM
fi
fi
fi fi
fi fi
unset PW_SKIP_RESTART_STEAM
fi fi
export PW_NEW_DESKTOP="1" export PW_NEW_DESKTOP="1"

View File

@ -0,0 +1,18 @@
#!/usr/bin/env bash
files_from_autoinstall=$(ls "${PORT_SCRIPTS_PATH}/pw_autoinstall")
echo -e "${translations[use]}: [--repair] [--reinstall] [--autoinstall]
--repair ${translations[Forces all scripts to be updated to a working state
(helps if PortProton is not working)]}
--reinstall ${translations[Reinstalls PortProton and resets all settings to default]}
--generate-pot ${translations[Creates a files with translations .pot and .po]}
--debug ${translations[Debug scripts for PortProton
(saved log in]} $PORT_WINE_PATH/scripts-debug.log)
--update ${translations[Check update scripts for PortProton]}
--launch ${translations[Launches the application immediately, requires the path to the .exe file]}
--edit-db ${translations[After the variable, the path to the .exe file is required and then the variables.
(List their variables and values for example PW_MANGOHUD=1 PW_VKBASALT=0, etc.)]}
--autoinstall ${translations[--autoinstall and the name of what needs to be installed is given in the list below:]}
$(echo $files_from_autoinstall | awk '{for (i = 1; i <= NF; i++) {if (i % 10 == 0) {print ""} printf "%s ", $i}}')
"

View File

@ -18,7 +18,6 @@ echo '
██║░░░░░╚█████╔╝██║░░██║░░░██║░░░██║░░░░░██║░░██║╚█████╔╝░░░██║░░░╚█████╔╝██║░╚███║ ██║░░░░░╚█████╔╝██║░░██║░░░██║░░░██║░░░░░██║░░██║╚█████╔╝░░░██║░░░╚█████╔╝██║░╚███║
╚═╝░░░░░░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░░╚════╝░╚═╝░░╚══╝ ╚═╝░░░░░░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░░╚════╝░╚═╝░░╚══╝
' '
$PW_DEBUG $PW_DEBUG
if [[ $(id -u) = 0 ]] \ if [[ $(id -u) = 0 ]] \
@ -366,68 +365,50 @@ fi
### CLI ### ### CLI ###
case "$1" in case "$1" in
'--help' ) --help)
files_from_autoinstall=$(ls "${PORT_SCRIPTS_PATH}/pw_autoinstall") # shellcheck source=/dev/null
echo -e " source "${PORT_SCRIPTS_PATH}/help_info"
use: [--repair] [--reinstall] [--autoinstall] exit 0
;;
--repair forces all scripts to be updated to a working state --reinstall)
(helps if PortProton is not working)
--reinstall reinstall files of the portproton to default settings
--autoinstall [script_frome_pw_autoinstall] autoinstall from the list below:
"
echo ${files_from_autoinstall}
echo "
--generate-pot generated pot file
"
echo "
--debug debug scripts for PortProton
(saved log in $PORT_WINE_PATH/scripts-debug.log)
"
echo "
--update check update scripts for PortProton
"
exit 0 ;;
'--reinstall' )
export PW_REINSTALL_FROM_TERMINAL=1 export PW_REINSTALL_FROM_TERMINAL=1
pw_reinstall_pp ;; pw_reinstall_pp
;;
'--autoinstall' ) --autoinstall)
export PW_YAD_SET="$2" export PW_YAD_SET="$2"
pw_autoinstall_from_db pw_autoinstall_from_db
exit 0 ;; exit 0
;;
'--generate-pot' ) --generate-pot)
generate_pot generate_pot
exit 0 ;; exit 0
;;
'--debug' ) --debug)
clear clear
export PW_DEBUG="set -x" export PW_DEBUG="set -x"
/usr/bin/env bash -c ${pw_full_command_line[@]} 2>&1 | tee "$PORT_WINE_PATH/scripts-debug.log" & /usr/bin/env bash -c ${pw_full_command_line[@]} 2>&1 | tee "$PORT_WINE_PATH/scripts-debug.log" &
exit 0 ;; exit 0
;;
'--server-file-access' ) --server-file-access)
echo echo
curl -s --list-only "https://cloud.linux-gaming.ru/log/$(date +20%y_%m)_file_access.log" | sort -V -k 2,2 \ curl -s --list-only "https://cloud.linux-gaming.ru/log/$(date +20%y_%m)_file_access.log" | sort -V -k 2,2 \
| sed 's/count=//g' | awk '{a=$1; $1=$2; $2=a} 1' | awk 'BEGIN {print "Count: Name:"} {print}' | column -t | sed 's/count=//g' | awk '{a=$1; $1=$2; $2=a} 1' | awk 'BEGIN {print "Count: Name:"} {print}' | column -t
echo echo
exit 0 ;; exit 0
;;
'--update' ) --update)
gui_pw_update ;; gui_pw_update
;;
'--launch' ) --launch)
portwine_launch portwine_launch
stop_portwine ;; stop_portwine
;;
'--edit-db' ) --edit-db)
# --edit-db /полный/путь/до/файла.exe PW_MANGOHUD=1 PW_VKBASALT=0 (и т.д) для примера # --edit-db /полный/путь/до/файла.exe PW_MANGOHUD=1 PW_VKBASALT=0 (и т.д) для примера
set_several_variables ${@:3} set_several_variables ${@:3}
edit_db_from_gui $keys_all edit_db_from_gui $keys_all
exit 0 ;; exit 0
;;
esac esac
### GUI ### ### GUI ###

View File

@ -49,7 +49,7 @@ export PW_FAKE_DLSS_VER="230506"
export PW_FAKE_DLSS_3_VER="090" export PW_FAKE_DLSS_3_VER="090"
export PW_GALLIUM_NINE_VER="0.9" export PW_GALLIUM_NINE_VER="0.9"
###WINE_AND_PROTON_LG### ###WINE_AND_PROTON_LG###
export PW_PROTON_LG_VER="PROTON_LG_9-16" export PW_PROTON_LG_VER="PROTON_LG_9-18"
export PW_WINE_LG_VER="WINE_LG_9-12-2" export PW_WINE_LG_VER="WINE_LG_9-12-2"
export PW_WINE_FULLSCREEN_FSR="1" export PW_WINE_FULLSCREEN_FSR="1"
export WINE_FULLSCREEN_FSR_MODE="ultra" export WINE_FULLSCREEN_FSR_MODE="ultra"
@ -58,9 +58,9 @@ export PW_VULKAN_USE="2"
export VKD3D_LIMIT_TESS_FACTORS="64" export VKD3D_LIMIT_TESS_FACTORS="64"
export DXVK_LEGACY_VER="1.6.1" export DXVK_LEGACY_VER="1.6.1"
export DXVK_STABLE_VER="1.10.3-28" export DXVK_STABLE_VER="1.10.3-28"
export DXVK_GIT_VER="2.4.1-194" export DXVK_GIT_VER="2.4.1-393"
export VKD3D_STABLE_VER="1.1-2602" export VKD3D_STABLE_VER="1.1-2602"
export VKD3D_GIT_VER="1.1-4240" export VKD3D_GIT_VER="1.1-4252"
###VKBASALT### ###VKBASALT###
export PW_VKBASALT_EFFECTS="Curves:cas" export PW_VKBASALT_EFFECTS="Curves:cas"
export PW_VKBASALT_FFX_CAS="0.50" export PW_VKBASALT_FFX_CAS="0.50"