diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 094e9ce..315c2a7 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -810,33 +810,26 @@ search_desktop_file () { sed -i "s|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|Exec=flatpak run ru.linux_gaming.PortProton|" "$desktop_file" fi EXEC_DESKTOP_NEW=${EXEC_DESKTOP//\"/} - if [[ -n $TIME_CURRENT_PROXY ]] && [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then - TIME_CURRENT=$TIME_CURRENT_PROXY - TIME_CURRENT_ARRAY+=($TIME_CURRENT) - # Если существует несколько .desktop файлов на один и тот же .exe файл, - # то среди них время берётся из того .desktop файла, в котором проведено дольше времени - # и данное время будет потом записываться во все .desktop файлы у которых общий .exe файл - if [[ -n ${TIME_CURRENT_ARRAY[1]} ]] ; then - 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 - fi - TIME_CURRENT="${TIME_CURRENT_ARRAY[0]}" - fi - unset TIME_CURRENT_PROXY if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then - # Когда новый .desktop файл - if [[ $TIME_CURRENT == "" ]] ; then - echo "#NEW_DESKTOP" >> "$desktop_file" - TIME_CURRENT="0" - # Для битых #Time= - else + if [[ -n $TIME_CURRENT_PROXY ]] ; then + TIME_CURRENT=$TIME_CURRENT_PROXY + TIME_CURRENT_ARRAY+=($TIME_CURRENT) + # Если существует несколько .desktop файлов на один и тот же .exe файл, + # то среди них время берётся из того .desktop файла, в котором проведено дольше времени + # и данное время будет потом записываться во все .desktop файлы у которых общий .exe файл + if [[ -n ${TIME_CURRENT_ARRAY[1]} ]] ; then + 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 + fi + TIME_CURRENT="${TIME_CURRENT_ARRAY[0]}" + # Для битых #Time= if [[ ! $TIME_CURRENT =~ [0-9]+ ]] \ || (( TIME_CURRENT >= 999999999 )) ; then TIME_CURRENT="0" @@ -845,10 +838,13 @@ search_desktop_file () { DESKTOP_FILES_ARRAY["$count"]="$desktop_file" (( count++ )) fi + unset TIME_CURRENT_PROXY fi fi done IFS="$orig_IFS" + + [[ -z $TIME_CURRENT ]] && TIME_CURRENT=0 export TIME_CURRENT if [[ -n $PW_TIME_IN_GAME ]] ; then @@ -5575,6 +5571,9 @@ portwine_create_shortcut () { unset PW_SKIP_RESTART_STEAM fi + # Когда новый .desktop файл + echo "#NEW_DESKTOP" >> "$PORT_WINE_PATH/$name_desktop.desktop" + if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then print_info "Restarting PP..." [[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index ee71414..e0bd383 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -636,10 +636,10 @@ else [[ $line =~ ^#NEW_DESKTOP ]] && NEW_DESKTOP=1 done < "$desktop_file" PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="$desktop_file_new" - if [[ $NEW_DESKTOP == 1 ]] && [[ $SORT_WITH_TIME == enabled ]] ; then + if [[ $SORT_WITH_TIME == enabled ]] && [[ $NEW_DESKTOP == 1 ]] ; then unset NEW_DESKTOP sed -i '/^#NEW_DESKTOP/d' "$desktop_file" - PW_AMOUNT_NEW_DESKTOP+=($AMOUNT_GENERATE_BUTTONS) + PW_AMOUNT_NEW_DESKTOP=($AMOUNT_GENERATE_BUTTONS) else PW_AMOUNT_OLD_DESKTOP+=($AMOUNT_GENERATE_BUTTONS) fi @@ -657,7 +657,7 @@ else 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]} + PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=$TIME_CURRENT fi (( AMOUNT_GENERATE_BUTTONS++ )) fi @@ -667,10 +667,9 @@ else # Переопределение элементов в массивах в зависимости от PW_GAME_TIME, от большего значения к меньшему. # 10 миллисекунд на 40 .desktop файлов, работает быстро if [[ $SORT_WITH_TIME == enabled ]] && [[ -n ${PW_GAME_TIME[1]} ]] ; then - for i in "${!PW_GAME_TIME[@]}" ; do - for j in "${!PW_GAME_TIME[@]}" ; do - if (( ${PW_GAME_TIME[$i]} > ${PW_GAME_TIME[$j]} )) \ - && [[ ! ${PW_AMOUNT_NEW_DESKTOP[*]} =~ $j ]] ; then + for i in "${PW_AMOUNT_OLD_DESKTOP[@]}" ; do + for j in "${PW_AMOUNT_OLD_DESKTOP[@]}" ; do + if (( ${PW_GAME_TIME[$i]} > ${PW_GAME_TIME[$j]} )) ; then tmp_0=${PW_GAME_TIME[$i]} tmp_1=${PW_ALL_DF[$i]} tmp_2=${PW_NAME_D_ICON[$i]} @@ -693,7 +692,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_NEW_DESKTOP[@]} ${PW_AMOUNT_OLD_DESKTOP[@]} ; 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]//\"/}" @@ -733,7 +732,6 @@ else --gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" \ --align-buttons --scroll --separator=" " ${PW_GENERATE_BUTTONS} 2>/dev/null & IFS="$orig_IFS" - unset PW_GENERATE_BUTTONS "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[3]}" --form --columns=3 --align-buttons --separator=";" --homogeneous-column \ --gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" \