diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index 094e9ce4..315c2a7c 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 ee71414a..e0bd3832 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}" \