From 38e880d3afc94ff02223eb61a9c23e64b6949db6 Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 20:10:23 +0500 Subject: [PATCH] Fixes --- data_from_portwine/locales/PortProton.pot | 4 +- .../locales/es/LC_MESSAGES/PortProton.po | 4 +- .../locales/ru/LC_MESSAGES/PortProton.po | 15 +- data_from_portwine/scripts/functions_helper | 161 +++++++++++------- data_from_portwine/scripts/start.sh | 69 ++++---- data_from_portwine/themes/tray/tray_gui_pp | Bin 155248 -> 155248 bytes 6 files changed, 143 insertions(+), 110 deletions(-) diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot index 950a7d5..3fbb167 100644 --- a/data_from_portwine/locales/PortProton.pot +++ b/data_from_portwine/locales/PortProton.pot @@ -7,7 +7,7 @@ msgid "" msgstr "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2024-10-07 15:49+0500\n" + "POT-Creation-Date: 2024-10-08 10:20+0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -239,7 +239,7 @@ msgstr "" msgid "hours" msgstr "" -msgid "not known yet" +msgid "less than a minute" msgstr "" msgid "minute" diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po index 3a0c386..bf9f738 100644 --- a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po +++ b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-07 15:49+0500\n" +"POT-Creation-Date: 2024-10-08 10:15+0500\n" "PO-Revision-Date: 2024-09-19 23:35+0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -262,7 +262,7 @@ msgstr "" msgid "hours" msgstr "" -msgid "not known yet" +msgid "less than a minute" msgstr "" msgid "minute" diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po index 6dac269..2a24f6e 100644 --- a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po +++ b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-07 15:49+0500\n" -"PO-Revision-Date: 2024-10-07 15:52+0500\n" +"POT-Creation-Date: 2024-10-08 10:15+0500\n" +"PO-Revision-Date: 2024-10-08 10:15+0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" @@ -73,7 +73,6 @@ msgstr "Основные настройки" msgid "Edit database file for" msgstr "Редактировать файл настроек для" -#, fuzzy msgid "Global settings" msgstr "Глобальные настройки" @@ -152,7 +151,6 @@ msgstr "История изменений" msgid "Change language" msgstr "Сменить язык" -#, fuzzy msgid "Global settings (user.conf)" msgstr "Глобальные настройки (user.conf)" @@ -263,8 +261,8 @@ msgstr "и" msgid "hours" msgstr "часов" -msgid "not known yet" -msgstr "пока неизвестно" +msgid "less than a minute" +msgstr "меньше минуты" msgid "minute" msgstr "минута" @@ -1730,7 +1728,6 @@ msgstr "Выключить" msgid "Enable" msgstr "Включить" -#, fuzzy msgid "Change global settings" msgstr "Изменить глобальные настройки" @@ -1815,7 +1812,6 @@ msgstr "" "Эта настройка сортирует ярлыки в главном меню в зависимости от времени, " "проведенного в приложении или игре" -#, fuzzy msgid "GLOBAL SETTINGS (USER.CONF)" msgstr "ГЛОБАЛЬНЫЕ НАСТРОЙКИ (USER.CONF)" @@ -2146,6 +2142,9 @@ msgstr "ПРИСОЕДЕНИТЬСЯ" msgid "THIRD PARTY LIBRARIES" msgstr "БИБЛИОТЕКИ" +#~ msgid "not known yet" +#~ msgstr "пока неизвестно" + #~ msgid "Emulator for Nintendo game consoles with high compatibility" #~ msgstr "Эмулятор игровых консолей Nintendo с высокой совместимостью" diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index da2a69b..35bdc77 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -186,6 +186,7 @@ eval_translations () { } create_translations () { + local po_file msgid msgstr if [[ ! -d "${PW_CACHE_LANG_PATH}" ]] ; then create_new_dir "${PW_CACHE_LANG_PATH}" fi @@ -456,12 +457,13 @@ try_download () { no_mirror=true esac + local filename if [[ -n "${PW_AUTOINSTALL_EXE}" ]] \ && [[ "$no_mirror" == "true" ]] then - local filename="$(basename "${PW_AUTOINSTALL_EXE}")" + filename="$(basename "${PW_AUTOINSTALL_EXE}")" else - local filename="$(basename "$1")" + filename="$(basename "$1")" fi if [[ "${MIRROR}" == CLOUD ]] \ @@ -778,6 +780,9 @@ debug_timer () { # Поиск нужного .desktop файла по $portwine_exe search_desktop_file () { + local count desktop_file desktop_file_new EXEC_DESKTOP EXEC_DESKTOP_NEW TIME_TOTAL i j df + unset TIME_CURRENT_ARRAY DESKTOP_FILES_ARRAY + count=0 for desktop_file in "$PORT_WINE_PATH"/* ; do desktop_file_new="${desktop_file//"$PORT_WINE_PATH/"/}" if [[ $desktop_file_new =~ .desktop ]] ; then @@ -789,89 +794,117 @@ search_desktop_file () { else EXEC_DESKTOP=${line//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /} fi - EXEC_DESKTOP_NEW="${EXEC_DESKTOP//\"/}" + EXEC_DESKTOP_NEW=${EXEC_DESKTOP//\"/} fi - - if [[ $line =~ ^#Time= ]] ; then - if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then - TIME_CURRENT=${line//#Time=/} - fi + if [[ $line =~ ^#Time= ]] && [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then + TIME_CURRENT=${line//#Time=/} fi done < "$desktop_file" if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then - if [[ ! $TIME_CURRENT =~ [0-9]+ ]] ; then + # Когда новый .desktop файл + if [[ $TIME_CURRENT == "" ]] ; then + echo "#NEW_DESKTOP" >> "$desktop_file" + TIME_CURRENT="0" + # Для битых #Time= + elif [[ ! $TIME_CURRENT == "" ]] && [[ ! $TIME_CURRENT =~ [0-9]+ ]] ; then TIME_CURRENT="0" - sed -i '/^#Time=/d' "$desktop_file" - echo "#Time=0" >> "$desktop_file" - fi - if [[ -n $PW_TIME_IN_GAME ]] ; then - TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) - sed -i '/^#Time=/d' "$desktop_file" - echo "#Time=$TIME_TOTAL" >> "$desktop_file" fi + TIME_CURRENT_ARRAY+=($TIME_CURRENT) + unset TIME_CURRENT + DESKTOP_FILES_ARRAY["$count"]="$desktop_file" + (( count++ )) fi fi fi done IFS="$orig_IFS" + + # Если существуют .desktop файлы на один и тот же .exe файл, то среди них выбирается + # текущее время берётся из того .desktop файла, в котором проведено больше времени + # и запись этого большего времени будет потом записываться во все .desktop файлы + # у которых общий .exe файл, это нужно для того, чтобы в главном меню .desktop файлы + # упорядочивались нормально. + for i in "${!TIME_CURRENT_ARRAY[@]}" ; do + for j in "${!TIME_CURRENT_ARRAY[@]}" ; do + if (( ${TIME_CURRENT_ARRAY[$i]} > ${TIME_CURRENT_ARRAY[$j]} )) ; then + tmp=${TIME_CURRENT_ARRAY[$i]} + TIME_CURRENT_ARRAY[i]=${TIME_CURRENT_ARRAY[$j]} + TIME_CURRENT_ARRAY[j]=$tmp + fi + done + done + + TIME_CURRENT="${TIME_CURRENT_ARRAY[0]}" + if [[ -n $PW_TIME_IN_GAME ]] ; then + TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) + for df in "${DESKTOP_FILES_ARRAY[@]}" ; do + sed -i '/^#Time=/d' "$df" + echo "#Time=$TIME_TOTAL" >> "$df" + done + else + for df in "${DESKTOP_FILES_ARRAY[@]}" ; do + sed -i '/^#Time=/d' "$df" + echo "#Time=$TIME_CURRENT" >> "$df" + done + fi } # Конвертация секунд в дни, часы, минуты seconds_to_time () { [[ -z $1 ]] && return 0 - local seconds=$1 + local seconds days hours minutes + seconds=$1 - local days=$((seconds / (60 * 60 * 24))) - local seconds=$((seconds % (60 * 60 * 24))) + days=$((seconds / (60 * 60 * 24))) + seconds=$((seconds % (60 * 60 * 24))) - local hours=$((seconds / (60 * 60))) - local seconds=$((seconds % (60 * 60))) + hours=$((seconds / (60 * 60))) + seconds=$((seconds % (60 * 60))) - local minutes=$((seconds / 60)) - local seconds=$((seconds % 60)) + minutes=$((seconds / 60)) + seconds=$((seconds % 60)) if [[ $days =~ ^0$ ]] ; then - local days= + days= elif [[ $days =~ ^1$ ]] ; then - local days="$days ${translations[day]}, " + days="$days ${translations[day]}, " elif [[ $days =~ ^([2-9]1|[1-9][0-9]+1)$ ]] && [[ $LANGUAGE == ru ]] ; then - local days="$days ${translations[day]}, " - elif [[ $days =~ ^([2-4]|[2-9][2-4]|[1-9][0-9]+[2-4])$ ]] \ - && [[ $LANGUAGE == ru ]] ; then - local days="$days дня, " + days="$days ${translations[day]}, " + elif [[ $days =~ ^([2-4]|[2-9][2-4]|[1-9][0-9]+[2-4])$ ]] && [[ $LANGUAGE == ru ]] ; then + days="$days дня, " else - local days="$days ${translations[days]}, " + days="$days ${translations[days]}, " fi if [[ $hours =~ ^0$ ]] ; then - local hours= + hours= elif [[ $hours =~ ^1$ ]] ; then - local hours="$hours ${translations[hour]} ${translations[and]} " + hours="$hours ${translations[hour]} ${translations[and]} " elif [[ $hours =~ ^([2-4]|2[2-4])$ ]] && [[ $LANGUAGE == ru ]] ; then - local hours="$hours часа ${translations[and]} " + hours="$hours часа ${translations[and]} " elif [[ $hours =~ ^21$ ]] && [[ $LANGUAGE == ru ]] ; then - local hours="$hours ${translations[hour]} ${translations[and]} " + hours="$hours ${translations[hour]} ${translations[and]} " else - local hours="$hours ${translations[hours]} ${translations[and]} " + hours="$hours ${translations[hours]} ${translations[and]} " fi if [[ $minutes =~ ^0$ ]] ; then - local hours=${hours//" ${translations[and]} "/} - local minutes= + hours=${hours//" ${translations[and]} "/} + minutes= if [[ $days == "" ]] || [[ $hours == "" ]] ; then - local days=${days//","/} + days=${days//","/} fi if [[ $days == "" ]] && [[ $hours == "" ]] ; then - local minutes="${translations[not known yet]}" + minutes="${translations[less than a minute]}" fi elif [[ $minutes =~ ^1$ ]] ; then - local minutes="$minutes ${translations[minute]}" + minutes="$minutes ${translations[minute]}" elif [[ $minutes =~ ^[2-5]1$ ]] && [[ $LANGUAGE == ru ]] ; then - local minutes="$minutes ${translations[minute]}" + minutes="$minutes ${translations[minute]}" elif [[ $minutes =~ ^([2-4]|[2-5][2-4])$ ]] && [[ $LANGUAGE == ru ]] ; then - local minutes="$minutes минуты" + minutes="$minutes минуты" else - local minutes="$minutes ${translations[minutes]}" + minutes="$minutes ${translations[minutes]}" fi echo -e "\n${translations[Time spent]}: $days$hours$minutes" @@ -882,32 +915,34 @@ combobox_fix () { print_error "no argument specified for combobox_fix" return 1 else + local name1 name2 if [[ "$1" == "--disabled" ]] ; then if [[ -z "$3" ]] ; then echo "disabled" return 0 fi - local name1="$2" - local name2="$3" + name1="$2" + name2="$3" elif [[ "$1" == "--empty" ]] ; then if [[ -z "$3" ]] ; then echo "" return 0 fi - local name1="$2" - local name2="$3" + name1="$2" + name2="$3" else - local name1="$1" + name1="$1" if [[ -z "$2" ]] ; then echo "${name1}" return 0 fi - local name2="$2" + name2="$2" fi - local name3="${name2//\!${name1}\!/\!}" - local name3="!${name3//${name1}\!/\!}" - local name3="${name3//\!\!/\!}" - local name4="${name3//*\!/}" + local name3 name4 + name3="${name2//\!${name1}\!/\!}" + name3="!${name3//${name1}\!/\!}" + name3="${name3//\!\!/\!}" + name4="${name3//*\!/}" if [[ ${name1} == "${name4}" ]] || [[ ${name1} == "\\${name4}" ]] then name3="${name3%\!"${name1}"}" fi @@ -2320,14 +2355,12 @@ pw_find_exe () { --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)" YAD_STATUS="$?" - if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then - if [[ -z "${PW_SET_FIND_EXE}" ]] ; then - print_info "Restarting..." - restart_pp - fi - exit 0 - fi + IFS="$orig_IFS" + if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then + print_info "Restarting..." + restart_pp + fi if [[ -n "${PW_SET_FIND_EXE}" ]] ; then portwine_exe="${PW_PATH_FOR_FIND}$(echo "${PW_SET_FIND_EXE}" | awk -F'|' '{print $1}')" @@ -5483,6 +5516,7 @@ portwine_create_shortcut () { fi elif [[ "$PW_YAD_OUT" == "2" ]] ; then print_info "Restarting PP..." + [[ -n $KEY_MENU ]] && unset portwine_exe [[ "${PW_GUI_START}" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB restart_pp fi @@ -5511,7 +5545,7 @@ pw_auto_create_shortcut () { [[ -z "${LINKS[0]}" ]] && return 0 SORTED_LINKS=() while IFS= read -r line ; do - SORTED_LINKS+=("$line"); + SORTED_LINKS+=("$line") done < <(echo ${LINKS[@]} | tr ' ' '\n' | sort -u) IFS="$orig_IFS" @@ -5562,6 +5596,7 @@ pw_auto_create_shortcut () { PORTPROTON_NAME="$link_name" export portwine_exe="$exe_path" resize_png "$portwine_exe" "${PORTPROTON_NAME}" "128" + export PW_NO_RESTART_PPDB=1 portwine_create_shortcut fi done @@ -6002,8 +6037,8 @@ button_click () { kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY_MENU}" | awk '{print $1}') > /dev/null 2>&1 PW_YAD_SET="${PORT_WINE_PATH}/${PW_YAD_SET//#@_@#/ }" if [[ -n $PW_DESKTOP_FILES_REGEX ]] ; then - count=1 - for y in ${PW_DESKTOP_FILES_REGEX[@]} ; do + local count=1 + for y in "${PW_DESKTOP_FILES_REGEX[@]}" ; do PW_YAD_SET="${PW_YAD_SET//#+_$count#/$y}" (( count++ )) done diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 045eec2..e4869c2 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -25,7 +25,8 @@ if PORT_SCRIPTS_PATH=$(readlink -f "${0%/*}") ; then export PORT_SCRIPTS_PATH export PORT_WINE_PATH=${PORT_SCRIPTS_PATH%/*/*} else - fatal + echo "The PORT_SCRIPTS_PATH directory was not found!" + exit 1 fi # shellcheck source=/dev/null @@ -90,10 +91,11 @@ unset MANGOHUD MANGOHUD_DLSYM PW_NO_ESYNC PW_NO_FSYNC PW_VULKAN_USE WINEDLLOVERR unset PW_CHECK_AUTOINSTALL PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PORTWINE_DB PORTWINE_DB_FILE RADV_PERFTEST unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME PW_PATH unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY -unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48 unset MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR unset PW_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START PW_AUTOINSTALL_EXE NOSTSTDIR RADV_DEBUG PW_NO_AUTO_CREATE_SHORTCUT -unset PW_DESKTOP_FILES_REGEX PW_TERM +unset PW_NAME_D_ICON PW_ICON_PATH PW_GAME_TIME PW_ALL_DF PW_AMOUNT_NEW_DESKTOP PW_AMOUNT_OLD_DESKTOP PW_DESKTOP_FILES +unset AI_TYPE AI_NAME AI_IMAGE AI_INFO AI_FILE_ARRAY AI_TRUE_FILE AI_FILE_UNSORTED AI_FILE_SORTED PW_GENERATE_BUTTONS +unset PW_DESKTOP_FILES_REGEX PW_TERM PW_EXEC_FROM_DESKTOP export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp" rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}* @@ -324,7 +326,7 @@ export SKIP_CHECK_UPDATES="1" [[ "$MISSING_DESKTOP_FILE" == "1" ]] && portwine_missing_shortcut -if [[ -n $(basename "${portwine_exe}" | grep .ppack) ]] ; then +if [[ $(basename "${portwine_exe}") =~ .ppack$ ]] ; then unset PW_SANDBOX_HOME_PATH pw_init_runtime if check_flatpak @@ -500,9 +502,9 @@ if [[ -f "${portwine_exe}" ]] ; then [[ $DESKTOP_WITH_TIME == enabled ]] && search_desktop_file if [[ -z "${PW_COMMENT_DB}" ]] ; then if [[ -n "${PORTPROTON_NAME}" ]] ; then - PW_COMMENT_DB="${translations[Launching]} $(print_wrapped "${PORTPROTON_NAME}" "50")$(seconds_to_time "$TIME_CURRENT")" + PW_COMMENT_DB="${translations[Launching]} $(print_wrapped "${PORTPROTON_NAME}" "50")$(seconds_to_time "$TIME_CURRENT")" else - PW_COMMENT_DB="${translations[Launching]} $(print_wrapped "${PORTWINE_DB}" "50")$(seconds_to_time "$TIME_CURRENT")" + PW_COMMENT_DB="${translations[Launching]} $(print_wrapped "${PORTWINE_DB}" "50")$(seconds_to_time "$TIME_CURRENT")" fi else PW_COMMENT_DB="$PW_COMMENT_DB$(seconds_to_time "$TIME_CURRENT")" @@ -586,10 +588,14 @@ if [[ -f "${portwine_exe}" ]] ; then --button="${translations[LAUNCH]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"${translations[Run file ...]}":106 2>/dev/null PW_YAD_SET="$?" fi - case $PW_YAD_SET in + case "$PW_YAD_SET" in 128) [[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB - unset portwine_exe KEY_START $(sed -n '/export/p' "${PORTWINE_DB_FILE}" | sed 's/\(export\|=.*\| \)//g') + PORTWINE_DB_FOR_UNSET=$(sed -n '/export/p' "${PORTWINE_DB_FILE}" | sed 's/\(export\|=.*\| \)//g') + for db_unset in $PORTWINE_DB_FOR_UNSET ; do + unset "$db_unset" + done + unset portwine_exe KEY_START print_info "Restarting..." restart_pp ;; @@ -622,32 +628,25 @@ else PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /} fi fi - if [[ $line =~ ^Icon= ]] ; then - PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" - fi - if [[ $line =~ ^#Time= ]] ; then - WITH_TIME="1" - PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//#Time=/}" - fi + [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" + [[ $line =~ ^#Time= ]] && PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//#Time=/}" + [[ $line =~ ^#NEW_DESKTOP ]] && NEW_DESKTOP=1 done < "$desktop_file" PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="$desktop_file_new" - # Чтобы новый ярлык показало первым при первом запуске, потом уже по времени - if [[ $WITH_TIME != 1 ]] ; then - echo "#Time=0" >> "$desktop_file" - if [[ $SORT_WITH_TIME == enabled ]] ; then - PW_AMOUNT_NO_TIME+=($AMOUNT_GENERATE_BUTTONS) - else - PW_AMOUNT_WITH_TIME+=($AMOUNT_GENERATE_BUTTONS) - fi + if [[ $NEW_DESKTOP == 1 ]] && [[ $SORT_WITH_TIME == enabled ]] ; then + unset NEW_DESKTOP + sed -i '/^#NEW_DESKTOP/d' "$desktop_file" + PW_AMOUNT_NEW_DESKTOP+=($AMOUNT_GENERATE_BUTTONS) else - if [[ ! ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} =~ [0-9]+ ]] ; then - sed -i '/^#Time=/d' "$desktop_file" - echo "#Time=0" >> "$desktop_file" - PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="0" - fi - PW_AMOUNT_WITH_TIME+=($AMOUNT_GENERATE_BUTTONS) + PW_AMOUNT_OLD_DESKTOP+=($AMOUNT_GENERATE_BUTTONS) + fi + # Для фикса битых #Time= + if [[ ! ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} =~ [0-9]+ ]] ; then + portwine_exe=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//\"/} + search_desktop_file + unset portwine_exe + PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=${TIME_CURRENT_ARRAY[0]} fi - unset WITH_TIME (( AMOUNT_GENERATE_BUTTONS++ )) fi fi @@ -681,7 +680,7 @@ else # Генерация .desktop баттанов для главного меню IFS=$'\n' PW_GENERATE_BUTTONS="--field= ${translations[Create shortcut...]}!${PW_GUI_ICON_PATH}/find_48.svg!:FBTNR%@bash -c \"button_click --normal pw_find_exe\"%" - for dp in "${PW_AMOUNT_NO_TIME[@]}" "${PW_AMOUNT_WITH_TIME[@]}" ; do + for dp in ${PW_AMOUNT_NEW_DESKTOP[@]} ${PW_AMOUNT_OLD_DESKTOP[@]} ; do PW_NAME_D_ICON_48="${PW_ICON_PATH[dp]%.png}_48" PW_NAME_D_ICON_128="${PW_ICON_PATH[dp]%.png}" PW_NAME_D_ICON_NEW="${PW_NAME_D_ICON[dp]//\"/}" @@ -694,12 +693,12 @@ else PW_DESKTOP_FILES_SHOW_REGEX=(\! % \$ \& \<) PW_DESKTOP_FILES_REGEX=(\( \) \! \$ % \& \` \' \" \> \< \\ \| \;) - for i in ${PW_DESKTOP_FILES_SHOW_REGEX[@]} ; do + for i in "${PW_DESKTOP_FILES_SHOW_REGEX[@]}" ; do PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES_SHOW//$i/}" done count=1 - for j in ${PW_DESKTOP_FILES_REGEX[@]} ; do + for j in "${PW_DESKTOP_FILES_REGEX[@]}" ; do PW_DESKTOP_FILES="${PW_DESKTOP_FILES//$j/#+_$count#}" (( count++ )) done @@ -868,7 +867,7 @@ if [[ -f "${PORTWINE_DB_FILE}" ]] ; then edit_db_from_gui PW_VULKAN_USE PW_WINE_USE PW_PREFIX_NAME fi -case $PW_YAD_SET in +case "$PW_YAD_SET" in gui_pw_reinstall_pp|open_changelog|\ 128|gui_pw_update|gui_rm_portproton|\ change_loc|gui_open_scripts_from_backup|\ @@ -898,7 +897,7 @@ case $PW_YAD_SET in ;; esac -case $PW_YAD_SET in +case "$PW_YAD_SET" in 98) portwine_delete_shortcut ;; 100) portwine_create_shortcut ;; DEBUG|102) portwine_start_debug ;; diff --git a/data_from_portwine/themes/tray/tray_gui_pp b/data_from_portwine/themes/tray/tray_gui_pp index 904af9d9249ffc556c74a3c1e227d0b35d6f1657..42bfd923d3a9dce032a4b85dac50f919d444128a 100755 GIT binary patch delta 7872 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 E1JklXzyJUM delta 7905 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 AcK`qY