diff --git a/data_from_portwine/changelog_eng b/data_from_portwine/changelog_eng index 66892dee..7f296a8a 100755 --- a/data_from_portwine/changelog_eng +++ b/data_from_portwine/changelog_eng @@ -2,6 +2,12 @@ You can help us in the development of the project on the website: https://linux- ---------------------------------------- Changelog: +###Scripts version 2257### Date: 15.02.2024 / Download update size: 15 megabytes +* for all setup.exe is automatically selected by WINE_LG (corrects errors unarc.dll ) +* added a function to disable compositing (thanks to Boria138) +* improved prefix update function +* many small script improvements + ###Scripts version 2256### Date: 13.02.2024 / Download update size: 15 megabytes * updated WINE_LG to version 9-2 * updated versions: diff --git a/data_from_portwine/changelog_rus b/data_from_portwine/changelog_rus index 47eb0252..db471c06 100755 --- a/data_from_portwine/changelog_rus +++ b/data_from_portwine/changelog_rus @@ -2,7 +2,13 @@ ----------------------------------------- История изменений: -* для всех setup.exe автоматически используется WINE_LG (исправляет ошибки unarc.dll) +###Scripts version 2257### Дата: 15.02.2024 / Размер скачиваемого обновления: 15 мегабайт +* для всех setup.exe автоматически выбирается WINE_LG (исправляет ошибки unarc.dll) +* добавлена функция отключения композитинга (спасибо Boria138) +* для префиксов созданных вручную, добавлен выбор его наполнения (чистый, или с рекомендованными библиотеками) +* улучшена функция обновления префикса при смене версии WINE-PROTON +* улучшение переводов +* множество небольших улучшений скриптов ###Scripts version 2256### Дата: 13.02.2024 / Размер скачиваемого обновления: 15 мегабайт * обновлен WINE_LG до версии 9-2 diff --git a/data_from_portwine/img/gui/citra.png b/data_from_portwine/img/gui/citra.png index 2dc5c9c0..c3c3ccd1 100755 Binary files a/data_from_portwine/img/gui/citra.png and b/data_from_portwine/img/gui/citra.png differ diff --git a/data_from_portwine/img/gui/separator.png b/data_from_portwine/img/gui/separator.png index 338f4f42..1cdab369 100755 Binary files a/data_from_portwine/img/gui/separator.png and b/data_from_portwine/img/gui/separator.png differ diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index d08ebf6a..bca27053 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -125,7 +125,7 @@ try_download_no_mirror () { set -o pipefail curl -f -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' -L "$1" -o "$2" 2>&1 | \ tr '\r' '\n' | sed -ur 's|[# ]+||g;s|.*=.*||g;s|.*|#Downloading at &\n&|g' | \ - "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ + "${pw_yad_v12_3}" --progress --percentage=0 --text="${loc_downloading} ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --borders=15 if [ "${PIPESTATUS[0]}" != 0 ] ; then @@ -143,7 +143,7 @@ try_download () { set -o pipefail curl -f -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' -L "$1" -o "$2" 2>&1 | \ tr '\r' '\n' | sed -ur 's|[# ]+||g;s|.*=.*||g;s|.*|#Downloading at &\n&|g' | \ - "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ + "${pw_yad_v12_3}" --progress --percentage=0 --text="${loc_downloading} ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --borders=15 if [ "${PIPESTATUS[0]}" != 0 ] ; then @@ -151,7 +151,7 @@ try_download () { print_info "Try download ${PW_DOWNLOAD_FILE_NAME} from FTP" curl -f -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -L "ftp://171.22.215.18/archives/${PW_DOWNLOAD_FILE_NAME}" -o "$2" 2>&1 | \ tr '\r' '\n' | sed -ur 's|[# ]+||g;s|.*=.*||g;s|.*|#Downloading at &\n&|g' | \ - "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ + "${pw_yad_v12_3}" --progress --percentage=0 --text="${loc_downloading} ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --borders=15 if [ "${PIPESTATUS[0]}" != 0 ] ; then @@ -169,7 +169,7 @@ try_download_to_path () { set -o pipefail curl -f -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' -L "$1" -o "$2/$PW_DOWNLOAD_FILE_NAME" 2>&1 | \ tr '\r' '\n' | sed -ur 's|[# ]+||g;s|.*=.*||g;s|.*|#Downloading at &\n&|g' | \ - "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ + "${pw_yad_v12_3}" --progress --percentage=0 --text="${loc_downloading} ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --borders=15 if [ "${PIPESTATUS[0]}" != 0 ] ; then @@ -354,7 +354,7 @@ pw_reinstall_pp () { echo "" exit 1 fi - elif ! gui_question "${port_reinstall}" + elif ! yad_question "${port_reinstall}" then exit 1 fi pw_clear_pfx @@ -682,18 +682,24 @@ pw_kill_autostart () { export -f pw_kill_autostart stop_portwine () { - if [[ "$int_xneur" == "1" ]] ; then - xneur & - fi - if [[ "$PW_USE_US_LAYOUT" == "1" ]] && [[ "${XDG_SESSION_TYPE}" != "wayland" ]] && command -v setxkbmap &>/dev/null ; then + [[ "$int_xneur" == "1" ]] && xneur & + + if [[ "$PW_USE_US_LAYOUT" == "1" ]] \ + && [[ "${XDG_SESSION_TYPE}" != "wayland" ]] \ + && command -v setxkbmap &>/dev/null + then setxkbmap fi + if [[ "${XDG_SESSION_TYPE}" != "wayland" ]] \ && [[ "$(xrandr | sed -rn 's/^.*primary.* ([0-9]+x[0-9]+).*$/\1/p')" != "$PW_SCREEN_RESOLUTION" ]] then xrandr --output "$PW_SCREEN_PRIMARY" --mode "$PW_SCREEN_RESOLUTION" fi - if [[ "${PW_DISABLE_COMPOSITING}" == "1" ]] ; then + + if [[ "${PW_DISABLE_COMPOSITING}" == "1" ]] \ + && ! check_gamescope_session + then if [[ "${DESKTOP_SESSION}" =~ "plasma" ]] ; then qdbus org.kde.KWin /Compositor resume elif [[ "${DESKTOP_SESSION}" =~ "mate" ]] ; then @@ -704,13 +710,14 @@ stop_portwine () { gsettings set org.cinnamon.muffin unredirect-fullscreen-windows false fi fi + pw_stop_progress_bar try_remove_file "${PORT_SCRIPTS_PATH}/0" try_remove_file "${PORT_SCRIPTS_PATH}/1" kill_portwine && try_remove_dir "${PW_WINELIB}/var" find "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/" -maxdepth 1 -type f -name "*.tmp" -delete - if [ ! -z "`pgrep -a yad_v12_3 | grep "\--notification" | awk '{print $1}'`" ] ; then + if [[ ! -z "$(pgrep -a yad_v12_3 | grep "\--notification" | awk '{print $1}')" ]] ; then kill -s SIGUSR1 "`pgrep -a yad_v12_3 | grep "\--notification" | awk '{print $1}'`" 2>/dev/null fi add_in_stop_portwine #&>/dev/null @@ -881,11 +888,11 @@ 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" - 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}" - done - fi + 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}" + done + fi else try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" try_remove_dir "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}" @@ -906,7 +913,7 @@ pw_check_and_download_plugins () { fi else PW_NOTIFY_TEXT="Please wait for update PortProton" - pw_notify_send -u critical + pw_notify_send -u normal 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 @@ -932,6 +939,70 @@ pw_check_and_download_plugins () { return 0 } +check_dirs_and_files_in_pfx () { + create_new_dir "${WINEPREFIX}/dosdevices" + create_new_dir "${WINEPREFIX}/drive_c/windows/syswow64/" + create_new_dir "${WINEPREFIX}/drive_c/windows/system32/" + create_new_dir "${WINEPREFIX}/drive_c/tmp/.private/$USER/" + create_new_dir "${WINEPREFIX}/drive_c/tmp/.private/steamuser/" + + [ ! -d "${WINEPREFIX}/dosdevices/c:" ] && try_force_link_dir "${WINEPREFIX}/drive_c/" "${WINEPREFIX}/dosdevices/c:" + [ ! -d "${WINEPREFIX}/dosdevices/z:" ] && try_force_link_dir "/" "${WINEPREFIX}/dosdevices/z:" + [ ! -d "${WINEPREFIX}/dosdevices/h:" ] && try_force_link_dir "$HOME" "${WINEPREFIX}/dosdevices/h:" + + create_new_dir "${WINEPREFIX}/drive_c/windows/Fonts/" + LN_FONTS="arialbd.ttf courbd.ttf georgia.ttf micross.ttf msyh.ttf simsun.ttc arial.ttf cour.ttf malgun.ttf msgothic.ttc nirmala.ttf times.ttf" + for link_font in $LN_FONTS ; do + if [[ ! -f "${WINEPREFIX}/drive_c/windows/Fonts/${link_font}" ]] ; then + try_force_link_file "${WINEDIR}/share/fonts/${link_font}" "${WINEPREFIX}/drive_c/windows/Fonts/" + fi + done + + create_new_dir "${WINEPREFIX}/drive_c/users/steamuser" + if [[ ! -d "${WINEPREFIX}/drive_c/users/${USER}" ]] + then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser" "${WINEPREFIX}/drive_c/users/${USER}" + fi + + create_new_dir "${WINEPREFIX}/drive_c/users/Public/Documents/Steam" + create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/Documents/Steam" + if [[ ! -d "${WINEPREFIX}/drive_c/users/steamuser/My Documents" ]] + then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/Documents" "${WINEPREFIX}/drive_c/users/steamuser/My Documents" + fi + + create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming" + if [[ ! -d "${WINEPREFIX}/drive_c/users/steamuser/Application Data" ]] + then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming" "${WINEPREFIX}/drive_c/users/steamuser/Application Data" + fi + + create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Local" + create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/Local Settings" + if [[ ! -d "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data" ]] + then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Local" "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data" + fi + + find "${WINEPREFIX}/dosdevices" -xtype l -maxdepth 1 2>/dev/null -exec rm {} \; + rm -f "${WINEPREFIX}/dosdevices/"*:: + DRIVES=(d e f g i j k l m n o p q r s t u v w x y) + DEF_MOUNT_DIRS=('/media' "/media/$USER" '/mnt' '/run/media' "/run/media/$USER") + MOUNT_DIRS=($(find "${DEF_MOUNT_DIRS[@]}" -maxdepth 1 -type d 2>/dev/null | sort -u)) + + for drive_dir in "${MOUNT_DIRS[@]}" ; do + if [[ ! "${DEF_MOUNT_DIRS[@]}" =~ "$drive_dir" ]] \ + && ! realpath "${WINEPREFIX}/dosdevices"/*: | grep "$drive_dir" &>/dev/null ; then + drive_num=0 + while [[ "$drive_num" -lt "${#DRIVES[@]}" ]] ; do + drive_path="${WINEPREFIX}/dosdevices/${DRIVES[$drive_num]}:" + if [ ! -d "$drive_path" ] ; then + ln -sf "$drive_dir" "$drive_path" + break + else + ((drive_num++)) + fi + done + fi + done + } + check_nvidia_rtx () { if [[ ! -z $(echo "$LSPCI_VGA" | grep -i "nvidia") ]]; then # Turing (without nvidia 16XX) @@ -1138,15 +1209,15 @@ update_winetricks () { edit_db_from_gui () { print_info "edit_db_from_gui PORTWINE_DB_FILE=$PORTWINE_DB_FILE" for mod_db in $@ ; do - print_info "${mod_db}=${!mod_db}" - if [ -z "`cat "${PORTWINE_DB_FILE}" | grep "export ${mod_db}="`" ] ; then - echo "export ${mod_db}=\"${!mod_db}\"" >> "${PORTWINE_DB_FILE}" - elif [ "`cat "${PORTWINE_DB_FILE}" | grep "export ${mod_db}=" | grep -v "#"`" ] ; then - if [ "`cat "${PORTWINE_DB_FILE}" | grep "export ${mod_db}=" | grep -v "#"`" != "export ${mod_db}=\"${!mod_db}\"" ] ; then - sed -ri "s/^export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/" "${PORTWINE_DB_FILE}" + if ! grep "export ${mod_db}=" "${PORTWINE_DB_FILE}" &>/dev/null + then echo "export ${mod_db}=\"${!mod_db}\"" >> "${PORTWINE_DB_FILE}" + elif grep "export ${mod_db}=" "${PORTWINE_DB_FILE}" | grep -v "#" &>/dev/null + then + if [[ "$(grep "export ${mod_db}=" "${PORTWINE_DB_FILE}" | grep -v "#")" != "export ${mod_db}=\"${!mod_db}\"" ]] + then sed -ri "s/^export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/" "${PORTWINE_DB_FILE}" fi - elif [ "`cat "${PORTWINE_DB_FILE}" | grep "export ${mod_db}="`" != "export ${mod_db}=${!mod_db}" ] ; then - sed -ri "s/.*export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/g" "${PORTWINE_DB_FILE}" + elif [[ "$(grep "export ${mod_db}=" "${PORTWINE_DB_FILE}")" != "export ${mod_db}=${!mod_db}" ]] + then sed -ri "s/.*export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/g" "${PORTWINE_DB_FILE}" fi done return 0 @@ -1154,15 +1225,15 @@ edit_db_from_gui () { edit_user_conf_from_gui () { for mod_db in $@ ; do - print_info "${mod_db}=${!mod_db}" - if [ -z "`cat "${USER_CONF}" | grep "export ${mod_db}="`" ] ; then - echo "export ${mod_db}=\"${!mod_db}\"" >> "${USER_CONF}" - elif [ "`cat "${USER_CONF}" | grep "export ${mod_db}=" | grep -v "#"`" ] ; then - if [ "`cat "${USER_CONF}" | grep "export ${mod_db}=" | grep -v "#"`" != "export ${mod_db}=\"${!mod_db}\"" ] ; then - sed -ri "s/^export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/" "${USER_CONF}" + if ! grep "export ${mod_db}=" "${USER_CONF}" &>/dev/null + then echo "export ${mod_db}=\"${!mod_db}\"" >> "${USER_CONF}" + elif grep "export ${mod_db}=" "${USER_CONF}" | grep -v "#" &>/dev/null + then + if [[ "$(grep "export ${mod_db}=" "${USER_CONF}" | grep -v "#")" != "export ${mod_db}=\"${!mod_db}\"" ]] + then sed -ri "s/^export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/" "${USER_CONF}" fi - elif [ "`cat "${USER_CONF}" | grep "export ${mod_db}="`" != "export ${mod_db}=${!mod_db}" ] ; then - sed -ri "s/.*export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/g" "${USER_CONF}" + elif [[ "$(grep "export ${mod_db}=" "${USER_CONF}")" != "export ${mod_db}=${!mod_db}" ]] + then sed -ri "s/.*export ${mod_db}=.*/export ${mod_db}=\"${!mod_db}\"/g" "${USER_CONF}" fi done return 0 diff --git a/data_from_portwine/scripts/lang b/data_from_portwine/scripts/lang index 33d89f5b..1ac53e9c 100755 --- a/data_from_portwine/scripts/lang +++ b/data_from_portwine/scripts/lang @@ -122,9 +122,12 @@ if [[ "${update_loc}" == "RUS" ]] ; then export loc_winetricks="Запустить префикс менеджер для установки доп. библиотек в выбранный префикс" export loc_edit_db="Изменить файл настроек для" export loc_download_other_wine="Открыть меню для скачивания других версий WINE-PROTON" + export loc_downloading="Скачивание" export loc_clear_pfx="Очистить префикс для исправления проблем" + export loc_gui_dll_new_pfx="Установить рекомендованные библиотеки в новый префикс: " + export ENABLE_VKBASALT_INFO='Включить vkBasalt по умолчанию для улучшение графики в играх работающих под Vulkan. (Горячая клавиша HOME отключает vkbasalt)' export PW_NO_ESYNC_INFO='Не использовать примитивы внутрипроцессной синхронизации на основе eventfd. (Рекомендуется не изменять значение)' export PW_NO_FSYNC_INFO='Не использовать примитивы внутрипроцессной синхронизации на основе фьютексов. (Автоматически отключается в системах без FUTEX_WAIT_MULTIPLE поддержки) (Рекомендуется не изменять значение)' @@ -161,6 +164,7 @@ if [[ "${update_loc}" == "RUS" ]] ; then export PW_USE_SYSTEM_VK_LAYERS_INFO='Использовать системные mangohud, vkBasalt, obs-vkcapture и прочие приложения использующие vulkan layers' export PW_USE_OBS_VKCAPTURE_INFO='Включить возможность записи в OBS Studio с помощью obs-vkcapture (ВНИМАНИЕ: будет включено принудительное использование системных mangohud, vkBasalt, obs-vkcapture и прочих приложений использующих vulkan layers)' export PW_USE_GALLIUM_ZINK_INFO='Использовать драйвер zink (OpenGL поверх Vulkan), позволяет использовать vkBasalt в играх на OpenGL (ВНИМАНИЕ: необходима поддержка vulkan, используется wined3d (opengl) вместо dxvk, подходит для игр на OpenGL и старых версий DirectX, на более новых версиях DirectX возможны артефакты)' + export PW_DISABLE_COMPOSITING_INFO='Отключить композитинг (эффекты) рабочего стола. Зачастую улучшает производительность.' export PW_3DFX_INFO='Имитация старого графического ускорителя 3dfx (добавляет горизонтальные полосы)' export PW_AdaptiveSharpen_INFO='Увеличение резкости, можно использовать совместно с CAS' @@ -527,9 +531,12 @@ elif [[ "${update_loc}" == "ENG" ]] ; then export loc_winetricks="Run winetricks to install additional libraries to the selected prefix" export loc_edit_db="Edit database file for" export loc_download_other_wine="Open the menu to download other versions of WINE-PROTON " + export loc_downloading="Downloading" export loc_clear_pfx="Clear the prefix to fix problems" + export loc_gui_dll_new_pfx="Do you want to installing recommended libraries in the new prefix: " + 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)' @@ -566,6 +573,7 @@ elif [[ "${update_loc}" == "ENG" ]] ; then export PW_USE_SYSTEM_VK_LAYERS_INFO='Use system mangohud, vkBasalt, obs-vkcapture and other applications using vulkan layers' export PW_USE_OBS_VKCAPTURE_INFO='Enable the ability to write to OBS Studio using obs-vkcapture (ATTENTION: the forced use of system mangohud, vkBasalt, obs-vkcapture and other applications using vulkan layers will be enabled)' export PW_USE_GALLIUM_ZINK_INFO='Use the zink driver (OpenGL on top of Vulkan), allows you to use vkBasalt in OpenGL games (ATTENTION: vulkan support is required, wined3d (opengl) is used instead of dxvk, suitable for games on OpenGL and older versions of DirectX, artifacts are possible on newer versions of DirectX)' + export PW_DISABLE_COMPOSITING_INFO='Disable desktop compositing (effects). It often improves performance.' export PW_3DFX_INFO='Simulation of an old 3dfx graphics accelerator (adds horizontal stripes)' export PW_AdaptiveSharpen_INFO='Sharpness increase, can be used with CAS' diff --git a/data_from_portwine/scripts/portwine_db/Caliber b/data_from_portwine/scripts/portwine_db/Caliber index 2007257e..579557b4 100644 --- a/data_from_portwine/scripts/portwine_db/Caliber +++ b/data_from_portwine/scripts/portwine_db/Caliber @@ -4,6 +4,6 @@ #Rating=1-5 #####################examples########################### export PW_VULKAN_USE="2" -export PW_WINE_USE="WINE_LG_9-0" +export PW_WINE_USE="WINE_LG" export PW_PREFIX_NAME="CALIBER" export DISABLE_CP_DEFPFX=1 diff --git a/data_from_portwine/scripts/portwine_db/LOTF2 b/data_from_portwine/scripts/portwine_db/LOTF2 index 8f22b7a2..75a6a1da 100644 --- a/data_from_portwine/scripts/portwine_db/LOTF2 +++ b/data_from_portwine/scripts/portwine_db/LOTF2 @@ -3,4 +3,4 @@ #LOTF2.exe #Rating=5 #####################examples########################### -export PW_WINE_USE="WINE_LG_8-18-1" +export PW_WINE_USE="WINE_LG" diff --git a/data_from_portwine/scripts/portwine_db/League of Legends b/data_from_portwine/scripts/portwine_db/League of Legends index 944c9450..6c8e73b9 100755 --- a/data_from_portwine/scripts/portwine_db/League of Legends +++ b/data_from_portwine/scripts/portwine_db/League of Legends @@ -9,7 +9,7 @@ #Rating=1-5 #####################examples########################### export TEXT_OPSSL="" -[[ -z `which openssl` ]] && export TEXT_OPSSL="Install openssl in your system!!!\n" +[[ -z `which openssl` ]] && export TEXT_OPSSL="Install openssl in your system!\n" export PW_COMMENT_DB="${TEXT_OPSSL}Dwnload and start League of Legends can take a long time" # export WINEDLLOVERRIDES="mscoree,mshtml=" export LAUNCH_PARAMETERS="--launch-product=league_of_legends --launch-patchline=live" diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_CALIBER b/data_from_portwine/scripts/pw_autoinstall/PW_CALIBER index 12c4c1f7..dfda15a2 100644 --- a/data_from_portwine/scripts/pw_autoinstall/PW_CALIBER +++ b/data_from_portwine/scripts/pw_autoinstall/PW_CALIBER @@ -4,7 +4,7 @@ export PW_PREFIX_NAME="CALIBER" export LAUNCH_PARAMETERS=("/VERYSILENT") export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/CaliberSetup.exe" -export PW_WINE_USE=WINE_LG_9-0 +export PW_WINE_USE=WINE_LG export DISABLE_CP_DEFPFX=1 export PORTWINE_CREATE_SHORTCUT_NAME="CALIBER" diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_DUCKSTATION b/data_from_portwine/scripts/pw_autoinstall/PW_DUCKSTATION deleted file mode 100755 index d0861384..00000000 --- a/data_from_portwine/scripts/pw_autoinstall/PW_DUCKSTATION +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -# Author: chal55rus (Sergey P.) -######################################################################## -export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/duckstation-windows-x64-release.zip" -start_portwine -if try_download_no_mirror "https://github.com/stenzek/duckstation/releases/download/preview/duckstation-windows-x64-release.zip" "${PW_AUTOINSTALL_EXE}" -then - pw_start_progress_bar_block "${loc_gui_installing_the} VBA-M. ${loc_gui_please_wait} " - "$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/Duckstation" - portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Duckstation/duckstation-qt-x64-ReleaseLTCG.exe" - try_remove_file "${PW_AUTOINSTALL_EXE}" - try_remove_file "${portwine_exe}.ppdb" - kill_portwine - pw_stop_progress_bar - export PORTWINE_CREATE_SHORTCUT_NAME="DuckStation" - portwine_create_shortcut -fi -stop_portwine diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_RPCS3 b/data_from_portwine/scripts/pw_autoinstall/PW_RPCS3 deleted file mode 100755 index 1e12d930..00000000 --- a/data_from_portwine/scripts/pw_autoinstall/PW_RPCS3 +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -# Author: chal55rus (Sergey P.) -######################################################################## -export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/rpcs3-v0.0.29-15676-9fce7080_win64.7z" -start_portwine -if try_download_no_mirror "https://github.com/RPCS3/rpcs3-binaries-win/releases/download/build-9fce70809ee06a7e61a3dbe5bb9b0179fc541d9f/rpcs3-v0.0.29-15676-9fce7080_win64.7z" "${PW_AUTOINSTALL_EXE}" -then - pw_start_progress_bar_block "${loc_gui_installing_the} RPCS3. ${loc_gui_please_wait} " - "$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/RPCS3" - portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/RPCS3/rpcs3.exe" - try_remove_file "${PW_AUTOINSTALL_EXE}" - try_remove_file "${portwine_exe}.ppdb" - kill_portwine - pw_stop_progress_bar - export PORTWINE_CREATE_SHORTCUT_NAME="RPCS3" - portwine_create_shortcut -fi -stop_portwine diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_SCUMMVM b/data_from_portwine/scripts/pw_autoinstall/PW_SCUMMVM deleted file mode 100755 index a64c4be8..00000000 --- a/data_from_portwine/scripts/pw_autoinstall/PW_SCUMMVM +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -# Author: chal55rus (Sergey P.) -########################################################################## -export LAUNCH_PARAMETERS=("/VERYSILENT") -export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/scummvm-2.7.1-win32.exe" -start_portwine -if try_download_no_mirror "https://downloads.scummvm.org/frs/scummvm/2.7.1/scummvm-2.7.1-win32.exe" "${PW_AUTOINSTALL_EXE}" -then - pw_start_progress_bar_block "${loc_gui_installing_the} ScummVM. ${loc_gui_please_wait} " - #pw_kill_autostart launcher101xp.exe & - pw_run "${PW_AUTOINSTALL_EXE}" - portwine_exe="$WINEPREFIX/drive_c/Program Files/ScummVM/scummvm.exe" - try_remove_file "${PW_AUTOINSTALL_EXE}" - try_remove_file "${portwine_exe}.ppdb" - kill_portwine - pw_stop_progress_bar - export PORTWINE_CREATE_SHORTCUT_NAME="ScummVM" - portwine_create_shortcut -fi -stop_portwine diff --git a/data_from_portwine/scripts/runlib b/data_from_portwine/scripts/runlib index dc2b92ca..019da9a5 100755 --- a/data_from_portwine/scripts/runlib +++ b/data_from_portwine/scripts/runlib @@ -22,50 +22,36 @@ fi . "$(dirname $(readlink -f "$0"))/functions_helper" start_portwine () { - var_winedlloverride_update "${PW_MUST_WINEDLLOVERRIDES}" export WINEPREFIX="$(readlink -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}")" - if [[ "$WINEPREFIX" != "${PORT_WINE_PATH}/data/prefixes/"* ]] && [[ ! -d "$WINEPREFIX" ]] ; then - yad_error "Path to PREFIX not found:\n$WINEPREFIX" - exit 1 - fi - create_new_dir "${WINEPREFIX}/drive_c/windows/system32/" - create_new_dir "${WINEPREFIX}/drive_c/windows/syswow64/" - try_force_link_dir "${PORT_WINE_PATH}/data/prefixes" "${WINEPREFIX}/drive_c/" - export WINEARCH="win64" - if [[ "${PW_VULKAN_USE}" == 3 ]] ; then - export PW_WINE_USE="${PW_PROTON_LG_VER}" - echo "Force to use $PW_WINE_USE" - if [ ! -d "${PORT_WINE_PATH}/data/dist/${PW_WINE_USE}" ] ; then - if try_download "github.com/Castro-Fidel/wine_builds/releases/download/${PW_WINE_USE}/${PW_WINE_USE}.tar.xz" \ - "${PORT_WINE_PATH}/data/tmp/${PW_WINE_USE}.tar.xz" ; then - if unpack_tar_xz "${PORT_WINE_PATH}/data/tmp/${PW_WINE_USE}.tar.xz" "${PORT_WINE_PATH}/data/dist/" ; then - try_remove_file "${PORT_WINE_PATH}/data/tmp/${PW_WINE_USE}.tar.xz" - UNPACK_STATUS=0 - else - try_remove_file "${PORT_WINE_PATH}/data/tmp/${PW_WINE_USE}.tar.xz" - try_remove_dir "${PORT_WINE_PATH}/data/dist/${PW_WINE_USE}" - fi - fi - [[ "${UNPACK_STATUS}" != 0 ]] && exit 1 + + PROGPFX_URL="github.com/Castro-Fidel/PortWINE/releases/download/progpfx${PROGPFX_VER}/progpfx${PROGPFX_VER}.tar.xz" + if [[ "${PW_PREFIX_NAME}" == "PROGRAMS" && ! -f "${WINEPREFIX}"/.progpfx ]] ; then + print_info "Download and install PROGRAMS pfx..." + if try_download "${PROGPFX_URL}" "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" ; then + unpack_tar_xz "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/" + try_remove_file "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" + else + try_remove_file "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" + yad_error_download && exit 1 fi - edit_db_from_gui PW_WINE_USE - else - pw_check_and_download_wine "${PW_WINE_USE}" fi - pw_install_dll_in_prefix + + DOTPFX_URL="github.com/Castro-Fidel/PortWINE/releases/download/dotpfx${DOTPFX_VER}/dotpfx${DOTPFX_VER}.tar.xz" + if [[ "${PW_PREFIX_NAME}" == "DOTNET" ]] && [[ ! -f "${WINEPREFIX}"/.dotnet${DOTPFX_VER} ]] ; then + print_info "Download and install DOTNET pfx..." + if try_download "${DOTPFX_URL}" "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" ; then + unpack_tar_xz "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/" + try_remove_file "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" + else + try_remove_file "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" + yad_error_download && exit 1 + fi + fi + + var_winedlloverride_update "${PW_MUST_WINEDLLOVERRIDES}" + pw_list_install_dll_in_prefix + pw_check_and_download_wine "${PW_WINE_USE}" init_wine_ver - - if [[ -f "$portwine_exe" ]] && [[ "${WARN_CYRILLIC_IN_PATH}" == 1 ]] ; then - edit_db_from_gui WARN_CYRILLIC_IN_PATH - unset WARN_CYRILLIC_IN_PATH - fi - - if [[ "$PW_USE_OBS_VKCAPTURE" == "1" ]] ; then - export OBS_VKCAPTURE="1" - export PW_USE_SYSTEM_VK_LAYERS="1" - print_warning "System mangohud, vkBasalt, obs-vk capture and other applications using vulkan layers are forcibly used." - fi - pw_init_runtime check_variables VKD3D_DEBUG none @@ -82,6 +68,65 @@ start_portwine () { unset WINE_MONO_TRACE fi + if [[ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/windows ]] \ + || [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/userdef.reg ]] \ + || [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/system.reg ]] \ + || [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/user.reg ]] + then + pw_clear_pfx + check_dirs_and_files_in_pfx + + pw_wineboot () { + print_info "Used wineboot $@ for prefix: ${PW_PREFIX_NAME}" + ${pw_runtime} env GST_PLUGIN_SYSTEM_PATH_1_0="" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ + "${WINELOADER}" wineboot $@ &>>"${PORT_WINE_TMP_PATH}/update_pfx_log" + wait_wineserver + print_info "The prefix has been updated." + } + + 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 + 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 + pw_wineboot -u + 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 + pw_wineboot -u + else + pw_update_pfx_cover_gui + pw_wineboot -i + fi + else + check_dirs_and_files_in_pfx + if [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" ]] \ + || ! grep "${PW_WINE_USE}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" &>/dev/null + then + pw_update_pfx_cover_gui + # HOTFIX - update prefix for vkPlay + if echo "$portwine_exe" | grep -i vkplay &>/dev/null + then pw_kill_autostart GameCe 5 please & : + fi + pw_wineboot -u + fi + fi + echo "${PW_WINE_USE}" > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" + + # if [[ -f "$portwine_exe" ]] && [[ "${WARN_CYRILLIC_IN_PATH}" == 1 ]] ; then + # edit_db_from_gui WARN_CYRILLIC_IN_PATH + # unset WARN_CYRILLIC_IN_PATH + # fi + + if [[ "$PW_USE_OBS_VKCAPTURE" == "1" ]] ; then + export OBS_VKCAPTURE="1" + export PW_USE_SYSTEM_VK_LAYERS="1" + print_warning "System mangohud, vkBasalt, obs-vk capture and other applications using vulkan layers are forcibly used." + fi + if [[ "${PW_NO_ESYNC}" == 1 ]] then export WINEESYNC="0" else export WINEESYNC="1" @@ -134,18 +179,6 @@ start_portwine () { export PW_USE_GAMESCOPE="0" export PW_RUN_GAMESCOPE="" fi - - if [[ "${PW_DISABLE_COMPOSITING}" == "1" ]] ; then - if [[ "${DESKTOP_SESSION}" =~ "plasma" ]] ; then - qdbus org.kde.KWin /Compositor suspend - elif [[ "${DESKTOP_SESSION}" =~ "mate" ]] ; then - gsettings set org.mate.Marco.general compositing-manager false - elif [[ "${DESKTOP_SESSION}" =~ "xfce" ]] ; then - xfconf-query -c xfwm4 -p /general/use_compositing -s false - elif [[ "${DESKTOP_SESSION}" =~ "cinnamon" ]] ; then - gsettings set org.cinnamon.muffin unredirect-fullscreen-windows true - fi - fi enabled_fake_nvidia_videocard () { @@ -222,8 +255,8 @@ start_portwine () { var_winedlloverride_update "nvngx,_nvngx=" fi - if [[ "${PW_USE_GALLIUM_ZINK}" == 1 ]] ; then - export PW_VULKAN_USE=5 + if [[ "${PW_USE_GALLIUM_ZINK}" == 1 ]] + then export PW_VULKAN_USE=5 fi if [[ "${PW_HEAP_DELAY_FREE}" == 1 ]] @@ -265,36 +298,6 @@ start_portwine () { fi fi - # if [[ "${PW_AMD_VULKAN_USE}" == "amdvlk" ]] ; then - # export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 - # if grep -i -q -E '(rosa|redos|nobara|linuxmint|ubuntu|centos|rhel|fedora)' "/etc/os-release" ; then - # export VK_ICD_FILENAMES="/opt/amdgpu/etc/vulkan/icd.d/amd_icd32.json:/opt/amdgpu/etc/vulkan/icd.d/amd_icd64.json" - # elif grep -i -q "altlinux" '/etc/os-release' ; then - # export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/amd_icd.json" - # else - # export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/amd_icd32.json:/usr/share/vulkan/icd.d/amd_icd64.json" - # fi - # elif [[ "${PW_AMD_VULKAN_USE}" == "amdgpupro" ]] ; then - # export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 - # if grep -i -q -E '(rosa|redos|nobara|linuxmint|ubuntu|centos|rhel|fedora)' "/etc/os-release" ; then - # export VK_ICD_FILENAMES="/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd32.json:/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd64.json" - # var_ld_library_path_update "/opt/amdgpu/libdrm/lib64:/opt/amdgpu/libdrm/lib32" - # else - # export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/amd_pro_icd32.json:/usr/share/vulkan/icd.d/amd_pro_icd64.json" - # fi - # elif [[ "${PW_AMD_VULKAN_USE}" == "radv" ]] ; then - # export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 - # export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json" - # elif [[ "${PW_AMD_VULKAN_USE}" == "radv_aco" ]] ; then - # export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 - # var_radv_perftest_config_update aco - # export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json" - # elif [[ "${PW_AMD_VULKAN_USE}" == "radv_gpl" ]] ; then - # export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 - # var_radv_perftest_config_update gpl - # export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json" - # fi - case "$PW_FORCE_USE_VSYNC" in # 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT 0) export vblank_mode=0 @@ -308,14 +311,15 @@ start_portwine () { unset vblank_mode __GL_SYNC_TO_VBLANK ;; esac + export int_xneur=0 if [[ ! -z "`pgrep xneur`" ]]; then killall xneur export int_xneur=1 fi - if [[ "$PW_USE_GAMEMODE" = "1" ]] ; then - if command -v gamemoded ; then + if [[ "$PW_USE_GAMEMODE" = "1" ]] ; then + if command -v gamemoded &>/dev/null ; then export GAMEMODERUN=1 PW_GAMEMODERUN_SLR="gamemoderun" systemctl enable --now --user gamemoded &>/dev/null @@ -342,110 +346,7 @@ start_portwine () { print_info "Gamemod is not installed or disabled in vars script or db file: PW_USE_GAMEMODE=$PW_USE_GAMEMODE" fi pw_other_fixes - - check_dirs_and_files_in_pfx () { - create_new_dir "${WINEPREFIX}" - create_new_dir "${WINEPREFIX}/drive_c" - create_new_dir "${WINEPREFIX}/dosdevices" - create_new_dir "${WINEPREFIX}/drive_c/windows/syswow64/" - create_new_dir "${WINEPREFIX}/drive_c/windows/system32/" - create_new_dir "${WINEPREFIX}/drive_c/tmp/.private/$USER/" - create_new_dir "${WINEPREFIX}/drive_c/tmp/.private/steamuser/" - - [ ! -d "${WINEPREFIX}/dosdevices/c:" ] && try_force_link_dir "${WINEPREFIX}/drive_c/" "${WINEPREFIX}/dosdevices/c:" - [ ! -d "${WINEPREFIX}/dosdevices/z:" ] && try_force_link_dir "/" "${WINEPREFIX}/dosdevices/z:" - [ ! -d "${WINEPREFIX}/dosdevices/h:" ] && try_force_link_dir "$HOME" "${WINEPREFIX}/dosdevices/h:" - - create_new_dir "${WINEPREFIX}/drive_c/windows/Fonts/" - LN_FONTS="arialbd.ttf courbd.ttf georgia.ttf micross.ttf msyh.ttf simsun.ttc arial.ttf cour.ttf malgun.ttf msgothic.ttc nirmala.ttf times.ttf" - for link_font in $LN_FONTS ; do - if [[ ! -f "${WINEPREFIX}/drive_c/windows/Fonts/${link_font}" ]] ; then - try_force_link_file "${WINEDIR}/share/fonts/${link_font}" "${WINEPREFIX}/drive_c/windows/Fonts/" - fi - done - - find "${WINEPREFIX}/dosdevices" -xtype l -maxdepth 1 2>/dev/null -exec rm {} \; - rm -f "${WINEPREFIX}/dosdevices/"*:: - DRIVES=(d e f g i j k l m n o p q r s t u v w x y) - DEF_MOUNT_DIRS=('/media' "/media/$USER" '/mnt' '/run/media' "/run/media/$USER") - MOUNT_DIRS=($(find "${DEF_MOUNT_DIRS[@]}" -maxdepth 1 -type d 2>/dev/null | sort -u)) - - for drive_dir in "${MOUNT_DIRS[@]}" ; do - if [[ ! "${DEF_MOUNT_DIRS[@]}" =~ "$drive_dir" ]] \ - && ! realpath "${WINEPREFIX}/dosdevices"/*: | grep "$drive_dir" &>/dev/null ; then - drive_num=0 - while [[ "$drive_num" -lt "${#DRIVES[@]}" ]] ; do - drive_path="${WINEPREFIX}/dosdevices/${DRIVES[$drive_num]}:" - if [ ! -d "$drive_path" ] ; then - ln -sf "$drive_dir" "$drive_path" - break - else - ((drive_num++)) - fi - done - fi - done - } - - PROGPFX_URL="github.com/Castro-Fidel/PortWINE/releases/download/progpfx${PROGPFX_VER}/progpfx${PROGPFX_VER}.tar.xz" - if [[ "${PW_PREFIX_NAME}" == "PROGRAMS" && ! -f "${WINEPREFIX}"/.progpfx ]] ; then - print_info "Download and install PROGRAMS pfx..." - if try_download "${PROGPFX_URL}" "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" ; then - unpack_tar_xz "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/" - try_remove_file "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" - else - try_remove_file "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" - yad_error_download && exit 1 - fi - fi - - DOTPFX_URL="github.com/Castro-Fidel/PortWINE/releases/download/dotpfx${DOTPFX_VER}/dotpfx${DOTPFX_VER}.tar.xz" - if [[ "${PW_PREFIX_NAME}" == "DOTNET" ]] && [[ ! -f "${WINEPREFIX}"/.dotnet${DOTPFX_VER} ]] ; then - print_info "Download and install DOTNET pfx..." - if try_download "${DOTPFX_URL}" "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" ; then - unpack_tar_xz "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/" - try_remove_file "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" - else - try_remove_file "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" - yad_error_download && exit 1 - fi - fi - pw_update_pfx_cover_gui - - if [[ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" \ - || ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/windows \ - || ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/userdef.reg \ - || ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/system.reg \ - || ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/user.reg ]] - then - pw_clear_pfx - check_dirs_and_files_in_pfx - if [[ -f "${PW_WINELIB}/default_pfx.tar.xz" ]] && [[ "${DISABLE_CP_DEFPFX}" != 1 ]] ; then - unpack_tar_xz "${PW_WINELIB}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent - fi - fi - echo "${PW_WINE_USE}" > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" - check_dirs_and_files_in_pfx - - create_new_dir "${WINEPREFIX}/drive_c/users/steamuser" - if [ ! -d "${WINEPREFIX}/drive_c/users/${USER}" ]; then - try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser" "${WINEPREFIX}/drive_c/users/${USER}" - fi - create_new_dir "${WINEPREFIX}/drive_c/users/Public/Documents/Steam" - create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/Documents/Steam" - if [ ! -d "${WINEPREFIX}/drive_c/users/steamuser/My Documents" ] - then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/Documents" "${WINEPREFIX}/drive_c/users/steamuser/My Documents" - fi - create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming" - if [ ! -d "${WINEPREFIX}/drive_c/users/steamuser/Application Data" ] - then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming" "${WINEPREFIX}/drive_c/users/steamuser/Application Data" - fi - create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Local" - create_new_dir "${WINEPREFIX}/drive_c/users/steamuser/Local Settings" - if [ ! -d "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data" ] - then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Local" "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data" - fi #enabled BattleEye_Runtime and EasyAntiCheat_Runtime if [[ "${PW_USE_EAC_AND_BE}" == 1 ]] ; then export PROTON_BATTLEYE_RUNTIME="${PW_PLUGINS_PATH}/BattlEye_Runtime" @@ -462,7 +363,10 @@ start_portwine () { unset PULSE_LATENCY_MSEC fi - if [[ "$PW_USE_US_LAYOUT" == "1" ]] && [[ "${XDG_SESSION_TYPE}" != "wayland" ]] && command -v setxkbmap &>/dev/null ; then + if [[ "$PW_USE_US_LAYOUT" == "1" ]] \ + && [[ "${XDG_SESSION_TYPE}" != "wayland" ]] \ + && command -v setxkbmap &>/dev/null + then setxkbmap -model pc101 us -print | xkbcomp - $DISPLAY &>/dev/null else export PW_USE_US_LAYOUT="0" @@ -692,6 +596,7 @@ start_portwine () { fi done if [[ "${USE_WT_FROM_DB}" == "1" ]] ; then + pw_update_pfx_cover_gui update_winetricks echo "START WINETRICKS..." >> "${PORT_WINE_TMP_PATH}/update_pfx_log" echo "Try to install DLL in prefix: ${PW_DLL_NEED_INSTALL}" >> "${PORT_WINE_TMP_PATH}/update_pfx_log" @@ -731,6 +636,20 @@ start_portwine () { if [[ -f "${PATH_TO_GAME}/dxvk.conf" ]] ; then export DXVK_CONFIG_FILE="${PATH_TO_GAME}/dxvk.conf" fi + + if [[ "${PW_DISABLE_COMPOSITING}" == "1" ]] \ + && ! check_gamescope_session + then + if [[ "${DESKTOP_SESSION}" =~ "plasma" ]] ; then + qdbus org.kde.KWin /Compositor suspend + elif [[ "${DESKTOP_SESSION}" =~ "mate" ]] ; then + gsettings set org.mate.Marco.general compositing-manager false + elif [[ "${DESKTOP_SESSION}" =~ "xfce" ]] ; then + xfconf-query -c xfwm4 -p /general/use_compositing -s false + elif [[ "${DESKTOP_SESSION}" =~ "cinnamon" ]] ; then + gsettings set org.cinnamon.muffin unredirect-fullscreen-windows true + fi + fi } pw_run () { diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index f25556e9..f8ea5823 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -45,7 +45,7 @@ if [[ -f "${PORT_WINE_TMP_PATH}/tmp_main_gui_size" ]] && [[ ! -z "$(cat ${PORT_W export PW_MAIN_SIZE_H="$(cat ${PORT_WINE_TMP_PATH}/tmp_main_gui_size | awk '{print $2}')" else export PW_MAIN_SIZE_W="1100" - export PW_MAIN_SIZE_H="300" + export PW_MAIN_SIZE_H="350" fi if [[ ! -z $(basename "${portwine_exe}" | grep .ppack) ]] ; then @@ -249,9 +249,9 @@ portwine_start_debug () { sed -i '/.fx$/d' "${PORT_WINE_PATH}/${portname}.log" sed -i '/HACK_does_openvr_work/d' "${PORT_WINE_PATH}/${portname}.log" sed -i '/Uploading is disabled/d' "${PORT_WINE_PATH}/${portname}.log" - sed -i '/dlopen failed - libgamemode.so/d' "${PORT_WINE_PATH}/${portname}.log" - sed -i '/gamemodeauto: /d' "${PORT_WINE_PATH}/${portname}.log" sed -i '/wine: RLIMIT_NICE is <= 20/d' "${PORT_WINE_PATH}/${portname}.log" + sed -i '/ALT_2.24/d' "${PORT_WINE_PATH}/${portname}.log" + sed -i '/UDEV monitor/d' "${PORT_WINE_PATH}/${portname}.log" deb_text=$(cat "${PORT_WINE_PATH}/${portname}.log" | awk '! a[$0]++') echo "$deb_text" > "${PORT_WINE_PATH}/${portname}.log" "$pw_yad" --title="${portname}.log" --borders=${YAD_BORDERS} --no-buttons --text-align=center \ @@ -680,7 +680,7 @@ else export -f run_desktop_b_click gui_clear_pfx () { - if gui_question "${port_clear_pfx}" ; then + if yad_question "${port_clear_pfx}" ; then pw_clear_pfx print_info "Restarting PP after clearing prefix..." export SKIP_CHECK_UPDATES=1 @@ -691,7 +691,7 @@ else export -f gui_clear_pfx gui_rm_portproton () { - if gui_question "${port_del2}" ; then + if yad_question "${port_del2}" ; then rm -fr "${PORT_WINE_PATH}" rm -fr "${PORT_WINE_TMP_PATH}" rm -fr "${HOME}/PortWINE" @@ -847,20 +847,16 @@ else # --field=" Bethesda.net Launcher"!"$PW_GUI_ICON_PATH/bethesda.png"!"":"FBTN" '@bash -c "button_click PW_BETHESDA"' # --field=" ROBLOX"!"$PW_GUI_ICON_PATH/roblox.png"!"":"FBTN" '@bash -c "button_click PW_ROBLOX"' - # --field=" DuckStation"!"$PW_GUI_ICON_PATH/duckstation.png"!"${loc_duckstation}":"FBTN" '@bash -c "button_click PW_DUCKSTATION"' - # --field=" ScummVM"!"$PW_GUI_ICON_PATH/scummvm.png"!"${loc_scummvm}":"FBTN" '@bash -c "button_click PW_SCUMMVM"' - # --field=" Rpcs3"!"$PW_GUI_ICON_PATH/rpcs3.png"!"${loc_rpcs3}":"FBTN" '@bash -c "button_click PW_RPCS3"' - - if [[ `command -v wmctrl` ]] &>/dev/null ; then - sleep 2 - while [[ $(pgrep -a yad_v12_3 | head -n 1 | awk '{print $1}' 2>/dev/null) ]] ; do - sleep 2 - PW_MAIN_GUI_SIZE_TMP="$(wmctrl -lG | grep PortProton-1.0 | awk '{print $5" "$6}' 2>/dev/null)" - if [[ ! -z "${PW_MAIN_GUI_SIZE_TMP}" ]] ; then - echo "${PW_MAIN_GUI_SIZE_TMP}" > "${PORT_WINE_TMP_PATH}/tmp_main_gui_size" - fi - done - fi & + # if command -v wmctrl &>/dev/null ; then + # sleep 2 + # while [[ -n $(pgrep -a yad_v12_3 | head -n 1 | awk '{print $1}' 2>/dev/null) ]] ; do + # sleep 2 + # PW_MAIN_GUI_SIZE_TMP="$(wmctrl -lG | grep "PortProton-${install_ver}" | awk '{print $5" "$6}' 2>/dev/null)" + # if [[ ! -z "${PW_MAIN_GUI_SIZE_TMP}" ]] ; then + # echo "${PW_MAIN_GUI_SIZE_TMP}" > "${PORT_WINE_TMP_PATH}/tmp_main_gui_size" + # fi + # done + # fi & export START_FROM_PP_GUI=1 diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var index d0d86a62..046f6f0f 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=2256 +#SCRIPTS_NEXT_VERSION=2257 ######################################################################## 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" @@ -60,7 +60,7 @@ export PW_MUST_WINEDLLOVERRIDES="steam_api,steam_api64,steamclient,steamclient64 ################################################################# export DXVK_CONFIG_FILE="${PORT_WINE_PATH}/data/dxvk.conf" ################################################################# -pw_install_dll_in_prefix () +pw_list_install_dll_in_prefix () { case $PW_PREFIX_NAME in DEFAULT) export PW_MUST_HAVE_DLL="d3dx9 d3dcompiler_43 physx mfc42 vcrun2022 sandbox" ;; diff --git a/data_from_portwine/scripts/yad_gui b/data_from_portwine/scripts/yad_gui index e44fe686..1a67902d 100755 --- a/data_from_portwine/scripts/yad_gui +++ b/data_from_portwine/scripts/yad_gui @@ -36,7 +36,7 @@ yad_error_download () { [[ "$?" != 0 ]] && return 1 || return 0 } -gui_question () { +yad_question () { if [[ ! -f "${pw_yad_v12_3}" ]] ; then local pw_yad_v12_3="yad" command -v "${pw_yad_v12_3}" &>/dev/null || fatal "yad not found" @@ -73,14 +73,14 @@ pw_start_progress_bar_cover_block () { } pw_update_pfx_cover_gui () { - if ! check_start_from_steam ; then - PW_KEY_PROGRESS_BAR=$RANDOM + if ! check_start_from_steam && ! pgrep -a yad | grep "yad_v12_3 --notebook --key=$PW_KEY_PROGRESS_BAR_UP" &>/dev/null ; then + PW_KEY_PROGRESS_BAR_UP=$RANDOM PW_GIF_FILE="${PW_GUI_ICON_PATH}/covers/update_prefix_${update_loc}.gif" PW_GIF_SIZE_X=`file "${PW_GIF_FILE}" | awk '{print $7 + 40}'` PW_GIF_SIZE_Y=`file "${PW_GIF_FILE}" | awk '{print $9 + 80}'` echo "UPDATE PREFIX..." > "${PORT_WINE_TMP_PATH}/update_pfx_log" export PW_TIMER=0 - while read -r line || [[ ! -z `pgrep -a yad | grep "yad_v12_3 --notebook --key="$PW_KEY_PROGRESS_BAR"" | awk '{print $1}'` ]] ; do + while read -r line || [[ ! -z `pgrep -a yad | grep "yad_v12_3 --notebook --key=$PW_KEY_PROGRESS_BAR_UP" | awk '{print $1}'` ]] ; do sleep 0.005 if [[ ! -z "${line}" ]] && [[ -z "`echo "${line}" | grep -i "gstreamer"`" ]] \ && [[ -z "`echo "${line}" | grep -i "kerberos"`" ]] \ @@ -92,10 +92,10 @@ pw_update_pfx_cover_gui () { sleep 3 PW_TIMER=1 fi - done < "${PORT_WINE_TMP_PATH}/update_pfx_log" | "${pw_yad_v12_3}" --plug=$PW_KEY_PROGRESS_BAR --tabnum="2" --text-info --tail 2>/dev/null & - "${pw_yad_v12_3}" --plug=$PW_KEY_PROGRESS_BAR --tabnum="1" --picture --filename="${PW_GIF_FILE}" --image-on-top 2>/dev/null & + done < "${PORT_WINE_TMP_PATH}/update_pfx_log" | "${pw_yad_v12_3}" --plug=$PW_KEY_PROGRESS_BAR_UP --tabnum="2" --text-info --tail 2>/dev/null & + "${pw_yad_v12_3}" --plug=$PW_KEY_PROGRESS_BAR_UP --tabnum="1" --picture --filename="${PW_GIF_FILE}" --image-on-top 2>/dev/null & - "${pw_yad_v12_3}" --notebook --key="$PW_KEY_PROGRESS_BAR" --tab=LOGO --tab=TERMINAL --no-buttons --undecorated \ + "${pw_yad_v12_3}" --notebook --key="$PW_KEY_PROGRESS_BAR_UP" --tab=LOGO --tab=TERMINAL --no-buttons --undecorated \ --center --auto-close --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y --tab-pos=bottom 2>/dev/null & export PW_YAD_PID_PFX_COVER_UI="$!" return 0 @@ -452,7 +452,7 @@ gui_proton_downloader () { if unpack_tar_${archive_type} "${PORT_WINE_PATH}/data/tmp/${PW_WINE_ARCHIVE}.tar.${archive_type}" "${PORT_WINE_PATH}/data/dist/" ; then try_remove_file "${PORT_WINE_PATH}/data/tmp/${PW_WINE_ARCHIVE}.tar.${archive_type}" if [ ! -z "${portwine_exe}" ]; then - PW_WINE_USE=${VERSION_WINE_GIT} + PW_WINE_USE="$(echo ${VERSION_WINE_GIT} | tr [[:lower:]] [[:upper:]])" edit_db_from_gui PW_WINE_USE fi else @@ -468,6 +468,7 @@ gui_proton_downloader () { if [[ "$1" != "silent" ]] ; then export SKIP_CHECK_UPDATES=1 + edit_db_from_gui /usr/bin/env bash -c ${pw_full_command_line[*]} & exit 0 else @@ -765,7 +766,7 @@ portwine_create_shortcut () { "${PORT_SCRIPTS_PATH}/add_in_steam.sh" done if [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && pgrep -i steam &>/dev/null ; then - if gui_question "$sc_restert_steam" ; then + if yad_question "$sc_restert_steam" ; then pw_start_progress_bar_block "Restarting STEAM... Please wait." kill -s SIGTERM $(pgrep -a steam) &>/dev/null while pgrep -i steam &>/dev/null ; do