diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 9b5a3447..1e2fa22e 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -121,7 +121,8 @@ try_download_game () { curl -C - -# -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 -u -e 's/#//g' -e 's/ //g' -e 's/\.[[:digit:]]%//' | \ "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ - --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 + --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ + --window-icon="$PW_GUI_ICON_PATH/port_proton.png" if [ "${PIPESTATUS[0]}" != 0 ] ; then print_error "Failed to download ${PW_DOWNLOAD_FILE_NAME}." return 1 @@ -132,18 +133,21 @@ try_download_game () { try_download () { PW_DOWNLOAD_FILE_NAME="$(basename $1)" + [[ ! -f "${pw_yad_v12_3}" ]] && local pw_yad_v12_3="yad" set -o pipefail curl -# -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 -u -e 's/#//g' -e 's/ //g' -e 's/\.[[:digit:]]%//' | \ "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ - --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 + --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ + --window-icon="$PW_GUI_ICON_PATH/port_proton.png" if [ "${PIPESTATUS[0]}" != 0 ] ; then print_error "Failed to download ${PW_DOWNLOAD_FILE_NAME} from GitHub." print_info "Try download ${PW_DOWNLOAD_FILE_NAME} from FTP" curl -# -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 -u -e 's/#//g' -e 's/ //g' -e 's/\.[[:digit:]]%//' | \ "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ - --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 + --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ + --window-icon="$PW_GUI_ICON_PATH/port_proton.png" if [ "${PIPESTATUS[0]}" != 0 ] ; then print_error "Failed to download ${PW_DOWNLOAD_FILE_NAME} from FTP." return 1 @@ -159,7 +163,8 @@ try_download_to_path () { curl -# -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 -u -e 's/#//g' -e 's/ //g' -e 's/\.[[:digit:]]%//' | \ "${pw_yad_v12_3}" --progress --percentage=0 --text="Download ${PW_DOWNLOAD_FILE_NAME}" --auto-close --no-escape \ - --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 + --auto-kill --center --text-align="center" --fixed --no-buttons --title "PortProton" --width=500 --height=90 \ + --window-icon="$PW_GUI_ICON_PATH/port_proton.png" if [ "${PIPESTATUS[0]}" != 0 ] ; then print_error "Failed to download $1." return 1 @@ -229,11 +234,14 @@ var_ld_library_path_update() { unpack_tar_zst () { set -o pipefail unset PW_ZSTD_PORT + pw_start_progress_bar_cover_block "${PW_GUI_ICON_PATH}/covers/pw_loading_cover.gif" if [[ `command -v zstd` ]] &>/dev/null ; then - tar -I zstd -xhvf "$1" -C "$2" | sszen + tar -I zstd -xhvf "$1" -C "$2" + pw_stop_progress_bar_cover_block [ "${PIPESTATUS[0]}" != 0 ] && print_error "File $1 unpacking error." && return 1 || return 0 else - env LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PW_WINELIB}/portable/lib/lib64:${PW_WINELIB}/portable/lib/lib" tar -I "${PW_WINELIB}/portable/bin/zstd" -xhvf "$1" -C "$2" | sszen + env LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PW_WINELIB}/portable/lib/lib64:${PW_WINELIB}/portable/lib/lib" tar -I "${PW_WINELIB}/portable/bin/zstd" -xhvf "$1" -C "$2" + pw_stop_progress_bar_cover_block [ "${PIPESTATUS[0]}" != 0 ] && print_error "File $1 unpacking error." && return 1 || return 0 fi } @@ -243,20 +251,26 @@ unpack_tar_xz () { tar -Jxhvf "$1" -C "$2" && return 0 || return 1 else set -o pipefail - tar -Jxhvf "$1" -C "$2" | sszen + pw_start_progress_bar_cover_block "${PW_GUI_ICON_PATH}/covers/pw_loading_cover.gif" + tar -Jxhvf "$1" -C "$2" + pw_stop_progress_bar_cover_block [ "${PIPESTATUS[0]}" != 0 ] && print_error "File $1 unpacking error." && return 1 || return 0 fi } unpack_tar_gz () { set -o pipefail - tar -xhzvf "$1" -C "$2" | sszen + pw_start_progress_bar_cover_block "${PW_GUI_ICON_PATH}/covers/pw_loading_cover.gif" + tar -xhzvf "$1" -C "$2" + pw_stop_progress_bar_cover_block [ "${PIPESTATUS[0]}" != 0 ] && print_error "File $1 unpacking error." && return 1 || return 0 } unpack_tar () { set -o pipefail - tar -xhvf "$1" -C "$2" | sszen + pw_start_progress_bar_cover_block "${PW_GUI_ICON_PATH}/covers/pw_loading_cover.gif" + tar -xhvf "$1" -C "$2" + pw_stop_progress_bar_cover_block [ "${PIPESTATUS[0]}" != 0 ] && print_error "File $1 unpacking error." && return 1 || return 0 } @@ -401,10 +415,12 @@ init_wine_ver () { 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 - try_copy_dir "${WINEDIR}/share/wine/${mono_gecko_chk}" "${PORT_WINE_TMP_PATH}" | sszen + pw_start_progress_bar_cover_block "${PW_GUI_ICON_PATH}/covers/pw_loading_cover.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 @@ -964,7 +980,7 @@ pw_port_update () { if [[ ! -z "${scripts_current_ver}" ]] && [[ "${scripts_current_ver}" -gt "${scripts_install_ver}" ]] ; then if [[ -f "${PW_WINELIB}/portable/bin/yad_v12_3" ]] ; then export pw_yad_v12_3="${PW_WINELIB}/portable/bin/yad_v12_3" - curl -s --list-only "${URL_FOR_CHANGELOG}/${PW_CHANGELOG_FILE}" | tee "${PORT_WINE_TMP_PATH}/curent_var_ver" | sszen + curl -s --list-only "${URL_FOR_CHANGELOG}/${PW_CHANGELOG_FILE}" | tee "${PORT_WINE_TMP_PATH}/curent_var_ver" CHANGLOG_NEWS=`cat "${PORT_WINE_TMP_PATH}/curent_var_ver" | sed "/Scripts version ${scripts_install_ver}/,$ d" | sed '1,/---/ d' ` xcsd=`"${pw_yad_v12_3}" --title "${scripts_upd2} v.${scripts_current_ver}" --window-icon="$PW_GUI_ICON_PATH/port_proton.png" \ --borders=3 --form --separator='%%%' --width=1200 --height=600 \ diff --git a/data_from_portwine/scripts/runlib b/data_from_portwine/scripts/runlib index 7d98f753..87857644 100755 --- a/data_from_portwine/scripts/runlib +++ b/data_from_portwine/scripts/runlib @@ -59,8 +59,10 @@ start_portwine () { pw_install_dll_in_prefix init_wine_ver - edit_db_from_gui WARN_CYRILLIC_IN_PATH - unset WARN_CYRILLIC_IN_PATH + 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 [ ! -f "${HOME}/.Xresources" ]; then cp -f "${PORT_SCRIPTS_PATH}/.Xresources" "${HOME}" diff --git a/data_from_portwine/scripts/setup.sh b/data_from_portwine/scripts/setup.sh index c9295a19..91689533 100755 --- a/data_from_portwine/scripts/setup.sh +++ b/data_from_portwine/scripts/setup.sh @@ -2,7 +2,7 @@ # Author: linux-gaming.ru . "$(dirname $(readlink -f "$0"))/runlib" -if [[ $(cat /etc/os-release | grep -i "flatpak") ]] ; then +if grep -i "flatpak" /etc/os-release &>/dev/null ; then name_desktop="PortProton" echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop" echo "Name=${name_desktop}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" @@ -36,7 +36,7 @@ fi update-desktop-database -q "${HOME}/.local/share/applications" -if [[ ! $(cat /etc/os-release | grep -i "flatpak") ]] +if ! grep -i "flatpak" /etc/os-release &>/dev/null ; 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 b2e52e0d..e9c98247 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -667,7 +667,7 @@ else kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1 fi - if [[ $(cat /etc/os-release | grep -i "flatpak") ]] ; + if grep -i "flatpak" /etc/os-release &>/dev/null ; then PW_EXEC_FROM_DESKTOP="$(cat "${PORT_WINE_PATH}/${PW_YAD_SET//¬/" "}" | grep Exec | head -n 1 | sed 's|flatpak run com.castrofidel.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/zen_yad_gui b/data_from_portwine/scripts/zen_yad_gui index 75be952c..5f48ee1b 100755 --- a/data_from_portwine/scripts/zen_yad_gui +++ b/data_from_portwine/scripts/zen_yad_gui @@ -22,16 +22,6 @@ zenity_error_download () { fi } -sszen () { - zenity --progress --title="$loc_gui_settings" --text="$loc_gui_sett_info" --pulsate --auto-close --width=500 --height=90 --no-cancel -} - -ssyad () { - "${pw_yad_v12_3}" --progress --pulsate --log-expanded --undecorated --center \ - --title="$loc_gui_settings" --progress-text="$loc_gui_sett_info" --enable-log="log" \ - --log-height=60 --width=500 --height=150 --no-buttons --auto-close &>/dev/null -} - gui_question () { zenity --question --title "${inst_set}." --text "$1" --no-wrap &>/dev/null [ $? -eq "0" ] && return 0 || return 1 @@ -42,11 +32,22 @@ pw_start_progress_bar_cover () { PW_GIF_SIZE_X=`file "${PW_GIF_FILE}" | awk '{print $7 + 20}'` PW_GIF_SIZE_Y=`file "${PW_GIF_FILE}" | awk '{print $9 + 20}'` "${pw_yad}" --picture --filename="${PW_GIF_FILE}" --close-on-unfocus --no-buttons --undecorated --center \ - --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y > /dev/null 2>&1 & + --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y --window-icon="$PW_GUI_ICON_PATH/port_proton.png" > /dev/null 2>&1 & export PW_YAD_PID_PROGRESS_BAR_COVER="$!" return 0 } +pw_start_progress_bar_cover_block () { + [[ ! -f "${pw_yad}" ]] && local pw_yad="yad" + PW_GIF_FILE="$1" + PW_GIF_SIZE_X=`file "${PW_GIF_FILE}" | awk '{print $7 + 20}'` + PW_GIF_SIZE_Y=`file "${PW_GIF_FILE}" | awk '{print $9 + 20}'` + "${pw_yad}" --picture --filename="${PW_GIF_FILE}" --close-on-unfocus --no-buttons --undecorated --center \ + --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y --window-icon="$PW_GUI_ICON_PATH/port_proton.png" > /dev/null 2>&1 & + export PW_YAD_PID_PROGRESS_BAR_COVER_BLOCK="$!" + return 0 +} + pw_update_pfx_cover_gui () { PW_KEY_PROGRESS_BAR=$RANDOM PW_GIF_FILE="${PW_GUI_ICON_PATH}/covers/pw_update_pfx_cover.gif" @@ -105,6 +106,12 @@ pw_stop_progress_bar_cover () { } export -f pw_stop_progress_bar_cover +pw_stop_progress_bar_cover_block () { + kill -s KILL "$PW_YAD_PID_PROGRESS_BAR_COVER_BLOCK" > /dev/null 2>&1 + return 0 +} +export -f pw_stop_progress_bar_cover_block + open_changelog () { "${pw_yad}" --title="$loc_gui_changelog" --borders=3 --no-buttons --text-align=center \ --text-info --show-uri --wrap --width=1200 --height=700 --uri-color=red \ @@ -661,7 +668,7 @@ portwine_create_shortcut () { echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop" echo "Name=${name_desktop}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" - if [[ $(cat /etc/os-release | grep -i "flatpak") ]] + if grep -i "flatpak" /etc/os-release &>/dev/null then echo "Exec=flatpak run com.castrofidel.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 @@ -693,7 +700,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 [[ $(cat /etc/os-release | grep -i "flatpak") ]] + if grep -i "flatpak" /etc/os-release &>/dev/null then echo "flatpak run com.castrofidel.portproton \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh" else echo "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh" fi