Commit 83e7db8a authored by Mikhail Tergoev's avatar Mikhail Tergoev

Merge branch 'Htylol-mega_bash_func' into devel

parents 994f0350 7033cb8c
...@@ -40,7 +40,7 @@ export -f print_wrapped ...@@ -40,7 +40,7 @@ export -f print_wrapped
make_acronym () { make_acronym () {
local words acronym i local words acronym i
IFS=' ' read -r -a words <<< "$1" read -r -a words <<< "$1"
acronym="${words[0]:0:1}" acronym="${words[0]:0:1}"
for ((i=1 ; i<${#words[@]} ; i++)) ; do for ((i=1 ; i<${#words[@]} ; i++)) ; do
acronym+="${words[$i]:0:1}" acronym+="${words[$i]:0:1}"
...@@ -73,8 +73,7 @@ set_several_variables () { ...@@ -73,8 +73,7 @@ set_several_variables () {
key=${1//=*/} key=${1//=*/}
value=${1//*=/} value=${1//*=/}
keys_all+="$key " keys_all+="$key "
export "$key"="$value" export "$key"="$value" ; shift
shift
done done
} }
...@@ -265,7 +264,7 @@ EOF ...@@ -265,7 +264,7 @@ EOF
po_file="${PORT_WINE_PATH}/data/locales/$LANGUAGE/LC_MESSAGES/PortProton.po" po_file="${PORT_WINE_PATH}/data/locales/$LANGUAGE/LC_MESSAGES/PortProton.po"
fi fi
while IFS= read -r line ; do while read -r line ; do
while [[ $line =~ msgid ]] ; do while [[ $line =~ msgid ]] ; do
unset msgid unset msgid
msgid="$line" msgid="$line"
...@@ -406,6 +405,74 @@ try_copy_file_with_checksums () { ...@@ -406,6 +405,74 @@ try_copy_file_with_checksums () {
} }
export -f try_copy_file_with_checksums export -f try_copy_file_with_checksums
lsbash () {
local grep_with_i grep_with_v find_name directory find_file found_successfully find_file_old find_file_old_array
if [[ $1 =~ \/ ]] ; then
directory=$1 ; shift
else
directory=$PWD
fi
grep_find_file1 () {
find_file_old=$find_file
if [[ $grep_with_i == true ]] ; then
find_file=${find_file,,}
find_name=${find_name,,}
fi
grep_find_file2 () {
if [[ -z $1 ]] ; then
echo "$find_file_old"
found_successfully=1
else
find_file_old_array+=("$find_file_old")
fi
}
if [[ $grep_with_v == true ]] ; then
if [[ ! $find_file =~ $find_name ]] ; then
grep_find_file2 "$@"
fi
else
if [[ $find_file =~ $find_name ]] \
|| [[ -z $find_name ]] ; then
grep_find_file2 "$@"
fi
fi
}
while true ; do
unset grep_with_i grep_with_v
if [[ $1 == --grep ]] ; then
shift
while true ; do
# аналог grep -i
if [[ $1 == "-i" ]] ; then
grep_with_i=true ; shift ; continue
fi
# аналог grep -v
if [[ $1 == "-v" ]] ; then
grep_with_v=true ; shift ; continue
fi
find_name=$1 ; shift ; break
done
fi
if [[ -n ${find_file_old_array[0]} ]] ; then
for find_file in "${find_file_old_array[@]}" ; do
unset find_file_old_array
grep_find_file1 "$@"
done
else
for find_file in "$directory"/* ; do
find_file=${find_file//*\//}
grep_find_file1 "$@"
done
fi
if [[ -n $1 ]] ; then continue ; else break ; fi
done
if [[ $found_successfully == 1 ]] ; then
return 0
else
return 1
fi
}
try_copy_dir () { try_copy_dir () {
if [[ ! -d "$1" ]] ; then print_info "directory $1 not found for copy" if [[ ! -d "$1" ]] ; then print_info "directory $1 not found for copy"
elif [[ -z "$2" ]] ; then print_error "no way to copy directory $1" elif [[ -z "$2" ]] ; then print_error "no way to copy directory $1"
...@@ -538,9 +605,9 @@ try_download () { ...@@ -538,9 +605,9 @@ try_download () {
&& [[ "$no_mirror" != "true" ]] && [[ "$no_mirror" != "true" ]]
then then
FIRST_URL=("$url_cloud/$filename") FIRST_URL=("$url_cloud/$filename")
IFS=' ' read -r -a SECOND_URL <<< "$1" read -r -a SECOND_URL <<< "$1"
else else
IFS=' ' read -r -a FIRST_URL <<< "$1" read -r -a FIRST_URL <<< "$1"
SECOND_URL=("$url_cloud/$filename") SECOND_URL=("$url_cloud/$filename")
fi fi
...@@ -652,17 +719,14 @@ var_ld_library_path_update () { ...@@ -652,17 +719,14 @@ var_ld_library_path_update () {
# GUI NOTIFY SEND # GUI NOTIFY SEND
pw_notify_send () { pw_notify_send () {
if command -v gdbus &>/dev/null ; then if command -v gdbus &>/dev/null ; then
local app="PortProton" local icon title body app timeout OPTIND
local icon="" app="PortProton"
local timeout="5000" timeout="5000"
local title="" OPTIND="1"
local body=""
local OPTIND="1"
while getopts a:i:t: opt ; do while getopts a:i:t: opt ; do
case "$opt" in case "$opt" in
a) a)
local app=$OPTARG app=$OPTARG
;; ;;
i) i)
case "$OPTARG" in case "$OPTARG" in
...@@ -670,10 +734,10 @@ pw_notify_send () { ...@@ -670,10 +734,10 @@ pw_notify_send () {
warning) local OPTARG="${PORT_WINE_PATH}/data/img/gui/notify_warning.svg";; warning) local OPTARG="${PORT_WINE_PATH}/data/img/gui/notify_warning.svg";;
error) local OPTARG="${PORT_WINE_PATH}/data/img/gui/notify_error.svg";; error) local OPTARG="${PORT_WINE_PATH}/data/img/gui/notify_error.svg";;
esac esac
local icon=$OPTARG icon=$OPTARG
;; ;;
t) t)
local timeout=$OPTARG timeout=$OPTARG
;; ;;
*) *)
echo "usage: $0 echo "usage: $0
...@@ -686,10 +750,8 @@ pw_notify_send () { ...@@ -686,10 +750,8 @@ pw_notify_send () {
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
[[ "$1" == "--" ]] && shift [[ "$1" == "--" ]] && shift
title="$1" ; shift
local title="$1" body="$*"
shift
local body="$*"
gdbus call --session --dest org.freedesktop.Notifications \ gdbus call --session --dest org.freedesktop.Notifications \
--object-path /org/freedesktop/Notifications \ --object-path /org/freedesktop/Notifications \
...@@ -883,7 +945,7 @@ search_desktop_file () { ...@@ -883,7 +945,7 @@ search_desktop_file () {
desktop_file_new="${desktop_file//"$PORT_WINE_PATH/"/}" desktop_file_new="${desktop_file//"$PORT_WINE_PATH/"/}"
if [[ $desktop_file_new =~ .desktop$ ]] ; then if [[ $desktop_file_new =~ .desktop$ ]] ; then
if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then
while IFS= read -r line1 ; do while read -r line1 ; do
if [[ $line1 =~ ^Exec= ]] ; then if [[ $line1 =~ ^Exec= ]] ; then
if check_flatpak ; then if check_flatpak ; then
EXEC_DESKTOP=${line1//Exec=flatpak run ru.linux_gaming.PortProton /} EXEC_DESKTOP=${line1//Exec=flatpak run ru.linux_gaming.PortProton /}
...@@ -900,7 +962,7 @@ search_desktop_file () { ...@@ -900,7 +962,7 @@ search_desktop_file () {
fi fi
done done
if [[ $DESKTOP_WITH_TIME == enabled ]] || [[ $SORT_WITH_TIME == enabled ]] ; then if [[ $DESKTOP_WITH_TIME == enabled ]] || [[ $SORT_WITH_TIME == enabled ]] ; then
while IFS=' ' read -r -a line2 ; do while read -r -a line2 ; do
if [[ -z ${line2[0]} ]] \ if [[ -z ${line2[0]} ]] \
|| [[ ! ${line2[0],,} =~ .(bat|exe|msi|reg)$ ]] ; then || [[ ! ${line2[0],,} =~ .(bat|exe|msi|reg)$ ]] ; then
BROKEN_LINE=1 BROKEN_LINE=1
...@@ -922,7 +984,7 @@ search_desktop_file () { ...@@ -922,7 +984,7 @@ search_desktop_file () {
## Ремонты: ## Ремонты:
# Ремонт, проверяет чтобы длинна хеш суммы была равна 64 символам, в ином случае удалит битые # Ремонт, проверяет чтобы длинна хеш суммы была равна 64 символам, в ином случае удалит битые
if [[ $FILE_SHA256SUM_NOT_FOUND == 1 ]] && [[ ${#line2[1]} != "64" ]] ; then if [[ $FILE_SHA256SUM_NOT_FOUND == 1 ]] && [[ ${#line2[1]} != "64" ]] ; then
while IFS=' ' read -r -a line3 ; do while read -r -a line3 ; do
if [[ ${#line3[1]} == "64" ]] if [[ ${#line3[1]} == "64" ]]
then echo "${line3[*]}" then echo "${line3[*]}"
fi fi
...@@ -934,7 +996,7 @@ search_desktop_file () { ...@@ -934,7 +996,7 @@ search_desktop_file () {
# Ремонт, если есть пустые строки и непонятные строки без .exe, .bat, .msi, .reg # Ремонт, если есть пустые строки и непонятные строки без .exe, .bat, .msi, .reg
if [[ $BROKEN_LINE == 1 ]] ; then if [[ $BROKEN_LINE == 1 ]] ; then
while IFS=' ' read -r -a line4 ; do while read -r -a line4 ; do
if [[ -n ${line4[0]} ]] && [[ ${line4[0],,} =~ .(bat|exe|msi|reg)$ ]] if [[ -n ${line4[0]} ]] && [[ ${line4[0],,} =~ .(bat|exe|msi|reg)$ ]]
then echo "${line4[*]}" then echo "${line4[*]}"
fi fi
...@@ -1306,7 +1368,7 @@ get_and_set_reg_file () { ...@@ -1306,7 +1368,7 @@ get_and_set_reg_file () {
find_line=${find_line//:*/} find_line=${find_line//:*/}
fi fi
count=-1 count=-1
while IFS= read -r line_reg ; do while read -r line_reg ; do
((count++)) ((count++))
if [[ $line_reg =~ $name_for_find ]] ; then if [[ $line_reg =~ $name_for_find ]] ; then
if [[ $line_reg == $name_for_find$name_for_set ]] ; then if [[ $line_reg == $name_for_find$name_for_set ]] ; then
...@@ -1318,7 +1380,7 @@ get_and_set_reg_file () { ...@@ -1318,7 +1380,7 @@ get_and_set_reg_file () {
break break
fi fi
[[ -z $line_reg ]] && break [[ -z $line_reg ]] && break
done <<< "$(sed -n "$find_line"',$p' "$find_file")" done < <(sed -n "$find_line"',$p' "$find_file")
fi fi
if [[ $name_add_or_del == --add ]] ; then if [[ $name_add_or_del == --add ]] ; then
if [[ -z $find_block ]] ; then if [[ -z $find_block ]] ; then
...@@ -1370,7 +1432,7 @@ recommend_dpi () { ...@@ -1370,7 +1432,7 @@ recommend_dpi () {
return 1 return 1
fi fi
local dpi=$(( height / 11 )) local dpi=$(( height / 11 ))
(( dpi < 96 )) && local dpi="96" (( dpi < 96 )) && dpi="96"
echo "$dpi" echo "$dpi"
} }
...@@ -1380,7 +1442,7 @@ fixes_after_update () { ...@@ -1380,7 +1442,7 @@ fixes_after_update () {
fixes_path="$PORT_WINE_TMP_PATH/fixes_apply" fixes_path="$PORT_WINE_TMP_PATH/fixes_apply"
[[ ! -f $fixes_path ]] && touch "$fixes_path" [[ ! -f $fixes_path ]] && touch "$fixes_path"
while IFS= read -r line ; do while read -r line ; do
if [[ $line == "$fixes_info" ]] ; then if [[ $line == "$fixes_info" ]] ; then
return 1 return 1
fi fi
...@@ -1394,7 +1456,7 @@ restart_pp () { ...@@ -1394,7 +1456,7 @@ restart_pp () {
--userconf) export RESTART_PP_USED="userconf" ;; --userconf) export RESTART_PP_USED="userconf" ;;
--edit_db) export RESTART_PP_USED="edit_db" ;; --edit_db) export RESTART_PP_USED="edit_db" ;;
esac esac
/usr/bin/env bash -c ${pw_full_command_line[@]} & /usr/bin/env bash -c "${pw_full_command_line[@]}" &
exit 0 exit 0
} }
...@@ -1493,7 +1555,7 @@ init_wine_ver () { ...@@ -1493,7 +1555,7 @@ init_wine_ver () {
else else
if [[ -d "${PORT_WINE_PATH}/data/dist" ]] ; then if [[ -d "${PORT_WINE_PATH}/data/dist" ]] ; then
IFS=$'\n' IFS=$'\n'
for dist_dir in $(ls -1 "${PORT_WINE_PATH}/data/dist/") ; do for dist_dir in $(lsbash "${PORT_WINE_PATH}/data/dist/") ; do
dist_dir_new=$(echo "${dist_dir}" | awk '$1=$1' | sed -e s/[[:blank:]]/_/g) dist_dir_new=$(echo "${dist_dir}" | awk '$1=$1' | sed -e s/[[:blank:]]/_/g)
if [[ ! -d "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}" ]] ; then if [[ ! -d "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}" ]] ; then
mv -- "${PORT_WINE_PATH}/data/dist/$dist_dir" "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}" mv -- "${PORT_WINE_PATH}/data/dist/$dist_dir" "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}"
...@@ -1501,7 +1563,7 @@ init_wine_ver () { ...@@ -1501,7 +1563,7 @@ init_wine_ver () {
done done
IFS="$orig_IFS" IFS="$orig_IFS"
fi fi
if [[ -z $(ls "${PORT_WINE_PATH}/data/dist/" | grep "${PW_WINE_USE}") ]] ; then if [[ -z $(lsbash "${PORT_WINE_PATH}/data/dist/" --grep "${PW_WINE_USE}") ]] ; then
if [[ "$PW_WINE_USE" =~ PROTON_LG* ]] if [[ "$PW_WINE_USE" =~ PROTON_LG* ]]
then export PW_WINE_USE=PROTON_LG then export PW_WINE_USE=PROTON_LG
else export PW_WINE_USE=WINE_LG else export PW_WINE_USE=WINE_LG
...@@ -1518,20 +1580,20 @@ init_wine_ver () { ...@@ -1518,20 +1580,20 @@ init_wine_ver () {
export WINELOADER="${WINEDIR}/bin/wine" export WINELOADER="${WINEDIR}/bin/wine"
export WINESERVER="${WINEDIR}/bin/wineserver" export WINESERVER="${WINEDIR}/bin/wineserver"
if [[ -d "${WINEDIR}/files" && ! -d "${WINEDIR}/dist" ]] ; then if [[ -d "${WINEDIR}/files" && ! -d "${WINEDIR}/dist" ]] ; then
for clear_dist_files in $(ls "${WINEDIR}" | sed -r "s/^(files|version)$//g") ; do for clear_dist_files in $(lsbash "$WINEDIR" | sed -r "s/^(files|version)$//g") ; do
rm -fr "${WINEDIR}/$clear_dist_files" rm -fr "${WINEDIR}/$clear_dist_files"
done done
mv -f "${WINEDIR}/files"/* "${WINEDIR}/" mv -f "${WINEDIR}/files"/* "${WINEDIR}/"
rm -fr "${WINEDIR}/files" rm -fr "${WINEDIR}/files"
elif [[ ! -d "${WINEDIR}/files" && -d "${WINEDIR}/dist" ]] ; then elif [[ ! -d "${WINEDIR}/files" && -d "${WINEDIR}/dist" ]] ; then
for clear_dist_files in $(ls "${WINEDIR}" | sed -r "s/^(dist|version)$//g") ; do for clear_dist_files in $(lsbash "$WINEDIR" | sed -r "s/^(dist|version)$//g") ; do
rm -fr "${WINEDIR}/$clear_dist_files" rm -fr "${WINEDIR}/$clear_dist_files"
done done
mv -f "${WINEDIR}/dist"/* "${WINEDIR}/" mv -f "${WINEDIR}/dist"/* "${WINEDIR}/"
rm -fr "${WINEDIR}/dist" rm -fr "${WINEDIR}/dist"
elif [[ -f "${WINEDIR}/proton_dist.tar" ]] ; then elif [[ -f "${WINEDIR}/proton_dist.tar" ]] ; then
unpack "${WINEDIR}/proton_dist.tar" "${WINEDIR}/" unpack "${WINEDIR}/proton_dist.tar" "${WINEDIR}/"
for clear_dist_files in $(ls "${WINEDIR}" | sed -r "s/^(bin|lib|lib64|share|version)$//g") ; do for clear_dist_files in $(lsbash "$WINEDIR" | sed -r "s/^(bin|lib|lib64|share|version)$//g") ; do
rm -fr "${WINEDIR}/$clear_dist_files" rm -fr "${WINEDIR}/$clear_dist_files"
done done
fi fi
...@@ -1814,7 +1876,7 @@ pw_kill_autostart () { ...@@ -1814,7 +1876,7 @@ pw_kill_autostart () {
fi fi
done done
if [[ -n "$(ls "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/ | grep -m 1 ".tmp")" ]] ; then if [[ -n "$(lsbash "${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 rm -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/*.tmp
fi fi
...@@ -1905,8 +1967,8 @@ pw_download_libs () { ...@@ -1905,8 +1967,8 @@ pw_download_libs () {
"${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}.tar.xz" ; then "${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}.tar.xz" ; then
if unpack "${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}.tar.xz" "${PORT_WINE_TMP_PATH}/" ; then if unpack "${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}.tar.xz" "${PORT_WINE_TMP_PATH}/" ; then
try_remove_file "${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}.tar.xz" try_remove_file "${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}.tar.xz"
if ls "${PORT_WINE_TMP_PATH}" | grep libs_v | grep -v libs"${PW_LIBS_VER}" ; then if lsbash "${PORT_WINE_TMP_PATH}" --grep libs_v --grep -v libs"${PW_LIBS_VER}" ; then
for RM_LIBS in $(ls "${PORT_WINE_TMP_PATH}" | grep libs_v | grep -v libs"${PW_LIBS_VER}") for RM_LIBS in $(lsbash "${PORT_WINE_TMP_PATH}" --grep libs_v --grep -v libs"${PW_LIBS_VER}")
do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_LIBS}" do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_LIBS}"
done done
fi fi
...@@ -2056,9 +2118,9 @@ pw_check_and_download_plugins () { ...@@ -2056,9 +2118,9 @@ pw_check_and_download_plugins () {
try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz"
# TODO: drop clear prefix, and add update prefix from new plugins # TODO: drop clear prefix, and add update prefix from new plugins
pw_clear_pfx pw_clear_pfx
if ls "${PORT_WINE_TMP_PATH}" | grep plugins_v | grep -v "plugins${PW_PLUGINS_VER}" if lsbash "${PORT_WINE_TMP_PATH}" --grep plugins_v --grep -v "plugins${PW_PLUGINS_VER}"
then then
for RM_PLUGINS in $(ls "${PORT_WINE_TMP_PATH}" | grep plugins_v | grep -v "plugins${PW_PLUGINS_VER}") for RM_PLUGINS in $(lsbash "${PORT_WINE_TMP_PATH}" --grep plugins_v --grep -v "plugins${PW_PLUGINS_VER}")
do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_PLUGINS}" do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_PLUGINS}"
done done
fi fi
...@@ -2089,9 +2151,9 @@ pw_check_and_download_plugins () { ...@@ -2089,9 +2151,9 @@ pw_check_and_download_plugins () {
try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz" try_remove_file "${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}.tar.xz"
# TODO: drop clear prefix, and add update prefix from new plugins # TODO: drop clear prefix, and add update prefix from new plugins
pw_clear_pfx pw_clear_pfx
if ls "${PORT_WINE_TMP_PATH}" | grep plugins_v | grep -v "plugins${PW_PLUGINS_VER}" if lsbash "${PORT_WINE_TMP_PATH}" --grep plugins_v --grep -v "plugins${PW_PLUGINS_VER}"
then then
for RM_PLUGINS in $(ls "${PORT_WINE_TMP_PATH}" | grep plugins_v | grep -v "plugins${PW_PLUGINS_VER}") for RM_PLUGINS in $(lsbash "${PORT_WINE_TMP_PATH}" --grep plugins_v --grep -v "plugins${PW_PLUGINS_VER}")
do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_PLUGINS}" do try_remove_dir "${PORT_WINE_TMP_PATH}/${RM_PLUGINS}"
done done
fi fi
...@@ -2218,7 +2280,7 @@ pw_init_db () { ...@@ -2218,7 +2280,7 @@ pw_init_db () {
# shellcheck source=/dev/null # shellcheck source=/dev/null
source "${PORTWINE_DB_FILE}" source "${PORTWINE_DB_FILE}"
if echo "${portwine_exe}" | grep "/prefixes/" &>/dev/null ; then if echo "${portwine_exe}" | grep "/prefixes/" &>/dev/null ; then
if [[ -z $(ls "${PORT_WINE_PATH}/prefixes/" | grep -e ^"${PW_PREFIX_NAME}"$) ]] \ if [[ -z $(lsbash "${PORT_WINE_PATH}/prefixes/" --grep ^"${PW_PREFIX_NAME}"$) ]] \
|| [[ -z $(grep -e ^"export PW_PREFIX_NAME=" "${PORTWINE_DB_FILE}" 2>/dev/null) ]] || [[ -z $(grep -e ^"export PW_PREFIX_NAME=" "${PORTWINE_DB_FILE}" 2>/dev/null) ]]
then then
PW_PREFIX_NAME=$(echo "${portwine_exe}" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}') PW_PREFIX_NAME=$(echo "${portwine_exe}" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
...@@ -2258,7 +2320,7 @@ pw_init_db () { ...@@ -2258,7 +2320,7 @@ pw_init_db () {
try_copy_file "${PW_FIND_DB_FILE}" "${portwine_exe}".ppdb try_copy_file "${PW_FIND_DB_FILE}" "${portwine_exe}".ppdb
PORTWINE_DB_FILE="${portwine_exe}".ppdb PORTWINE_DB_FILE="${portwine_exe}".ppdb
if echo "${portwine_exe}" | grep "/prefixes/" &>/dev/null ; then if echo "${portwine_exe}" | grep "/prefixes/" &>/dev/null ; then
if [[ -z $(ls "${PORT_WINE_PATH}/prefixes/" | grep -e ^"${PW_PREFIX_NAME}"$) ]] \ if [[ -z $(lsbash "${PORT_WINE_PATH}/prefixes/" --grep ^"${PW_PREFIX_NAME}"$) ]] \
|| [[ -z $(grep -e ^"export PW_PREFIX_NAME=" "${PORTWINE_DB_FILE}" 2>/dev/null) ]] || [[ -z $(grep -e ^"export PW_PREFIX_NAME=" "${PORTWINE_DB_FILE}" 2>/dev/null) ]]
then then
PW_PREFIX_NAME=$(echo "${portwine_exe}" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}') PW_PREFIX_NAME=$(echo "${portwine_exe}" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
...@@ -2307,7 +2369,7 @@ pw_init_db () { ...@@ -2307,7 +2369,7 @@ pw_init_db () {
if [[ "${PW_WINE_CPU_TOPOLOGY}" == "disabled" ]] && [[ -n "${WINE_CPU_TOPOLOGY}" ]] ; then if [[ "${PW_WINE_CPU_TOPOLOGY}" == "disabled" ]] && [[ -n "${WINE_CPU_TOPOLOGY}" ]] ; then
export PW_WINE_CPU_TOPOLOGY="${WINE_CPU_TOPOLOGY}" export PW_WINE_CPU_TOPOLOGY="${WINE_CPU_TOPOLOGY}"
fi fi
if ls "${PATH_TO_GAME}"/*_Data/Resources/ 2>/dev/null | grep "unity" &>/dev/null \ if lsbash "${PATH_TO_GAME}"/*_Data/Resources/ --grep "unity" &>/dev/null \
&& [[ "${PW_WINE_CPU_TOPOLOGY}" == "disabled" ]] \ && [[ "${PW_WINE_CPU_TOPOLOGY}" == "disabled" ]] \
&& [[ $(grep -c ^"processor" /proc/cpuinfo) -gt "8" ]] && [[ $(grep -c ^"processor" /proc/cpuinfo) -gt "8" ]]
then then
...@@ -2375,7 +2437,7 @@ pw_port_update () { ...@@ -2375,7 +2437,7 @@ pw_port_update () {
return 1 return 1
fi fi
IFS=' ' read -r -a PW_UPDATE_ALL_LIST <<< "$UPDATE_ETERFUND $UPDATE_GITHUB $UPDATE_PP_GITEA" read -r -a PW_UPDATE_ALL_LIST <<< "$UPDATE_ETERFUND $UPDATE_GITHUB $UPDATE_PP_GITEA"
UPDATE_MIN=${PW_UPDATE_ALL_LIST[0]} UPDATE_MIN=${PW_UPDATE_ALL_LIST[0]}
for i in "${!PW_UPDATE_ALL_LIST[@]}"; do for i in "${!PW_UPDATE_ALL_LIST[@]}"; do
...@@ -2765,7 +2827,7 @@ pw_create_gui_png () { ...@@ -2765,7 +2827,7 @@ pw_create_gui_png () {
if [[ "$PW_PRODUCTNAME" =~ (Launcher|RU) ]] if [[ "$PW_PRODUCTNAME" =~ (Launcher|RU) ]]
then then
PW_PRODUCTNAME="${PW_PRODUCTNAME//(Launcher|RU)/}" PW_PRODUCTNAME=$(echo "$PW_PRODUCTNAME" | sed -r "s/(Launcher|RU)//g")
fi fi
if [[ -n "$PW_PRODUCTNAME" ]] \ if [[ -n "$PW_PRODUCTNAME" ]] \
...@@ -2777,7 +2839,7 @@ pw_create_gui_png () { ...@@ -2777,7 +2839,7 @@ pw_create_gui_png () {
fi fi
fi fi
PORTPROTON_NAME="${PORTPROTON_NAME//(\`|\"|\'|\!)/}" PW_PRODUCTNAME=$(echo "$PW_PRODUCTNAME" | sed -r "s/(\`|\"|'|\!)//g")
export PORTPROTON_NAME export PORTPROTON_NAME
edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION
fi fi
...@@ -2821,8 +2883,8 @@ pw_find_exe () { ...@@ -2821,8 +2883,8 @@ pw_find_exe () {
--button="${translations[CANCEL]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":1 \ --button="${translations[CANCEL]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":1 \
--button="${translations[OK]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0 2>/dev/null)" --button="${translations[OK]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0 2>/dev/null)"
YAD_STATUS="$?" YAD_STATUS="$?"
IFS="$orig_IFS" IFS="$orig_IFS"
if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then
print_info "Restarting..." print_info "Restarting..."
restart_pp restart_pp
...@@ -4499,7 +4561,7 @@ gui_proton_downloader () { ...@@ -4499,7 +4561,7 @@ gui_proton_downloader () {
pw_start_progress_bar_block "${translations[Check new version WINE...]}" pw_start_progress_bar_block "${translations[Check new version WINE...]}"
# PROTON_GE # PROTON_GE
read -r -d '' -a PROTON_GE_GIT <<< "$(curl -s "https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases" | grep "browser_download_url.*\.tar\.gz" | cut -d \" -f 4)" read -r -d '' -a PROTON_GE_GIT < <(curl -s "https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases" | grep "browser_download_url.*\.tar\.gz" | cut -d \" -f 4)
if [[ -n "${PROTON_GE_GIT[0]}" ]] ; then if [[ -n "${PROTON_GE_GIT[0]}" ]] ; then
for PGEGIT in "${PROTON_GE_GIT[@]}" ; do for PGEGIT in "${PROTON_GE_GIT[@]}" ; do
echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.gz//' >> "${PW_TMPFS_PATH}/tmp_proton_ge_git" echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.gz//' >> "${PW_TMPFS_PATH}/tmp_proton_ge_git"
...@@ -4508,7 +4570,7 @@ gui_proton_downloader () { ...@@ -4508,7 +4570,7 @@ gui_proton_downloader () {
fi fi
# WINE_KRON4EK # WINE_KRON4EK
read -r -d '' -a WINE_KRON4EK <<< "$(curl -s "https://api.github.com/repos/Kron4ek/Wine-Builds/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)" read -r -d '' -a WINE_KRON4EK < <(curl -s "https://api.github.com/repos/Kron4ek/Wine-Builds/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)
if [[ -n "${WINE_KRON4EK[0]}" ]] ; then if [[ -n "${WINE_KRON4EK[0]}" ]] ; then
for PGEGIT in "${WINE_KRON4EK[@]}" ; do for PGEGIT in "${WINE_KRON4EK[@]}" ; do
echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git"
...@@ -4517,7 +4579,7 @@ gui_proton_downloader () { ...@@ -4517,7 +4579,7 @@ gui_proton_downloader () {
fi fi
# WINE_GE_CUSTOM # WINE_GE_CUSTOM
read -r -d '' -a WINE_GE_CUSTOM <<< "$(curl -s "https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)" read -r -d '' -a WINE_GE_CUSTOM < <(curl -s "https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)
if [[ -n "${WINE_GE_CUSTOM[0]}" ]] ; then if [[ -n "${WINE_GE_CUSTOM[0]}" ]] ; then
for PGEGIT in "${WINE_GE_CUSTOM[@]}" ; do for PGEGIT in "${WINE_GE_CUSTOM[@]}" ; do
echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git"
...@@ -4526,7 +4588,7 @@ gui_proton_downloader () { ...@@ -4526,7 +4588,7 @@ gui_proton_downloader () {
fi fi
# PROTON_LG # PROTON_LG
read -r -d '' -a PROTON_PW_GIT <<< "$(curl -s "https://api.github.com/repos/Castro-Fidel/wine_builds/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4 | sort -r)" read -r -d '' -a PROTON_PW_GIT < <(curl -s "https://api.github.com/repos/Castro-Fidel/wine_builds/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4 | sort -r)
if [[ -n "${PROTON_PW_GIT[0]}" ]] ; then if [[ -n "${PROTON_PW_GIT[0]}" ]] ; then
for PPWGIT in "${PROTON_PW_GIT[@]}" ; do for PPWGIT in "${PROTON_PW_GIT[@]}" ; do
echo "${PPWGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_proton_pw_git" echo "${PPWGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_proton_pw_git"
...@@ -4891,7 +4953,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.] ...@@ -4891,7 +4953,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]
;; ;;
esac esac
IFS=' ' read -r -a output_yad_edit_db <"${PW_TMPFS_PATH}/tmp_output_yad_edit_db" read -r -a output_yad_edit_db <"${PW_TMPFS_PATH}/tmp_output_yad_edit_db"
bool_from_yad="0" bool_from_yad="0"
for boole_to_int in "${PW_EDIT_DB_LIST[@]}" ; do for boole_to_int in "${PW_EDIT_DB_LIST[@]}" ; do
export "${boole_to_int}"="${output_yad_edit_db[$bool_from_yad]}" export "${boole_to_int}"="${output_yad_edit_db[$bool_from_yad]}"
...@@ -4945,8 +5007,8 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.] ...@@ -4945,8 +5007,8 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]
gui_vkbasalt () { gui_vkbasalt () {
KEY_FX_GUI=$RANDOM KEY_FX_GUI=$RANDOM
FILE_VKBASALT_CONF="${PORT_WINE_PATH}/data/vkBasalt.conf" FILE_VKBASALT_CONF="${PORT_WINE_PATH}/data/vkBasalt.conf"
read -r -d '' -a LIST_FX <<< "$(grep -E '.fx$|.fxh$' "$FILE_VKBASALT_CONF" | awk '{print $1}')" read -r -d '' -a LIST_FX < <(grep -E '.fx$|.fxh$' "$FILE_VKBASALT_CONF" | awk '{print $1}')
IFS=' ' read -r -a GET_FX_IN_FILE <<< "$(echo "$PW_VKBASALT_EFFECTS" | sed -e s/"cas:"// -e s/":"/" "/g)" read -r -a GET_FX_IN_FILE < <(echo "$PW_VKBASALT_EFFECTS" | sed -e s/"cas:"// -e s/":"/" "/g)
PW_3DFX_INFO=${translations[Simulation of an old 3dfx graphics accelerator (adds horizontal stripes)]} PW_3DFX_INFO=${translations[Simulation of an old 3dfx graphics accelerator (adds horizontal stripes)]}
PW_AdaptiveSharpen_INFO=${translations[Sharpness increase, can be used with CAS]} PW_AdaptiveSharpen_INFO=${translations[Sharpness increase, can be used with CAS]}
...@@ -5289,7 +5351,7 @@ gui_mangohud () { ...@@ -5289,7 +5351,7 @@ gui_mangohud () {
fi fi
if [[ "${GUI_MH_RESULT}" =~ "fps_only" ]] ; then if [[ "${GUI_MH_RESULT}" =~ "fps_only" ]] ; then
local GUI_MH_RESULT="fps_only" GUI_MH_RESULT="fps_only"
print_info "In the MangoHud config fps_only is detected all settings are reseted" print_info "In the MangoHud config fps_only is detected all settings are reseted"
fi fi
...@@ -5450,7 +5512,7 @@ gui_dgvoodoo2 () { ...@@ -5450,7 +5512,7 @@ gui_dgvoodoo2 () {
;; ;;
esac esac
IFS=' ' read -r -a output_yad_dgv2 <"${PW_TMPFS_PATH}/tmp_yad_dgv2_set" read -r -a output_yad_dgv2 <"${PW_TMPFS_PATH}/tmp_yad_dgv2_set"
bool_from_yad=0 bool_from_yad=0
for boole_to_int in "${PW_DGV2_LIST[@]}" ; do for boole_to_int in "${PW_DGV2_LIST[@]}" ; do
export "${boole_to_int}"="${output_yad_dgv2[$bool_from_yad]}" export "${boole_to_int}"="${output_yad_dgv2[$bool_from_yad]}"
...@@ -5618,7 +5680,7 @@ gui_gamescope () { ...@@ -5618,7 +5680,7 @@ gui_gamescope () {
;; ;;
esac esac
IFS=' ' read -r -a output_yad_gs <"${PW_TMPFS_PATH}/tmp_yad_gs_set" read -r -a output_yad_gs <"${PW_TMPFS_PATH}/tmp_yad_gs_set"
bool_from_yad="0" bool_from_yad="0"
for boole_to_int in "${PW_GS_LIST[@]}" ; do for boole_to_int in "${PW_GS_LIST[@]}" ; do
export "${boole_to_int}"="${output_yad_gs[$bool_from_yad]}" export "${boole_to_int}"="${output_yad_gs[$bool_from_yad]}"
...@@ -5955,7 +6017,7 @@ portwine_output_yad_shortcut () { ...@@ -5955,7 +6017,7 @@ portwine_output_yad_shortcut () {
if [[ -f "${SLUF}" ]]; then if [[ -f "${SLUF}" ]]; then
SLUFUB=false SLUFUB=false
STUID64="" STUID64=""
while IFS= read -r line; do while read -r line; do
if [[ "${line}" =~ ^[[:space:]]*\"([0-9]+)\"$ ]]; then if [[ "${line}" =~ ^[[:space:]]*\"([0-9]+)\"$ ]]; then
STUIDCUR="${BASH_REMATCH[1]}" STUIDCUR="${BASH_REMATCH[1]}"
SLUFUB=true SLUFUB=true
...@@ -6034,16 +6096,15 @@ pw_auto_create_shortcut () { ...@@ -6034,16 +6096,15 @@ pw_auto_create_shortcut () {
fi fi
unset LINKS unset LINKS
for link_file in "${PORT_WINE_PATH}"/data/prefixes/*/drive_c/users/*/Desktop/*.lnk for link_file in "${PORT_WINE_PATH}"/data/prefixes/*/drive_c/users/*/Desktop/*.lnk ; do
do link_file=$(readlink -f "$link_file")
link_file=$(readlink -f "${link_file}") LINKS+=("${link_file// /#@_@#}")
IFS=' ' read -r -a LINKS <<< "${LINKS[*]} ${link_file// /@_@}"
done done
[[ -z "${LINKS[0]}" ]] && return 0 [[ -z "${LINKS[0]}" ]] && return 0
IFS=' ' read -r -a SORTED_LINKS <<< "$(echo "${LINKS[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')" read -r -a SORTED_LINKS < <(echo "${LINKS[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')
for link_file in "${SORTED_LINKS[@]//@_@/ }" ; do for link_file in "${SORTED_LINKS[@]//#@_@#/ }" ; do
if command -v exiftool &>/dev/null ; then if command -v exiftool &>/dev/null ; then
if timeout 3 exiftool "$link_file" &> "${PW_TMPFS_PATH}/exiftool.tmp" ; then if timeout 3 exiftool "$link_file" &> "${PW_TMPFS_PATH}/exiftool.tmp" ; then
prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}') prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
...@@ -6137,22 +6198,22 @@ portwine_change_shortcut () { ...@@ -6137,22 +6198,22 @@ portwine_change_shortcut () {
portwine_search_shortcut () { portwine_search_shortcut () {
unset PW_DELETE_SHORTCUT_MENU PW_DELETE_SHORTCUT_DESKTOP unset PW_DELETE_SHORTCUT_MENU PW_DELETE_SHORTCUT_DESKTOP
PW_DELETE_MENU="$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop 2>/dev/null)" PW_DELETE_MENU="$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop 2>/dev/null)"
read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]} ${PW_DELETE_MENU// /@_@}" read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]}${PW_DELETE_MENU// /#@_@#} "
PW_DELETE_PP="$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop 2>/dev/null)" PW_DELETE_PP="$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop 2>/dev/null)"
read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]} ${PW_DELETE_PP// /@_@}" read -r -d '' -a PW_DELETE_SHORTCUT_MENU <<< "${PW_DELETE_SHORTCUT_MENU[*]}${PW_DELETE_PP// /#@_@#} "
if [[ -d "${HOME}/Desktop" ]] ; then if [[ -d "${HOME}/Desktop" ]] ; then
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop 2>/dev/null)" PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop 2>/dev/null)"
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /@_@}" read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]}${PW_DELETE_DESKTOP// /#@_@#} "
fi fi
if [[ -d "${HOME}/Рабочий стол" ]] ; then if [[ -d "${HOME}/Рабочий стол" ]] ; then
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop 2>/dev/null)" PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop 2>/dev/null)"
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /@_@}" read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]}${PW_DELETE_DESKTOP// /#@_@#} "
fi fi
if [[ $(xdg-user-dir DESKTOP) ]] ; then if [[ $(xdg-user-dir DESKTOP) ]] ; then
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "$(xdg-user-dir DESKTOP)"/*.desktop 2>/dev/null)" PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "$(xdg-user-dir DESKTOP)"/*.desktop 2>/dev/null)"
read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]} ${PW_DELETE_DESKTOP// /@_@}" read -r -d '' -a PW_DELETE_SHORTCUT_DESKTOP <<< "${PW_DELETE_SHORTCUT_DESKTOP[*]}${PW_DELETE_DESKTOP// /#@_@#} "
fi fi
} }
...@@ -6163,7 +6224,7 @@ portwine_delete_shortcut () { ...@@ -6163,7 +6224,7 @@ portwine_delete_shortcut () {
unset PORTWINE_CHANGE_SHORTCUT unset PORTWINE_CHANGE_SHORTCUT
for delete_shortcut in "${PW_DELETE_SHORTCUT_MENU[@]}" "${PW_DELETE_SHORTCUT_DESKTOP[@]}" ; do for delete_shortcut in "${PW_DELETE_SHORTCUT_MENU[@]}" "${PW_DELETE_SHORTCUT_DESKTOP[@]}" ; do
rm -f "${delete_shortcut//@_@/ }" rm -f "${delete_shortcut//#@_@#/ }"
done done
} }
...@@ -6799,7 +6860,7 @@ See the License for details.]}" 2>/dev/null & ...@@ -6799,7 +6860,7 @@ See the License for details.]}" 2>/dev/null &
Developer assistants and testers:]} Developer assistants and testers:]}
$(credits_devel)" 2>/dev/null & $(credits_devel)" 2>/dev/null &
"${pw_yad}" --plug="${KEY_CREDITS}" --tabnum=3 --text-info --scroll <<< "$(eval_translations "MIT License "${pw_yad}" --plug="${KEY_CREDITS}" --tabnum=3 --text-info --scroll < <(eval_translations "MIT License
Copyright © \$%DATE% Castro-Fidel (linux-gaming.ru) Copyright © \$%DATE% Castro-Fidel (linux-gaming.ru)
...@@ -6819,7 +6880,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ...@@ -6819,7 +6880,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE." "DATE=$(date +%Y)")" 2>/dev/null & SOFTWARE." "DATE=$(date +%Y)") 2>/dev/null &
"${pw_yad}" --plug="${KEY_CREDITS}" --tabnum=4 \ "${pw_yad}" --plug="${KEY_CREDITS}" --tabnum=4 \
--text-info --show-uri --scroll \ --text-info --show-uri --scroll \
......
...@@ -40,7 +40,7 @@ source "$PORT_SCRIPTS_PATH/functions_helper" ...@@ -40,7 +40,7 @@ source "$PORT_SCRIPTS_PATH/functions_helper"
export PW_START_PID="$$" export PW_START_PID="$$"
export NO_AT_BRIDGE="1" export NO_AT_BRIDGE="1"
export GDK_BACKEND="x11" export GDK_BACKEND="x11"
IFS=' ' read -r -a pw_full_command_line <<< "$0 $*" read -r -a pw_full_command_line <<< "$0 $*"
export pw_full_command_line export pw_full_command_line
export orig_IFS="$IFS" export orig_IFS="$IFS"
...@@ -358,7 +358,7 @@ EOF ...@@ -358,7 +358,7 @@ EOF
else else
try_remove_file "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack.sh try_remove_file "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack.sh
if [[ -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut" ]] ; then if [[ -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut" ]] ; then
while IFS= read -r line while read -r line
do do
export portwine_exe="$PORT_WINE_PATH/data/prefixes/$PW_PREFIX_NAME/$line" export portwine_exe="$PORT_WINE_PATH/data/prefixes/$PW_PREFIX_NAME/$line"
portwine_create_shortcut portwine_create_shortcut
...@@ -614,7 +614,7 @@ else ...@@ -614,7 +614,7 @@ else
desktop_file_new="${desktop_file//"$PORT_WINE_PATH/"/}" desktop_file_new="${desktop_file//"$PORT_WINE_PATH/"/}"
if [[ $desktop_file_new =~ .desktop$ ]] ; then if [[ $desktop_file_new =~ .desktop$ ]] ; then
if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then
while IFS= read -r line1 ; do while read -r line1 ; do
if [[ $line1 =~ ^Exec= ]] ; then if [[ $line1 =~ ^Exec= ]] ; then
if check_flatpak ; then if check_flatpak ; then
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line1//Exec=flatpak run ru.linux_gaming.PortProton /} PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line1//Exec=flatpak run ru.linux_gaming.PortProton /}
...@@ -633,7 +633,7 @@ else ...@@ -633,7 +633,7 @@ else
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /} PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /}
sed -i "s|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|Exec=flatpak run ru.linux_gaming.PortProton|" "$desktop_file" sed -i "s|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|Exec=flatpak run ru.linux_gaming.PortProton|" "$desktop_file"
fi fi
while IFS=' ' read -r -a line2 ; do while read -r -a line2 ; do
if [[ \"${line2[0]//#@_@#/ }\" == "${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]}" ]] ; then if [[ \"${line2[0]//#@_@#/ }\" == "${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]}" ]] ; then
PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=${line2[2]} PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=${line2[2]}
break break
...@@ -643,9 +643,9 @@ else ...@@ -643,9 +643,9 @@ else
done < "$PORT_WINE_TMP_PATH/statistics" done < "$PORT_WINE_TMP_PATH/statistics"
if [[ $SORT_WITH_TIME == enabled ]] && [[ ${line2[3]} == NEW_DESKTOP ]] ; then if [[ $SORT_WITH_TIME == enabled ]] && [[ ${line2[3]} == NEW_DESKTOP ]] ; then
sed -i "s/${line2[1]} ${line2[2]} NEW_DESKTOP/${line2[1]} ${line2[2]} OLD_DESKTOP/" "$PORT_WINE_TMP_PATH/statistics" sed -i "s/${line2[1]} ${line2[2]} NEW_DESKTOP/${line2[1]} ${line2[2]} OLD_DESKTOP/" "$PORT_WINE_TMP_PATH/statistics"
IFS=' ' read -r -a PW_AMOUNT_NEW_DESKTOP <<< "${PW_AMOUNT_NEW_DESKTOP[*]} $AMOUNT_GENERATE_BUTTONS" PW_AMOUNT_NEW_DESKTOP+=("$AMOUNT_GENERATE_BUTTONS")
else else
IFS=' ' read -r -a PW_AMOUNT_OLD_DESKTOP <<< "${PW_AMOUNT_OLD_DESKTOP[*]} $AMOUNT_GENERATE_BUTTONS" PW_AMOUNT_OLD_DESKTOP+=("$AMOUNT_GENERATE_BUTTONS")
fi fi
(( AMOUNT_GENERATE_BUTTONS++ )) (( AMOUNT_GENERATE_BUTTONS++ ))
fi fi
...@@ -758,7 +758,7 @@ else ...@@ -758,7 +758,7 @@ else
# AI_TOP_GAMES используется для сортировки автоинсталлов (работает на эмуляторы тоже) # AI_TOP_GAMES используется для сортировки автоинсталлов (работает на эмуляторы тоже)
AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0" AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0"
for ai_file in "$PORT_SCRIPTS_PATH"/pw_autoinstall/* ; do for ai_file in "$PORT_SCRIPTS_PATH"/pw_autoinstall/* ; do
while IFS= read -r line ; do while read -r line ; do
[[ $line =~ "##########" ]] && break [[ $line =~ "##########" ]] && break
[[ $line =~ "# type: " ]] && AI_TYPE["$AI_AMOUNT_ARRAY"]="${line//# type: /}" [[ $line =~ "# type: " ]] && AI_TYPE["$AI_AMOUNT_ARRAY"]="${line//# type: /}"
[[ $line =~ "# name: " ]] && AI_NAME["$AI_AMOUNT_ARRAY"]="${line//# name: /}" [[ $line =~ "# name: " ]] && AI_NAME["$AI_AMOUNT_ARRAY"]="${line//# name: /}"
...@@ -771,14 +771,14 @@ else ...@@ -771,14 +771,14 @@ else
done < "$ai_file" done < "$ai_file"
AI_FILE="${ai_file//"$PORT_SCRIPTS_PATH/pw_autoinstall/"/}" AI_FILE="${ai_file//"$PORT_SCRIPTS_PATH/pw_autoinstall/"/}"
AI_FILE_CHECK="$AI_FILE=$AI_AMOUNT_ARRAY" AI_FILE_CHECK="$AI_FILE=$AI_AMOUNT_ARRAY"
IFS=' ' read -r -a AI_FILE_ARRAY <<< "${AI_FILE_ARRAY[*]} $AI_FILE" AI_FILE_ARRAY+=("$AI_FILE")
if [[ $AI_TOP_GAMES =~ ${AI_FILE_CHECK//=*/} ]] ; then if [[ $AI_TOP_GAMES =~ ${AI_FILE_CHECK//=*/} ]] ; then
IFS=' ' read -r -a AI_TRUE_FILE <<< "${AI_TRUE_FILE[*]} $AI_FILE_CHECK" AI_TRUE_FILE+=("$AI_FILE_CHECK")
else else
if [[ ${AI_NAME["$AI_AMOUNT_ARRAY"]} =~ \(ENG\) ]] ; then if [[ ${AI_NAME["$AI_AMOUNT_ARRAY"]} =~ \(ENG\) ]] ; then
IFS=' ' read -r -a AI_FILE_ENG <<< "${AI_FILE_ENG[*]} $AI_AMOUNT_ARRAY" AI_FILE_ENG+=("$AI_AMOUNT_ARRAY")
else else
IFS=' ' read -r -a AI_FILE_UNSORTED <<< "${AI_FILE_UNSORTED[*]} $AI_AMOUNT_ARRAY" AI_FILE_UNSORTED+=("$AI_AMOUNT_ARRAY")
fi fi
fi fi
(( AI_AMOUNT_ARRAY++ )) (( AI_AMOUNT_ARRAY++ ))
...@@ -786,8 +786,9 @@ else ...@@ -786,8 +786,9 @@ else
for ai_sort in $AI_TOP_GAMES ; do for ai_sort in $AI_TOP_GAMES ; do
if [[ ${AI_TRUE_FILE[*]} =~ $ai_sort ]] ; then if [[ ${AI_TRUE_FILE[*]} =~ $ai_sort ]] ; then
AI_TRUE_FILE_NEW=(${AI_TRUE_FILE[@]//$ai_sort=/}) AI_TRUE_FILE_NEW=("${AI_TRUE_FILE[@]//$ai_sort=/}")
AI_FILE_SORTED+=(${AI_TRUE_FILE_NEW[@]//*=*/}) AI_TRUE_FILE_NEW=("${AI_TRUE_FILE_NEW[*]//*=*/}")
AI_FILE_SORTED+=("${AI_TRUE_FILE_NEW[*]// /}")
fi fi
done done
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment