From 1280cb9ac5f662dee138d03daa0040ee825fd7a8 Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Thu, 14 Mar 2024 22:27:18 +0300 Subject: [PATCH] Scripts version 2262 --- data_from_portwine/changelog_eng | 11 + data_from_portwine/changelog_rus | 5 + data_from_portwine/scripts/functions_helper | 225 +++++++++++--------- data_from_portwine/scripts/lang | 12 +- data_from_portwine/scripts/runlib | 140 ++++++++---- data_from_portwine/scripts/start.sh | 37 ++-- data_from_portwine/scripts/var | 3 +- 7 files changed, 268 insertions(+), 165 deletions(-) diff --git a/data_from_portwine/changelog_eng b/data_from_portwine/changelog_eng index 6c1234f..a53d333 100755 --- a/data_from_portwine/changelog_eng +++ b/data_from_portwine/changelog_eng @@ -2,6 +2,17 @@ You can help us in the development of the project on the website: https://linux- ---------------------------------------- Changelog: +###Scripts version 2262### Date: 14.03.2024 / Download update size: 230 megabytes +* added a warning when starting the second PortProton session +* added the ability to disable the container +* added the ability to use system WINE +* updated PROTON_LG to version 9-1 +* updated versions: + DXVK_GIT "2.3-90" + VKD3D_GIT "1.1-3954" +* fixed installation of libraries from the prefix manager on openSUSE OS (thanks to Boria138) +* a separate version of PROTON is no longer required for Black Desert Online + ###Scripts version 2261### Date: 07.03.2024 / Download update size: 15 megabytes * HOTFIX - use settings from Black Desert Online launcher diff --git a/data_from_portwine/changelog_rus b/data_from_portwine/changelog_rus index 305d1fc..71d4be0 100755 --- a/data_from_portwine/changelog_rus +++ b/data_from_portwine/changelog_rus @@ -2,10 +2,15 @@ ----------------------------------------- История изменений: +###Scripts version 2262### Дата: 14.03.2024 / Размер скачиваемого обновления: 230 мегабайт +* добавлено предупреждение при запуске второй сессии PortProton +* добавлена возможность отключения контейнера +* добавлена возможность использования системного WINE * обновлен PROTON_LG до версии 9-1 * обновлены версии: DXVK_GIT "2.3-90" VKD3D_GIT "1.1-3954" +* исправлена установка библиотек из префикс менеджера на ОС "OpenSUSE" (спасибо Boria138) * для Black Desert Online более не требуется отдельной версии PROTON ###Scripts version 2261### Дата: 07.03.2024 / Размер скачиваемого обновления: 15 мегабайт diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 6c4c2d0..6367207 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -411,7 +411,16 @@ check_user_conf () { } init_wine_ver () { - if [[ -d "${PORT_WINE_PATH}/data/dist" ]] ; then + if [[ "${PW_WINE_USE}" == "USE_SYSTEM_WINE" ]] \ + && command -v wine &>/dev/null ; then + export WINEDIR="$RT_PREFIX/usr" + export WINE="$RT_PREFIX/$(command -v wine)" + export WINELOADER="$WINE" + export WINESERVER="$RT_PREFIX/$(command -v wineserver)" + export PW_USE_RUNTIME=0 + export PW_NO_FSYNC=1 + else + if [[ -d "${PORT_WINE_PATH}/data/dist" ]] ; then orig_IFS="$IFS" IFS=$'\n' for dist_dir in $(ls -1 "${PORT_WINE_PATH}/data/dist/") ; do @@ -421,93 +430,113 @@ init_wine_ver () { fi done IFS="$orig_IFS" - fi - if [[ -z `ls "${PORT_WINE_PATH}/data/dist/" | grep "${PW_WINE_USE}"` ]] ; then - if [[ "$PW_WINE_USE" =~ PROTON_LG* ]] - then export PW_WINE_USE=PROTON_LG - else export PW_WINE_USE=WINE_LG fi - fi - if [[ "$PW_WINE_USE" == PROTON_LG ]] - then export PW_WINE_USE="${PW_PROTON_LG_VER}" - elif [[ "$PW_WINE_USE" == WINE_LG ]] - then export PW_WINE_USE="${PW_WINE_LG_VER}" - fi - [ ! -z "${PW_WINE_VER}" ] && export PW_WINE_USE=`echo "${PW_WINE_VER}" | tr [[:lower:]] [[:upper:]]` - [ ! -z "${PW_WINE_USE}" ] && export PW_WINE_USE=`echo "${PW_WINE_USE}" | tr [[:lower:]] [[:upper:]]` - unset PW_WINE_VER - export WINEDIR="${PORT_WINE_PATH}/data/dist/${PW_WINE_USE}" - export WINE="${WINEDIR}/bin/wine" - export WINELOADER="${WINEDIR}/bin/wine" - export WINESERVER="${WINEDIR}/bin/wineserver" - - export WINEDLLPATH="${WINEDIR}/lib64/wine:${WINEDIR}/lib/wine" - if [[ -d "${PATH_TO_GAME}" ]] ; then - export WINEDLLPATH+=":${PATH_TO_GAME}" - fi - - if [[ -d "${WINEDIR}/files" && ! -d "${WINEDIR}/dist" ]] ; then - for clear_dist_files in `ls "${WINEDIR}" | sed -e "s/^files$//g" | sed -e "s/^version$//g"` ; do - rm -fr "${WINEDIR}/$clear_dist_files" - done - mv -f "${WINEDIR}/files"/* "${WINEDIR}/" - rm -fr "${WINEDIR}/files" - elif [[ ! -d "${WINEDIR}/files" && -d "${WINEDIR}/dist" ]] ; then - for clear_dist_files in `ls "${WINEDIR}" | sed -e "s/^dist$//g" | sed -e "s/^version$//g"` ; do - rm -fr "${WINEDIR}/$clear_dist_files" - done - mv -f "${WINEDIR}/dist"/* "${WINEDIR}/" - rm -fr "${WINEDIR}/dist" - elif [ -f "${WINEDIR}/proton_dist.tar" ] ; then - unpack_tar "${WINEDIR}/proton_dist.tar" "${WINEDIR}/" - for clear_dist_files in `ls "${WINEDIR}" | sed -e "s/^bin$//g" | sed -e "s/^lib$//g" | sed -e "s/^lib64$//g" | sed -e "s/^share$//g" | sed -e "s/^version$//g"` ; do - rm -fr "${WINEDIR}/$clear_dist_files" - done - fi - if [[ -d "${WINEDIR}" ]] ; then - [[ ! -f "${WINEDIR}/version" ]] && echo "${PW_WINE_USE}" > "${WINEDIR}/version" - - if [[ ! -d "${WINEDIR}/lib64/" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then - create_new_dir "${WINEDIR}/lib64/wine" - mv -f "${WINEDIR}/lib/wine/x86_64-unix" "${WINEDIR}/lib64/wine/" - mv -f "${WINEDIR}/lib/wine/x86_64-windows" "${WINEDIR}/lib64/wine/" - fi - - for mono_gecko_chk in "mono" "gecko" ; do - if check_symlink "${WINEDIR}/share/wine/${mono_gecko_chk}" ; then - print_info "${WINEDIR}/share/wine/${mono_gecko_chk} is symlink. OK." - elif [[ -d "${WINEDIR}/share/wine/${mono_gecko_chk}" ]] ; then - pw_start_progress_bar_cover_block "${PW_GUI_ICON_PATH}/covers/loading_${update_loc}.gif" - try_copy_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" "${PORT_WINE_TMP_PATH}" - try_remove_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" - try_force_link_dir "${PORT_WINE_TMP_PATH}/${mono_gecko_chk}" "${WINEDIR}"/share/wine/ - print_info "Copy ${WINEDIR}/share/wine/${mono_gecko_chk} to tmp and create symlink to ${WINEDIR}/share/wine/. OK." - pw_stop_progress_bar_cover_block - else - try_remove_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" - try_force_link_dir "${PORT_WINE_TMP_PATH}/${mono_gecko_chk}" "${WINEDIR}"/share/wine - print_warning "${WINEDIR}/share/wine/${mono_gecko_chk} is broken symlink. Repair... OK." + if [[ -z `ls "${PORT_WINE_PATH}/data/dist/" | grep "${PW_WINE_USE}"` ]] ; then + if [[ "$PW_WINE_USE" =~ PROTON_LG* ]] + then export PW_WINE_USE=PROTON_LG + else export PW_WINE_USE=WINE_LG fi - done + fi + if [[ "$PW_WINE_USE" == PROTON_LG ]] + then export PW_WINE_USE="${PW_PROTON_LG_VER}" + elif [[ "$PW_WINE_USE" == WINE_LG ]] + then export PW_WINE_USE="${PW_WINE_LG_VER}" + fi + [ ! -z "${PW_WINE_VER}" ] && export PW_WINE_USE=`echo "${PW_WINE_VER}" | tr [[:lower:]] [[:upper:]]` + [ ! -z "${PW_WINE_USE}" ] && export PW_WINE_USE=`echo "${PW_WINE_USE}" | tr [[:lower:]] [[:upper:]]` + unset PW_WINE_VER - grep 'Global,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' "${WINEDIR}/share/wine/wine.inf" &> /dev/null - if [[ "$?" != "0" ]] ; then - echo 'HKLM,Software\NVIDIA Corporation\Global,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' >> "${WINEDIR}/share/wine/wine.inf" - echo 'HKLM,System\ControlSet001\Services\nvlddmkm,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' >> "${WINEDIR}/share/wine/wine.inf" - sed -i '/Steam.exe/d' "${WINEDIR}/share/wine/wine.inf" - sed -i '/\\Valve\\Steam/d' "${WINEDIR}/share/wine/wine.inf" - sed -i '/winemenubuilder/d' "${WINEDIR}/share/wine/wine.inf" + export WINEDIR="${PORT_WINE_PATH}/data/dist/${PW_WINE_USE}" + export WINE="${WINEDIR}/bin/wine" + export WINELOADER="${WINEDIR}/bin/wine" + export WINESERVER="${WINEDIR}/bin/wineserver" + if [[ -d "${WINEDIR}/files" && ! -d "${WINEDIR}/dist" ]] ; then + for clear_dist_files in `ls "${WINEDIR}" | sed -e "s/^files$//g" | sed -e "s/^version$//g"` ; do + rm -fr "${WINEDIR}/$clear_dist_files" + done + mv -f "${WINEDIR}/files"/* "${WINEDIR}/" + rm -fr "${WINEDIR}/files" + elif [[ ! -d "${WINEDIR}/files" && -d "${WINEDIR}/dist" ]] ; then + for clear_dist_files in `ls "${WINEDIR}" | sed -e "s/^dist$//g" | sed -e "s/^version$//g"` ; do + rm -fr "${WINEDIR}/$clear_dist_files" + done + mv -f "${WINEDIR}/dist"/* "${WINEDIR}/" + rm -fr "${WINEDIR}/dist" + elif [ -f "${WINEDIR}/proton_dist.tar" ] ; then + unpack_tar "${WINEDIR}/proton_dist.tar" "${WINEDIR}/" + for clear_dist_files in `ls "${WINEDIR}" | sed -e "s/^bin$//g" | sed -e "s/^lib$//g" | sed -e "s/^lib64$//g" | sed -e "s/^share$//g" | sed -e "s/^version$//g"` ; do + rm -fr "${WINEDIR}/$clear_dist_files" + done + fi + if [[ -d "${WINEDIR}" ]] ; then + [[ ! -f "${WINEDIR}/version" ]] && echo "${PW_WINE_USE}" > "${WINEDIR}/version" + + if [[ ! -d "${WINEDIR}/lib64/" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then + create_new_dir "${WINEDIR}/lib64/wine" + mv -f "${WINEDIR}/lib/wine/x86_64-unix" "${WINEDIR}/lib64/wine/" + mv -f "${WINEDIR}/lib/wine/x86_64-windows" "${WINEDIR}/lib64/wine/" + fi + + for mono_gecko_chk in "mono" "gecko" ; do + if check_symlink "${WINEDIR}/share/wine/${mono_gecko_chk}" ; then + print_info "${WINEDIR}/share/wine/${mono_gecko_chk} is symlink. OK." + elif [[ -d "${WINEDIR}/share/wine/${mono_gecko_chk}" ]] ; then + pw_start_progress_bar_cover_block "${PW_GUI_ICON_PATH}/covers/loading_${update_loc}.gif" + try_copy_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" "${PORT_WINE_TMP_PATH}" + try_remove_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" + try_force_link_dir "${PORT_WINE_TMP_PATH}/${mono_gecko_chk}" "${WINEDIR}"/share/wine/ + print_info "Copy ${WINEDIR}/share/wine/${mono_gecko_chk} to tmp and create symlink to ${WINEDIR}/share/wine/. OK." + pw_stop_progress_bar_cover_block + else + try_remove_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" + try_force_link_dir "${PORT_WINE_TMP_PATH}/${mono_gecko_chk}" "${WINEDIR}"/share/wine + print_warning "${WINEDIR}/share/wine/${mono_gecko_chk} is broken symlink. Repair... OK." + fi + done + + grep 'Global,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' "${WINEDIR}/share/wine/wine.inf" &> /dev/null + if [[ "$?" != "0" ]] ; then + echo 'HKLM,Software\NVIDIA Corporation\Global,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' >> "${WINEDIR}/share/wine/wine.inf" + echo 'HKLM,System\ControlSet001\Services\nvlddmkm,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' >> "${WINEDIR}/share/wine/wine.inf" + sed -i '/Steam.exe/d' "${WINEDIR}/share/wine/wine.inf" + sed -i '/\\Valve\\Steam/d' "${WINEDIR}/share/wine/wine.inf" + sed -i '/winemenubuilder/d' "${WINEDIR}/share/wine/wine.inf" + fi + fi + + rm -f "${WINEDIR}"/lib*/*steam* &>/dev/null + rm -f "${WINEDIR}"/lib*/wine/*/*steam* &>/dev/null + rm -f "${WINEDIR}"/lib*/wine/*-windows/winemenubuilder.exe &>/dev/null + + export WINEDLLPATH="${WINEDIR}/lib64/wine:${WINEDIR}/lib/wine" + if [[ -d "${PATH_TO_GAME}" ]] ; then + export WINEDLLPATH+=":${PATH_TO_GAME}" fi fi - rm -f "${WINEDIR}"/lib*/*steam* &>/dev/null - rm -f "${WINEDIR}"/lib*/wine/*/*steam* &>/dev/null - rm -f "${WINEDIR}"/lib*/wine/*-windows/winemenubuilder.exe &>/dev/null + + if [ "${PW_USE_GSTREAMER}" = 1 ] ; then + if [ -d "${WINEDIR}/lib64/gstreamer-1.0" ] ; then + export GST_PLUGIN_SYSTEM_PATH_1_0="${WINEDIR}/lib64/gstreamer-1.0:${WINEDIR}/lib/gstreamer-1.0" + fi + create_new_dir "${PORT_WINE_TMP_PATH}"/gstreamer_tmp/ + export WINE_GST_REGISTRY_DIR="${PORT_WINE_TMP_PATH}"/gstreamer_tmp/ + export MEDIACONV_AUDIO_DUMP_FILE="${PORT_WINE_TMP_PATH}"/gstreamer_tmp/audio.foz + export MEDIACONV_AUDIO_TRANSCODED_FILE="${PORT_WINE_TMP_PATH}"/gstreamer_tmp/transcoded_audio.foz + export MEDIACONV_VIDEO_DUMP_FILE="${PORT_WINE_TMP_PATH}"/gstreamer_tmp/video.foz + export MEDIACONV_VIDEO_TRANSCODED_FILE="${PORT_WINE_TMP_PATH}"/gstreamer_tmp/transcoded_video.foz + else + var_winedlloverride_update "winegstreamer=" + fi return 0 } pw_init_runtime () { + if [[ "$PW_USE_RUNTIME" != 1 ]] ; then + export pw_runtime="" + return 0 + fi if grep -i -E '(ROSA|RED OS)' "/etc/os-release" &>/dev/null ; then export LOCPATH="/run/host/usr/share/locale/" @@ -516,7 +545,15 @@ pw_init_runtime () { fi PW_PV_OVERRIDES="/usr/lib/pressure-vessel/overrides/lib" - export PW_LD_LIBRARY_PATH="${WINEDIR}/lib64:${WINEDIR}/lib:${PW_PLUGINS_PATH}/portable/lib/lib64:${PW_PLUGINS_PATH}/portable/lib/lib32:${PW_PV_OVERRIDES}/x86_64-linux-gnu/aliases:${PW_PV_OVERRIDES}/i386-linux-gnu/aliases" + + export PW_LD_LIBRARY_PATH="\ +${WINEDIR}/lib64:${WINEDIR}/lib:\ +${PW_PLUGINS_PATH}/portable/lib/lib64:\ +${PW_PLUGINS_PATH}/portable/lib/lib32:\ +${PW_PV_OVERRIDES}/x86_64-linux-gnu/aliases:\ +${PW_PV_OVERRIDES}/i386-linux-gnu/aliases:\ +/overrides/lib/x86_64-linux-gnu:\ +/overrides/lib/i386-linux-gnu" if [ ! -z ${PATH_TMP} ] then export PATH="${PATH_TMP}" @@ -527,20 +564,6 @@ pw_init_runtime () { else export PATH="${WINEDIR}/bin:${PW_PLUGINS_PATH}/portable/bin" fi - if [ "${PW_USE_GSTREAMER}" = 1 ] ; then - if [ -d "${WINEDIR}/lib64/gstreamer-1.0" ] ; then - export GST_PLUGIN_SYSTEM_PATH_1_0="${WINEDIR}/lib64/gstreamer-1.0:${WINEDIR}/lib/gstreamer-1.0" - fi - create_new_dir "${WINEDIR}"/gstreamer_tmp/ - export WINE_GST_REGISTRY_DIR="${WINEDIR}"/gstreamer_tmp/ - export MEDIACONV_AUDIO_DUMP_FILE="${WINEDIR}"/gstreamer_tmp/audio.foz - export MEDIACONV_AUDIO_TRANSCODED_FILE="${WINEDIR}"/gstreamer_tmp/transcoded_audio.foz - export MEDIACONV_VIDEO_DUMP_FILE="${WINEDIR}"/gstreamer_tmp/video.foz - export MEDIACONV_VIDEO_TRANSCODED_FILE="${WINEDIR}"/gstreamer_tmp/transcoded_video.foz - else - var_winedlloverride_update "winegstreamer=" - fi - if [[ ! -z "${PW_SANDBOX_HOME_PATH}" && -d "${PW_SANDBOX_HOME_PATH}" ]] ; then export pw_runtime="${PW_WINELIB}/pressure-vessel/bin/pressure-vessel-unruntime \ --unshare-home \ @@ -593,7 +616,9 @@ pw_init_runtime () { } pw_mangohud_check () { - if [[ "${PW_MANGOHUD}" == "1" ]] && ! check_gamescope_session ; then + if [[ "${PW_MANGOHUD}" == "1" ]] \ + && ! check_gamescope_session + then export PW_MANGOHUD_SLR='MANGOHUD=1' MANGOHUD_LIB_NAME="libMangoHud.so" if [[ "${PW_VULKAN_USE}" = "0" ]] ; then @@ -614,11 +639,13 @@ 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}" + fi if [[ ! -z "${PW_VKBASALT_EFFECTS}" ]] && [[ ! -z "${PW_VKBASALT_FFX_CAS}" ]] ; then - export VKBASALT_CONFIG_FILE="${PORT_WINE_PATH}/data/vkBasalt.conf" sed -ri "s/effects = .*/effects = ${PW_VKBASALT_EFFECTS}/g" "${VKBASALT_CONFIG_FILE}" sed -ri "s/casSharpness .*/casSharpness = ${PW_VKBASALT_FFX_CAS}/g" "${VKBASALT_CONFIG_FILE}" - sed -ri "s|= .*/reshade|= \"${PW_WINELIB}\"/pressure-vessel/reshade|g" "${VKBASALT_CONFIG_FILE}" fi var_vk_istance_layers_config_update "VK_LAYER_VKBASALT_post_processing64:VK_LAYER_VKBASALT_post_processing32" print_info "vkBasalt is enabled" @@ -655,6 +682,7 @@ wait_wineserver () { while [ ! -z "$(ls -l /proc/*/exe 2>/dev/null | grep -ie ${portname} | grep -E 'wine(64)?-preloader|wineserver' | awk -F/ '{print $3}')" ] ; do sleep 1 done + "$WINESERVER" -w return 0 } export -f wait_wineserver @@ -686,9 +714,10 @@ pw_kill_autostart () { else SWAIT="${2}" fi sleep 5 - while true ; do - if [[ -z "`ps aux | grep -m 1 -i "$1" | grep -v grep | awk '{print $2}'`" ]] && [[ ! -z "`ps aux | grep wrap | grep -v grep | grep -i ${portname} | head -n 1`" ]] ; then + if [[ -z "`ps aux | grep -m 1 -i "$1" | grep -v grep | awk '{print $2}'`" ]] \ + && [[ ! -z "`ps aux | grep wrap | grep -v grep | grep -i ${portname} | head -n 1`" ]] + then echo -e "PID "$1" not found" sleep "${SWAIT}" else @@ -700,7 +729,7 @@ pw_kill_autostart () { break fi done - + if [[ ! -z "`ls "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/ | grep -m 1 ".tmp"`" ]] ; then rm -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/*.tmp fi diff --git a/data_from_portwine/scripts/lang b/data_from_portwine/scripts/lang index 1ac53e9..e274e50 100755 --- a/data_from_portwine/scripts/lang +++ b/data_from_portwine/scripts/lang @@ -128,6 +128,8 @@ if [[ "${update_loc}" == "RUS" ]] ; then export loc_gui_dll_new_pfx="Установить рекомендованные библиотеки в новый префикс: " + export loc_gui_portproton_lock='Завершите предыдущую сессию PortProton перед запуском новой,\nили воспользуйтесь ПКМ на значке в трее -> Завершить работу PortProton.' + export ENABLE_VKBASALT_INFO='Включить vkBasalt по умолчанию для улучшение графики в играх работающих под Vulkan. (Горячая клавиша HOME отключает vkbasalt)' export PW_NO_ESYNC_INFO='Не использовать примитивы внутрипроцессной синхронизации на основе eventfd. (Рекомендуется не изменять значение)' export PW_NO_FSYNC_INFO='Не использовать примитивы внутрипроцессной синхронизации на основе фьютексов. (Автоматически отключается в системах без FUTEX_WAIT_MULTIPLE поддержки) (Рекомендуется не изменять значение)' @@ -280,8 +282,8 @@ if [[ "${update_loc}" == "RUS" ]] ; then export PW_MH_wine_INFO='Показать используемую версию Wine или Proton' export PW_PFX_BACKUP_INFO="Внимание! Не передавайте резевную копию третьим лицам, есть риск потери аккаунтов" - export PW_PFX_BACKUP_SUCCESS="Резервная копия префикса: \"${PW_PREFIX_NAME}\" успешно создана" - export PW_PFX_BACKUP_ERROR="Во время создания резервной копии префикса: \"${PW_PREFIX_NAME}\" произошла ошибка" + export PW_PFX_BACKUP_SUCCESS="Успешно создана резервная копия префикса:" + export PW_PFX_BACKUP_ERROR="Произошла ошибка во время создания резервной копии префикса:" export loc_find_d3dadapter9_error="не найден в системе.\nУстановите недостающий пакет: d3dadapter9" @@ -537,6 +539,8 @@ elif [[ "${update_loc}" == "ENG" ]] ; then export loc_gui_dll_new_pfx="Do you want to installing recommended libraries in the new prefix: " + export loc_gui_portproton_lock='End the previous PortProton session before starting a new one,\nor use the RMB on the tray icon -> Shut down PortProton.' + export ENABLE_VKBASALT_INFO='Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)' export PW_NO_ESYNC_INFO='Do not use in-process synchronization primitives based on eventfd. (It is recommended not to change the value.)' export PW_NO_FSYNC_INFO='Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems without FUTEX_WAIT_MULTIPLE support) (It is recommended not to change the value)' @@ -689,8 +693,8 @@ elif [[ "${update_loc}" == "ENG" ]] ; then export PW_MH_wine_INFO='Show current Wine or Proton version in use' export PW_PFX_BACKUP_INFO="Attention! Do not pass the resev copy to third parties, there is a risk of losing accounts" - export PW_PFX_BACKUP_SUCCESS="Prefix backup: \"${PW_PREFIX_NAME}\" has been successfully created" - export PW_PFX_BACKUP_ERROR="An error occurred while backing up the prefix: \"${PW_PREFIX_NAME}\" error occurred" + export PW_PFX_BACKUP_SUCCESS="Backup has been successfully created for prefix:" + export PW_PFX_BACKUP_ERROR="An error occurred while backing up the prefix:" export loc_find_d3dadapter9_error="Not found in the system.\nInstall the missing package: d3dadapter9" diff --git a/data_from_portwine/scripts/runlib b/data_from_portwine/scripts/runlib index 7abb945..4b0a985 100755 --- a/data_from_portwine/scripts/runlib +++ b/data_from_portwine/scripts/runlib @@ -50,10 +50,12 @@ start_portwine () { var_winedlloverride_update "${PW_MUST_WINEDLLOVERRIDES}" pw_list_install_dll_in_prefix - pw_check_and_download_wine "${PW_WINE_USE}" + if [[ "${PW_WINE_USE}" != "USE_SYSTEM_WINE" ]] + then pw_check_and_download_wine "${PW_WINE_USE}" + fi init_wine_ver pw_init_runtime - + check_variables VKD3D_DEBUG none check_variables DXVK_LOG_LEVEL none check_variables VK_LOADER_DEBUG none @@ -330,7 +332,7 @@ start_portwine () { PW_GAMEMODERUN_SLR="gamemoderun" systemctl enable --now --user gamemoded &>/dev/null print_info "Gamemod will be launched." - else + elif [[ "$PW_USE_RUNTIME" == 1 ]] ; then export GAMEMODERUN=1 if ! pidof gamemoded &>/dev/null ; then GAMEMODEAUTO_NAME="libgamemodeauto.so.0" @@ -345,6 +347,9 @@ start_portwine () { print_info "Gamemod will be launched." sleep 0.1 fi + else + export GAMEMODERUN=0 + export PW_GAMEMODERUN_SLR="" fi else export GAMEMODERUN=0 @@ -654,6 +659,9 @@ start_portwine () { gsettings set org.cinnamon.muffin unredirect-fullscreen-windows true fi fi + + pw_mangohud_check + pw_vkbasalt_check } pw_run () { @@ -666,55 +674,88 @@ pw_run () { else cd "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" fi - pw_mangohud_check - pw_vkbasalt_check PW_LOG_TO_FILE="${PORT_WINE_PATH}/${portname}.log" print_var "WINEDIR" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_WINE_USE" "PW_VULKAN_USE" "VULKAN_DRIVER_NAME" print_var "VULKAN_API_DRIVER_VERSION" "VKD3D_CONFIG" "PW_LD_LIBRARY_PATH" "PATH" "WINEESYNC" "WINEFSYNC" "WINEFSYNC_FUTEX2" print_var "WINEDLLPATH" "WINE_CPU_TOPOLOGY" "PW_RUN_GAMESCOPE" "LD_LIBRARY_PATH" kill -s SIGUSR1 "$PW_YAD_PID_PFX_COVER_UI" &>/dev/null - if [[ "${PW_LOG}" == 1 ]] ; then - if check_start_from_steam ; then - for VAR_LOGGER in PW_WINE_USE WINEDIR WINEDLLPATH WINEPREFIX PATH_TO_GAME PW_VULKAN_USE PW_LD_LIBRARY_PATH LD_LIBRARY_PATH PATH \ - VKD3D_CONFIG WINEESYNC WINEFSYNC WINEFSYNC_FUTEX2 WINE_CPU_TOPOLOGY DESKTOP_SESSION - do - echo "${VAR_LOGGER}=${!VAR_LOGGER}" >> "${PW_LOG_TO_FILE}" - done + if [[ "$PW_USE_RUNTIME" == 1 ]] ; then + if [[ "${PW_LOG}" == 1 ]] ; then + if check_start_from_steam ; then + for VAR_LOGGER in PW_WINE_USE WINEDIR WINEDLLPATH WINEPREFIX PATH_TO_GAME PW_VULKAN_USE PW_LD_LIBRARY_PATH LD_LIBRARY_PATH PATH \ + VKD3D_CONFIG WINEESYNC WINEFSYNC WINEFSYNC_FUTEX2 WINE_CPU_TOPOLOGY DESKTOP_SESSION + do + echo "${VAR_LOGGER}=${!VAR_LOGGER}" >> "${PW_LOG_TO_FILE}" + done + fi + echo "WINEDLLOVERRIDES=${WINEDLLOVERRIDES}" >> "${PW_LOG_TO_FILE}" + echo "------------------------------------" >> "${PW_LOG_TO_FILE}" + echo "Log WINE:" >> "${PW_LOG_TO_FILE}" + echo "" + print_info "Log from RUNTIME and WINE:" + ${PW_RUN_GAMESCOPE} \ + ${pw_runtime} \ + env PATH="${PATH}" \ + LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ + LD_PRELOAD="${PW_LD_PRELOAD}" \ + VK_LAYER_PATH="${PW_VK_LAYER_PATH}" \ + VK_INSTANCE_LAYERS=${PW_VK_INSTANCE_LAYERS} \ + ${PW_GAMEMODERUN_SLR} \ + ${PW_MANGOHUD_SLR} \ + "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" + else + if [[ "$PW_USE_TERMINAL" == 1 ]] \ + && [[ "$PW_USE_RUNTIME" == 1 ]] + then + export PW_ADD_TO_ARGS_IN_RUNTIME="--xterm" + pw_init_runtime + fi + echo "" + echo "Log WINE:" > "${PW_LOG_TO_FILE}" + print_info "Log from RUNTIME and WINE:" + ${PW_RUN_GAMESCOPE} \ + ${pw_runtime} \ + env PATH="${PATH}" \ + LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ + LD_PRELOAD="${PW_LD_PRELOAD}" \ + VK_LAYER_PATH="${PW_VK_LAYER_PATH}" \ + VK_INSTANCE_LAYERS="${PW_VK_INSTANCE_LAYERS}" \ + ${PW_GAMEMODERUN_SLR} \ + ${PW_MANGOHUD_SLR} \ + "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" + cat "${PW_LOG_TO_FILE}" fi - echo "WINEDLLOVERRIDES=${WINEDLLOVERRIDES}" >> "${PW_LOG_TO_FILE}" - echo "------------------------------------" >> "${PW_LOG_TO_FILE}" - echo "Log WINE:" >> "${PW_LOG_TO_FILE}" - echo "" - print_info "Log from RUNTIME and WINE:" - ${PW_RUN_GAMESCOPE} \ - ${pw_runtime} \ - env PATH="${PATH}" \ - LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ - LD_PRELOAD="${PW_LD_PRELOAD}" \ - VK_LAYER_PATH="${PW_VK_LAYER_PATH}" \ - VK_INSTANCE_LAYERS=${PW_VK_INSTANCE_LAYERS} \ - ${PW_GAMEMODERUN_SLR} \ - ${PW_MANGOHUD_SLR} \ - "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" else - if [[ "${PW_USE_TERMINAL}" == "1" ]] ; then - export PW_ADD_TO_ARGS_IN_RUNTIME="--xterm" - pw_init_runtime + if [[ "${PW_LOG}" == 1 ]] ; then + if check_start_from_steam ; then + for VAR_LOGGER in PW_WINE_USE WINEDIR WINEDLLPATH WINEPREFIX PATH_TO_GAME PW_VULKAN_USE PW_LD_LIBRARY_PATH LD_LIBRARY_PATH PATH \ + VKD3D_CONFIG WINEESYNC WINEFSYNC WINEFSYNC_FUTEX2 WINE_CPU_TOPOLOGY DESKTOP_SESSION + do + echo "${VAR_LOGGER}=${!VAR_LOGGER}" >> "${PW_LOG_TO_FILE}" + done + fi + echo "WINEDLLOVERRIDES=${WINEDLLOVERRIDES}" >> "${PW_LOG_TO_FILE}" + echo "------------------------------------" >> "${PW_LOG_TO_FILE}" + echo "Log WINE:" >> "${PW_LOG_TO_FILE}" + echo "" + print_info "Log WINE:" + env \ + ${PW_GAMEMODERUN_SLR} \ + ${PW_MANGOHUD_SLR} \ + "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" + wait_wineserver + else + echo "" + echo "Log WINE:" > "${PW_LOG_TO_FILE}" + print_info "Log WINE:" + env \ + ${PW_GAMEMODERUN_SLR} \ + ${PW_MANGOHUD_SLR} \ + "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} + wait_wineserver + + # ${PW_RUN_GAMESCOPE} \ !!! fi - echo "" - echo "Log WINE:" > "${PW_LOG_TO_FILE}" - print_info "Log from RUNTIME and WINE:" - ${PW_RUN_GAMESCOPE} \ - ${pw_runtime} \ - env PATH="${PATH}" \ - LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ - LD_PRELOAD="${PW_LD_PRELOAD}" \ - VK_LAYER_PATH="${PW_VK_LAYER_PATH}" \ - VK_INSTANCE_LAYERS="${PW_VK_INSTANCE_LAYERS}" \ - ${PW_GAMEMODERUN_SLR} \ - ${PW_MANGOHUD_SLR} \ - "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" - cat "${PW_LOG_TO_FILE}" fi } export -f pw_run @@ -824,6 +865,17 @@ check_user_conf check_variables PW_LOG "0" if [[ -z "${INSTALLING_PORT}" ]] ; then + if [[ -f "$HOME/.config/.portproton.lock" ]] ; then + yad_info "$loc_gui_portproton_lock" + exit 0 + fi + touch "$HOME/.config/.portproton.lock" + rm_lock_file () { + echo "Removing the lock file..." + rm "$HOME/.config/.portproton.lock" && echo "OK" + } + trap "rm_lock_file" EXIT + . "${USER_CONF}" if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] ; then pw_port_update diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index d49c212..1076a4c 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # Author: linux-gaming.ru +export PW_START_PID="$$" export NO_AT_BRIDGE=1 export pw_full_command_line=("$0" $*) export YAD_BORDERS=5 @@ -62,7 +63,7 @@ if [[ ! -z $(basename "${portwine_exe}" | grep .ppack) ]] ; then unset PW_SANDBOX_HOME_PATH pw_init_runtime export PW_PREFIX_NAME=$(basename "$1" | awk -F'.' '{print $1}') - ${pw_runtime} env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" unsquashfs -f -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" "$1" & + ${pw_runtime} "${PW_PLUGINS_PATH}/portable/bin/xterm" -e env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" unsquashfs -f -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" "$1" & sleep 10 while true ; do if [[ ! -z $(pgrep -a xterm | grep ".ppack" | head -n 1 | awk '{print $1}') ]] ; then @@ -378,10 +379,8 @@ pw_prefix_manager () { try_remove_file "${PORT_WINE_TMP_PATH}/to_winetricks" if [[ ! -z ${SET_FROM_PFX_MANAGER} ]] ; then - export PW_ADD_TO_ARGS_IN_RUNTIME="--xterm" - pw_init_runtime - ${pw_runtime} env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ - "${PORT_WINE_TMP_PATH}/winetricks" -q -r -f ${SET_FROM_PFX_MANAGER} &>>"${PORT_WINE_TMP_PATH}/update_pfx_log" + ${pw_runtime} "${PW_PLUGINS_PATH}/portable/bin/xterm" -e env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ + "${PORT_WINE_TMP_PATH}/winetricks" -q -r -f ${SET_FROM_PFX_MANAGER} gui_prefix_manager else print_info "Nothing to do. Restarting PortProton..." @@ -423,7 +422,6 @@ pw_winetricks () { pw_start_cont_xterm () { cd "$HOME" unset PW_SANDBOX_HOME_PATH - # export PW_ADD_TO_ARGS_IN_RUNTIME="--xterm" pw_init_runtime ${pw_runtime} \ env PATH="${PATH}" \ @@ -467,13 +465,13 @@ pw_create_prefix_backup () { done if [[ -f "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" ]] ; then mv -f "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack" - yad_info "$PW_PFX_BACKUP_SUCCESS" + yad_info "$PW_PFX_BACKUP_SUCCESS $PW_PREFIX_NAME" if [[ ! -f "${PORT_WINE_TMP_PATH}/pfx_backup_info" ]] ; then yad_info "$PW_PFX_BACKUP_INFO" echo "1" > "${PORT_WINE_TMP_PATH}/pfx_backup_info" fi else - yad_error "$PW_PFX_BACKUP_ERROR" + yad_error "$PW_PFX_BACKUP_ERROR $PW_PREFIX_NAME" fi return 0 @@ -483,17 +481,17 @@ pw_edit_db () { if [[ "${XDG_SESSION_TYPE}" == "wayland" ]] ; then pw_gui_for_edit_db \ PW_MANGOHUD PW_MANGOHUD_USER_CONF ENABLE_VKBASALT PW_VKBASALT_USER_CONF PW_NO_ESYNC PW_NO_FSYNC PW_USE_RAY_TRACING \ - PW_USE_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP PW_USE_TERMINAL \ - PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY \ - 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_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP \ + PW_USE_TERMINAL PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY \ + 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 else pw_gui_for_edit_db \ PW_MANGOHUD PW_MANGOHUD_USER_CONF ENABLE_VKBASALT PW_VKBASALT_USER_CONF PW_NO_ESYNC PW_NO_FSYNC PW_USE_RAY_TRACING \ - PW_USE_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP PW_USE_TERMINAL \ - PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME \ - PW_REDUCE_PULSE_LATENCY 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_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP \ + PW_USE_TERMINAL PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY\ + 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..." @@ -535,7 +533,7 @@ case "${1}" in '--help' ) files_from_autoinstall=$(ls "${PORT_SCRIPTS_PATH}/pw_autoinstall") echo -e " -usege: [--reinstall] [--autoinstall] +use: [--reinstall] [--autoinstall] --reinstall reinstall files of the portproton to default settings --autoinstall [script_frome_pw_autoinstall] autoinstall from the list below: @@ -573,7 +571,10 @@ IFS=$IFS_OLD export PW_ADD_PREFIXES_TO_GUI="${PW_PREFIX_NAME^^}${PW_ADD_PREFIXES_TO_GUI}" PW_ALL_DIST=$(ls "${PORT_WINE_PATH}/data/dist/" | sed -e s/"${PW_WINE_LG_VER}$//g" | sed -e s/"${PW_PROTON_LG_VER}$//g") -unset DIST_ADD_TO_GUI +if command -v wine &>/dev/null +then DIST_ADD_TO_GUI="!USE_SYSTEM_WINE" +else unset DIST_ADD_TO_GUI +fi for DAIG in ${PW_ALL_DIST} do export DIST_ADD_TO_GUI="${DIST_ADD_TO_GUI}!${DAIG}" diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var index be37166..c540a67 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=2261 +#SCRIPTS_NEXT_VERSION=2262 ######################################################################## 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" @@ -8,6 +8,7 @@ export PW_VKBASALT_EFFECTS="Curves:cas" export PW_VKBASALT_FFX_CAS="0.66" export ENABLE_VKBASALT=1 export GAMESCOPE_ARGS="-F fsr" +export PW_USE_RUNTIME="1" export PW_RT_MOUNT_RO=("") export PW_RT_MOUNT_RW=("/media" "/mnt" "/run/media/${USER}" "${PORT_WINE_PATH}") #export PW_SANDBOX_HOME_PATH="${PORT_WINE_PATH}"