From e44a85ac20fc741ca5adca6776690e32136d7904 Mon Sep 17 00:00:00 2001
From: Mikhail Tergoev <fidel@altlinux.org>
Date: Tue, 26 Mar 2024 19:18:11 +0300
Subject: [PATCH] Scripts version 2265

---
 data_from_portwine/changelog_eng              | 16 +++++++++
 data_from_portwine/changelog_rus              | 16 +++++++++
 data_from_portwine/scripts/functions_helper   | 36 +++++++++++++------
 .../scripts/portwine_db/HogwartsLegacy        |  5 ---
 data_from_portwine/scripts/runlib             | 33 ++++++++---------
 data_from_portwine/scripts/setup.sh           |  7 ++--
 data_from_portwine/scripts/start.sh           | 16 +++------
 data_from_portwine/scripts/var                | 15 ++++----
 data_from_portwine/scripts/yad_gui            | 34 +++++++++++++-----
 9 files changed, 116 insertions(+), 62 deletions(-)

diff --git a/data_from_portwine/changelog_eng b/data_from_portwine/changelog_eng
index 03a42423..fc417e6a 100755
--- a/data_from_portwine/changelog_eng
+++ b/data_from_portwine/changelog_eng
@@ -2,6 +2,22 @@ You can help us in the development of the project on the website: https://linux-
 ----------------------------------------
 Changelog:
 
+###Scripts version 2265### Date: 26.03.2024 / Download update size: 570 megabytes
+* the faudio component has been added to the DEFAULT prefix (required for games running on the Creation Engine, example The Elder Scrolls)
+* the plugins_v14 library package has been updated:
+    transferred from the libs package: d3d_extras, reshade and default_pfx
+    portable versions have been added: yad_v13_0, perl, exiftool (thanks to Boria138)
+* the libs_v47 library package has been updated:
+    pressure-vessel 0.20240306.0
+    sniper 0.20240307.80401
+* updated PROTON_LG to version "9-2"
+* updated versions:
+    DXVK_GIT "2.3.1"
+    VKD3D_GIT "1.1-3973"
+* added saving of settings changes to EDIT_DB when using the "OPEN SETTINGS FILE" button
+* improved support for the PortProton test build in flatpak
+* many small script improvements
+
 ###Scripts version 2264### Date: 15.03.2024 / Download update size: 15 megabytes
 * added the option to end the first PortProton session when starting the second
 * added auto-installation of the game "Pulse Online"
diff --git a/data_from_portwine/changelog_rus b/data_from_portwine/changelog_rus
index f8e76bb2..0ee5dbbb 100755
--- a/data_from_portwine/changelog_rus
+++ b/data_from_portwine/changelog_rus
@@ -2,6 +2,22 @@
 -----------------------------------------
 История изменений:
 
+###Scripts version 2265### Дата: 26.03.2024 / Размер скачиваемого обновления: 570 мегабайт
+* в префикс DEFAULT добавлен компонент faudio (необходим для игр на движке Creation Engine, пример The Elder Scrolls)
+* обновлен пакет библиотек plugins_v14:
+    перенесены из пакета libs: d3d_extras, reshade и default_pfx
+    добавлены портативные версии: yad_v13_0, perl, exiftool (спасибо Boria138)
+* обновлен пакет библиотек libs_v47:
+    pressure-vessel 0.20240306.0
+    sniper 0.20240307.80401
+* обновлен PROTON_LG до версии "9-2"
+* обновлены версии:
+    DXVK_GIT "2.3.1"
+    VKD3D_GIT "1.1-3973"
+* добавлено сохранение изменений настроек в EDIT_DB при искользовании кнопки "ОТКРЫТЬ ФАЙЛ НАСТРОЕК"
+* улучшена поддержка тестовой сборки PortProton во flatpak
+* множество небольших улучшений скриптов
+
 ###Scripts version 2264### Дата: 15.03.2024 / Размер скачиваемого обновления: 15 мегабайт
 * добавлен выбор завершения первой сессии PortProton при запуске второй
 * добавлена автоустановка игры "Pulse Online"
diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index 010cf164..6c46c8e7 100755
--- a/data_from_portwine/scripts/functions_helper
+++ b/data_from_portwine/scripts/functions_helper
@@ -292,6 +292,20 @@ check_gamescope_session () {
     fi
 }
 
+check_flatpak () {
+    if [[ ! -z "$FLATPAK_IN_USE" ]]
+    then [[ "$FLATPAK_IN_USE" == 1 ]] && return 0 || return 1
+    fi
+    if grep -i "flatpak" /etc/os-release &>/dev/null ; then
+        export FLATPAK_IN_USE=1
+        return 0
+    else
+        export FLATPAK_IN_USE=0
+        return 1
+    fi
+}
+
+
 unpack_tar_zst () {
     set -o pipefail
     unset PW_ZSTD_PORT
@@ -413,7 +427,7 @@ check_user_conf () {
 init_wine_ver () {
     if [[ "${PW_WINE_USE}" == "USE_SYSTEM_WINE" ]] \
     && command -v wine &>/dev/null ; then
-        if ! grep -i "flatpak" /etc/os-release &>/dev/null ; then
+        if ! check_flatpak ; then
             export WINEDIR="$RT_PREFIX/usr"
             export WINE="$RT_PREFIX/$(command -v wine)"
             export WINELOADER="$WINE"
@@ -542,7 +556,7 @@ init_wine_ver () {
 }
 
 pw_init_runtime () {
-    if [[ "$PW_USE_RUNTIME" != 1 ]] ; then
+    if [[ "$PW_USE_RUNTIME" != 1 ]] || check_flatpak ; then
         export pw_runtime=""
         return 0
     fi
@@ -649,8 +663,8 @@ pw_mangohud_check () {
 pw_vkbasalt_check () {
     if [[ "${ENABLE_VKBASALT}" == 1 ]] && [[ "${PW_VULKAN_USE}" != "0" ]] && [[ "${PW_VULKAN_USE}" != "3" ]] ; then
         export VKBASALT_CONFIG_FILE="${PORT_WINE_PATH}/data/vkBasalt.conf"
-        if ! grep "/pressure-vessel/reshade" "${VKBASALT_CONFIG_FILE}" &>/dev/null
-        then sed -ri "s|= .*/reshade|= \"${PW_WINELIB}\"/pressure-vessel/reshade|g" "${VKBASALT_CONFIG_FILE}"
+        if ! grep "${PW_PLUGINS_PATH}/reshade" "${VKBASALT_CONFIG_FILE}" &>/dev/null
+        then sed -ri "s|= .*/reshade|= \"${PW_PLUGINS_PATH}\"/reshade|g" "${VKBASALT_CONFIG_FILE}"
         fi
         if [[ ! -z "${PW_VKBASALT_EFFECTS}" ]] && [[ ! -z "${PW_VKBASALT_FFX_CAS}" ]] ; then
             sed -ri "s/effects = .*/effects = ${PW_VKBASALT_EFFECTS}/g" "${VKBASALT_CONFIG_FILE}"
@@ -794,8 +808,8 @@ stop_portwine () {
 export -f stop_portwine
 
 pw_download_libs () {
-    if [[ ! -e "${PW_WINELIB}/runtime/files/bin/vkcube" ]] \
-    || [[ ! -f "${PW_WINELIB}/pressure-vessel/bin/pv-bwrap" ]]
+    if [[ ! -f "${PW_WINELIB}/runtime/files/bin/vkcube" ]] \
+    || [[ ! -f "${PW_WINELIB}/pressure-vessel/bin/pressure-vessel-wrap" ]]
     then
         print_info "Download and install libraries..."
         if try_download "github.com/Castro-Fidel/PortWINE/releases/download/libs${PW_LIBS_VER}/libs${PW_LIBS_VER}.tar.xz" \
@@ -806,8 +820,6 @@ pw_download_libs () {
                     for RM_LIBS in `ls ${PORT_WINE_TMP_PATH} | grep libs_v | grep -v libs${PW_LIBS_VER}`
                     do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_LIBS}"
                     done
-                    # TODO: drop clear prefix, and add update prefix from new libs 
-                    pw_clear_pfx
                 fi
             else
                 try_remove_dir "${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}"
@@ -954,6 +966,8 @@ pw_check_and_download_plugins () {
             if try_download "github.com/Castro-Fidel/wine_builds/releases/download/plugins${PW_PLUGINS_VER}/plugins${PW_PLUGINS_VER}.tar.xz" "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" ; then
                 if unpack_tar_xz "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" "${PORT_WINE_TMP_PATH}" ; then
                     try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" 
+                    # TODO: drop clear prefix, and add update prefix from new plugins 
+                    pw_clear_pfx
                     if [ ! -z "`ls ${PORT_WINE_TMP_PATH} | grep plugins_v | grep -v plugins${PW_PLUGINS_VER}`" ] ; then
                         for RM_PLUGINS in `ls ${PORT_WINE_TMP_PATH} | grep plugins_v | grep -v plugins${PW_PLUGINS_VER}`
                         do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_PLUGINS}"
@@ -983,7 +997,9 @@ pw_check_and_download_plugins () {
             if try_download_silent "github.com/Castro-Fidel/wine_builds/releases/download/plugins${PW_PLUGINS_VER}/plugins${PW_PLUGINS_VER}.tar.xz" \
                                    "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" ; then
                 if unpack_tar_xz "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" "${PORT_WINE_TMP_PATH}" ; then
-                    try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" 
+                    try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz"
+                    # TODO: drop clear prefix, and add update prefix from new plugins 
+                    pw_clear_pfx
                     if [ ! -z "`ls ${PORT_WINE_TMP_PATH} | grep plugins_v | grep -v plugins${PW_PLUGINS_VER}`" ] ; then
                         for RM_PLUGINS in `ls ${PORT_WINE_TMP_PATH} | grep plugins_v | grep -v plugins${PW_PLUGINS_VER}`
                         do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_PLUGINS}"
@@ -1149,7 +1165,7 @@ pw_init_db () {
             check_variables PW_USE_RAY_TRACING "1"
         fi
 
-        if [[ "${update_loc}" == "RUS" ]] ; then
+        if grep "RUS" "${PORT_WINE_TMP_PATH}/${portname}_loc" &>/dev/null ; then
             for chk_lang_and_uname in "steam_emu.ini" "steam_api.ini" "steam_api64.ini" ; do
                 if [[ -f "${PATH_TO_GAME}/${chk_lang_and_uname}" ]] ; then
                     sed -i "s/Language=english/Language=russian/" "${PATH_TO_GAME}/${chk_lang_and_uname}"
diff --git a/data_from_portwine/scripts/portwine_db/HogwartsLegacy b/data_from_portwine/scripts/portwine_db/HogwartsLegacy
index 075a23c5..0ca801a1 100644
--- a/data_from_portwine/scripts/portwine_db/HogwartsLegacy
+++ b/data_from_portwine/scripts/portwine_db/HogwartsLegacy
@@ -17,8 +17,3 @@ Grub Customizer utility"
 fi
 export PW_VULKAN_USE="2"
 
-add_in_start_portwine () {
-    if [ "${update_loc}" = "RUS" ] ; then
-        sed -i "s/Language=english/Language=russian/g" "${PATH_TO_GAME}/Engine/Binaries/ThirdParty/Steamworks/Steamv154/Win64/steam_api64.ini"
-    fi
-}
diff --git a/data_from_portwine/scripts/runlib b/data_from_portwine/scripts/runlib
index 22ed8b5c..fa74bd59 100755
--- a/data_from_portwine/scripts/runlib
+++ b/data_from_portwine/scripts/runlib
@@ -85,15 +85,14 @@ start_portwine () {
     then
         pw_clear_pfx
         check_dirs_and_files_in_pfx
-
         if [[ "${PW_PREFIX_NAME}" == DEFAULT ]] ; then
             pw_update_pfx_cover_gui
-            unpack_tar_xz "${PW_WINELIB}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent
+            unpack_tar_xz "${PW_PLUGINS_PATH}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent
             pw_wineboot -u
         elif [[ "${PW_CHECK_AUTOINSTAL}" == 1 ]] \
         && [[ "${DISABLE_CP_DEFPFX}" != 1 ]] ; then
             pw_update_pfx_cover_gui
-            unpack_tar_xz "${PW_WINELIB}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent
+            unpack_tar_xz "${PW_PLUGINS_PATH}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent
             pw_wineboot -u
         elif [[ "${PW_CHECK_AUTOINSTAL}" == 1 ]] \
         && [[ "${DISABLE_CP_DEFPFX}" == 1 ]] ; then
@@ -101,7 +100,7 @@ start_portwine () {
             pw_wineboot -i
         elif yad_question "$loc_gui_dll_new_pfx ${PW_PREFIX_NAME}" ; then
             pw_update_pfx_cover_gui
-            unpack_tar_xz "${PW_WINELIB}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent
+            unpack_tar_xz "${PW_PLUGINS_PATH}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent
             pw_wineboot -u
         else
             pw_update_pfx_cover_gui
@@ -395,7 +394,7 @@ start_portwine () {
             echo "d3dx9" >> "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log"
         fi
         #try link d3d extras libs
-        PATH_TO_D3DEXTRAS="${PW_WINELIB}/d3d_extras"
+        PATH_TO_D3DEXTRAS="${PW_PLUGINS_PATH}/d3d_extras"
         for d3d_extras_from_plugins in $D3D_EXTRAS_LIBS ; do
             try_force_link_file "${PATH_TO_D3DEXTRAS}/x64/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
             try_force_link_file "${PATH_TO_D3DEXTRAS}/x32/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
@@ -505,11 +504,9 @@ start_portwine () {
             fi
         done
 
-        try_force_link_file "${WINEDIR}/lib/wine/nvapi/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" || \
         try_force_link_file "${PATH_TO_DXVK_FILES}/x32/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" || \
         try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x32/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
 
-        try_force_link_file "${WINEDIR}/lib64/wine/nvapi/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/" || \
         try_force_link_file "${PATH_TO_DXVK_FILES}/x64/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/" || \
         try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x64/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/" 
 
@@ -784,7 +781,7 @@ else
 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_AUTOINSTAL PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PORTWINE_DB PORTWINE_DB_FILE PW_DISABLED_CREATE_DB RADV_PERFTEST
-unset CHK_SYMLINK_FILE MESA_GL_VERSION_OVERRIDE PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME PORTWINE_CREATE_SHORTCUT_NAME
+unset CHK_SYMLINK_FILE MESA_GL_VERSION_OVERRIDE PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME PORTWINE_CREATE_SHORTCUT_NAME FLATPAK_IN_USE
 unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY
 unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48
 
@@ -865,6 +862,16 @@ check_user_conf
 check_variables PW_LOG "0"
 
 if [[ -z "${INSTALLING_PORT}" ]] ; then
+    . "${USER_CONF}"
+    if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] \
+    && [[ ! -f "/tmp/portproton.lock" ]]
+    then
+        pw_port_update
+    fi
+    unset SKIP_CHECK_UPDATES
+
+    pw_check_and_download_plugins
+
     if [[ -f "/tmp/portproton.lock" ]] ; then
         print_warning "Found lock file: /tmp/portproton.lock"
         yad_question "$loc_gui_portproton_lock" || exit 0
@@ -876,14 +883,8 @@ if [[ -z "${INSTALLING_PORT}" ]] ; then
     }
     trap "rm_lock_file" EXIT
 
-    . "${USER_CONF}"
-    if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] ; then
-        pw_port_update
-    fi
-    unset SKIP_CHECK_UPDATES
-    pw_check_and_download_plugins
-    pw_download_libs
-    export PW_VULKANINFO_PORTABLE="$PW_WINELIB/pressure-vessel/libexec/steam-runtime-tools-0/x86_64-linux-gnu-vulkaninfo"
+    check_flatpak || pw_download_libs
+    export PW_VULKANINFO_PORTABLE="$PW_PLUGINS_PATH/portable/bin/x86_64-linux-gnu-vulkaninfo"
     export VULKAN_API_DRIVER_VERSION="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep "api" | head -n 1 | awk '{print $3}')"
     export VULKAN_DRIVER_NAME="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep driverName | awk '{print$3}' | head -1)"
     pw_init_db
diff --git a/data_from_portwine/scripts/setup.sh b/data_from_portwine/scripts/setup.sh
index c7feb2ac..ee093b0d 100755
--- a/data_from_portwine/scripts/setup.sh
+++ b/data_from_portwine/scripts/setup.sh
@@ -3,7 +3,7 @@
 . "$(dirname $(readlink -f "$0"))/runlib"
 
 name_desktop="PortProton"
-if  grep -i "flatpak" /etc/os-release &>/dev/null ; then
+if check_flatpak ; then
 	echo "[Desktop Entry]"	 					  		 > "${PORT_WINE_PATH}/${name_desktop}.desktop"
 	echo "Name=${name_desktop}" 				 		 >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
 	echo "Version=${install_ver}"						 >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
@@ -31,8 +31,7 @@ else
 	chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop"
 fi
 
-if [[ ! -f /usr/bin/portproton ]] \
-&& ! grep -i "flatpak" /etc/os-release &>/dev/null
+if [[ ! -f /usr/bin/portproton ]] && ! check_flatpak
 then
 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" ${HOME}/.local/share/applications/
 fi
@@ -43,7 +42,7 @@ fi
 
 update-desktop-database -q "${HOME}/.local/share/applications"
 
-if ! grep -i "flatpak" /etc/os-release &>/dev/null ; then
+if ! check_flatpak ; then
 	xdg-mime default PortProton.desktop "application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program"
 fi
 
diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh
index 3eaa19fc..6d644fc6 100755
--- a/data_from_portwine/scripts/start.sh
+++ b/data_from_portwine/scripts/start.sh
@@ -191,7 +191,7 @@ portwine_start_debug () {
     [[ `command -v glxinfo` ]] && glxinfo -B >> "${PORT_WINE_PATH}/${portname}.log"
     echo "-----" >> "${PORT_WINE_PATH}/${portname}.log"
     echo "inxi -G:" >> "${PORT_WINE_PATH}/${portname}.log"
-    if ! grep -i "flatpak" /etc/os-release &>/dev/null
+    if ! check_flatpak
     then "${PW_PLUGINS_PATH}/portable/bin/inxi" -Gc0 >> "${PORT_WINE_PATH}/${portname}.log"
     fi
     if echo "$LSPCI_VGA" | grep -i nvidia &>/dev/null ; then
@@ -201,6 +201,8 @@ portwine_start_debug () {
             ldconfig -p | grep libGLX_nvidia >> "${PORT_WINE_PATH}/${portname}.log"
         fi
     fi
+    echo "PW_SCREEN_RESOLUTION=$PW_SCREEN_RESOLUTION" >> "${PORT_WINE_PATH}/${portname}.log"
+    echo "PW_SCREEN_PRIMARY=$PW_SCREEN_PRIMARY" >> "${PORT_WINE_PATH}/${portname}.log"
     echo "----------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log"
     echo "Vulkan info device name:" >> "${PORT_WINE_PATH}/${portname}.log"
     "$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep -E '^GPU|deviceName|driverName' >> "${PORT_WINE_PATH}/${portname}.log"
@@ -496,12 +498,6 @@ pw_edit_db () {
         PW_USE_US_LAYOUT PW_USE_GSTREAMER PW_FORCE_LARGE_ADDRESS_AWARE PW_USE_SHADER_CACHE PW_USE_WINE_DXGI PW_USE_EAC_AND_BE \
         PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK PW_USE_GAMESCOPE PW_DISABLE_COMPOSITING PW_USE_RUNTIME
     fi
-    if [[ "$?" == 0 ]] ; then
-        print_info "Restarting PP after update ppdb file..."
-        export SKIP_CHECK_UPDATES=1
-        /usr/bin/env bash -c ${pw_full_command_line[*]} &
-        exit 0
-    fi
     # PW_FORCE_USE_VSYNC HEAP_DELAY_FREE
 }
 
@@ -583,10 +579,6 @@ do
     export DIST_ADD_TO_GUI="${DIST_ADD_TO_GUI}!${DAIG}"
 done
 
-# if [[ $VULKAN_API_DRIVER_VERSION == 1.[1-2].* ]]
-# then check_variables PW_VULKAN_USE "1"
-# else check_variables PW_VULKAN_USE "2"
-# fi
 check_nvidia_rtx && check_variables PW_VULKAN_USE "2"
 
 case "${PW_VULKAN_USE}" in
@@ -679,7 +671,7 @@ else
             kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1
         fi
 
-        if grep -i "flatpak" /etc/os-release &>/dev/null
+        if check_flatpak
         then PW_EXEC_FROM_DESKTOP="$(cat "${PORT_WINE_PATH}/${PW_YAD_SET//¬/" "}" | grep Exec | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')"
         else PW_EXEC_FROM_DESKTOP="$(cat "${PORT_WINE_PATH}/${PW_YAD_SET//¬/" "}" | grep Exec | head -n 1 | awk -F"=env " '{print $2}')"
         fi
diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var
index 5e12b11c..89de6841 100755
--- a/data_from_portwine/scripts/var
+++ b/data_from_portwine/scripts/var
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 #Author: Castro-Fidel (linux-gaming.ru)
-#SCRIPTS_NEXT_VERSION=2264
+#SCRIPTS_NEXT_VERSION=2265
 ########################################################################
 export PW_MANGOHUD="0"
 export DEFAULT_MANGOHUD_CONFIG="cpu_stats,cpu_temp,cpu_mhz,gpu_stats,gpu_temp,gpu_core_clock,gpu_mem_clock,vulkan_driver,gpu_name,vram,ram,frame_timing=1,time,arch,wine,toggle_hud=Shift_R+F12,resolution,vkbasalt,gamemode"
@@ -18,7 +18,7 @@ export PW_FORCE_USE_VSYNC="2"
 export PW_USE_TERMINAL="0"
 export PW_WINDOWS_VER="10"
 export WINEARCH="win64"
-export PW_LIBS_VER="_v46"
+export PW_LIBS_VER="_v47"
 export GDK_BACKEND="x11"
 export PW_USE_GSTREAMER="1"
 export PW_USE_D3D_EXTRAS="1"
@@ -38,7 +38,7 @@ export PW_USE_GAMESCOPE="0"
 # export GTK_THEME="Adwaita:dark"
 ###DEFAULT_WINE###
 export PW_WINE_USE="PROTON_LG"
-export PW_PLUGINS_VER="_v13"
+export PW_PLUGINS_VER="_v14"
 export PW_FAKE_DLSS_VER="230506"
 export PW_FAKE_DLSS_3_VER="090"
 export PW_GALLIUM_NINE_VER="0.9"
@@ -63,11 +63,12 @@ export DXVK_CONFIG_FILE="${PORT_WINE_PATH}/data/dxvk.conf"
 #################################################################
 pw_list_install_dll_in_prefix ()
 {
+    STANDART_DLL="d3dx9 d3dcompiler_43 d3dcompiler_47 physx mfc42 vcrun2022 sandbox corefonts tahoma lucida calibri faudio"
     case $PW_PREFIX_NAME in
-        DEFAULT)    export PW_MUST_HAVE_DLL="d3dx9 d3dcompiler_43 physx mfc42 vcrun2022 sandbox" ;;
-        DOTNET)     export PW_MUST_HAVE_DLL="physx mfc42 vcrun2019 faudio dotnet48" ;;
-        PROGRAMS)   export PW_MUST_HAVE_DLL="d3dx9 d3dcompiler_43 physx mfc42 vcrun2019 riched20 corefonts msxml3 msxml4 msxml6" ;;
-        *)          export PW_MUST_HAVE_DLL="" ;;
+        DEFAULT)    export PW_MUST_HAVE_DLL="$STANDART_DLL" ;;
+        DOTNET)     export PW_MUST_HAVE_DLL="dotnet48" ;;
+        PROGRAMS)   export PW_MUST_HAVE_DLL="riched20 msxml3 msxml4 msxml6" ;;
+        *)          export PW_MUST_HAVE_DLL="sandbox" ;;
     esac
 }
 ########################################################################
diff --git a/data_from_portwine/scripts/yad_gui b/data_from_portwine/scripts/yad_gui
index a939d64c..5ad4a13a 100755
--- a/data_from_portwine/scripts/yad_gui
+++ b/data_from_portwine/scripts/yad_gui
@@ -265,11 +265,18 @@ pw_gui_for_edit_db () {
     YAD_STATUS="$?"
     export SKIP_CHECK_UPDATES=1
     case "$YAD_STATUS" in
-          1) /usr/bin/env bash -c ${pw_full_command_line[*]} & exit 0 ;;
-          2) try_remove_file "$portwine_exe".ppdb             
-             /usr/bin/env bash -c ${pw_full_command_line[*]} & exit 0 ;;
-        150) xdg-open "${PORTWINE_DB_FILE}" & exit 0 ;;
-        252) exit 0 ;;
+          1) 
+                /usr/bin/env bash -c "${pw_full_command_line[*]}" &
+                exit 0
+                ;;
+          2) 
+                try_remove_file "$portwine_exe".ppdb             
+                /usr/bin/env bash -c "${pw_full_command_line[*]}" &
+                exit 0
+                ;;
+        252) 
+                exit 0
+                ;;
     esac
     output_yad_edit_db=(`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_edit_db"`)
     bool_from_yad=0
@@ -302,7 +309,18 @@ pw_gui_for_edit_db () {
     edit_db_from_gui $@ LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL WINEDLLOVERRIDES PW_WINE_CPU_TOPOLOGY GAMESCOPE_ARGS
     edit_user_conf_from_gui PW_GPU_USE
     # PW_AMD_VULKAN_USE
-    return 0
+
+    case "$YAD_STATUS" in
+          0) 
+                print_info "Restarting PP after update ppdb file..."
+                /usr/bin/env bash -c "${pw_full_command_line[*]}" &
+                exit 0
+                ;;
+        150) 
+                xdg-open "${PORTWINE_DB_FILE}" & 
+                exit 0
+                ;;
+    esac
 }
 
 
@@ -721,7 +739,7 @@ portwine_create_shortcut () {
 
         echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop"
         echo "Name=${name_desktop}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
-        if  grep -i "flatpak" /etc/os-release &>/dev/null
+        if check_flatpak
         then echo "Exec=flatpak run ru.linux_gaming.PortProton \"${portwine_exe}\" " >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
         else echo "Exec=env "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" "" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
         fi
@@ -753,7 +771,7 @@ portwine_create_shortcut () {
             echo "#!/usr/bin/env bash" > "${STEAM_SCRIPTS}/${name_desktop}.sh"
             echo "export START_FROM_STEAM=1" >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
             echo "export LD_PRELOAD=" >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
-            if grep -i "flatpak" /etc/os-release &>/dev/null
+            if check_flatpak
             then echo "flatpak run ru.linux_gaming.PortProton \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
             else echo "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh"
             fi