From 28e69c77f2cf051a1f91d5c3c4bf659175c2f53e Mon Sep 17 00:00:00 2001 From: Htylol Date: Fri, 4 Oct 2024 13:38:45 +0500 Subject: [PATCH 01/28] To sort need to use AI_TOP_GAMES --- .../{PW_004_BATTLE_NET => PW_BATTLE_NET} | 0 .../pw_autoinstall/{PW_003_EPIC => PW_EPIC} | 0 .../pw_autoinstall/{PW_001_LGC => PW_LGC} | 0 .../scripts/pw_autoinstall/PW_RETROARCH | 2 +- .../{PW_002_VKPLAY => PW_VKPLAY} | 0 data_from_portwine/scripts/start.sh | 53 ++++++++++++------- 6 files changed, 36 insertions(+), 19 deletions(-) rename data_from_portwine/scripts/pw_autoinstall/{PW_004_BATTLE_NET => PW_BATTLE_NET} (100%) rename data_from_portwine/scripts/pw_autoinstall/{PW_003_EPIC => PW_EPIC} (100%) rename data_from_portwine/scripts/pw_autoinstall/{PW_001_LGC => PW_LGC} (100%) rename data_from_portwine/scripts/pw_autoinstall/{PW_002_VKPLAY => PW_VKPLAY} (100%) diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_004_BATTLE_NET b/data_from_portwine/scripts/pw_autoinstall/PW_BATTLE_NET similarity index 100% rename from data_from_portwine/scripts/pw_autoinstall/PW_004_BATTLE_NET rename to data_from_portwine/scripts/pw_autoinstall/PW_BATTLE_NET diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_003_EPIC b/data_from_portwine/scripts/pw_autoinstall/PW_EPIC similarity index 100% rename from data_from_portwine/scripts/pw_autoinstall/PW_003_EPIC rename to data_from_portwine/scripts/pw_autoinstall/PW_EPIC diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_001_LGC b/data_from_portwine/scripts/pw_autoinstall/PW_LGC similarity index 100% rename from data_from_portwine/scripts/pw_autoinstall/PW_001_LGC rename to data_from_portwine/scripts/pw_autoinstall/PW_LGC diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_RETROARCH b/data_from_portwine/scripts/pw_autoinstall/PW_RETROARCH index 6d7bea28..cbac43a0 100755 --- a/data_from_portwine/scripts/pw_autoinstall/PW_RETROARCH +++ b/data_from_portwine/scripts/pw_autoinstall/PW_RETROARCH @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Author: chal55rus (Sergey P.) -# type: games +# type: emulators # name: RetroArch # image: retroarch # info_en: diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_002_VKPLAY b/data_from_portwine/scripts/pw_autoinstall/PW_VKPLAY similarity index 100% rename from data_from_portwine/scripts/pw_autoinstall/PW_002_VKPLAY rename to data_from_portwine/scripts/pw_autoinstall/PW_VKPLAY diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 4a067ed1..1b799108 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -697,39 +697,56 @@ else --field=" ${translations[Command line]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"${translations[Run wine cmd]}":"FBTN" '@bash -c "button_click --normal WINECMD"' \ --field=" ${translations[Regedit]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"${translations[Run wine regedit]}":"FBTN" '@bash -c "button_click --normal WINEREG"' 1> "${PW_TMPFS_PATH}/tmp_yad_form_vulkan" 2>/dev/null & - AI_AMOUNT_GAMES="0" - AI_AMOUNT_EMULS="0" + AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0" + AI_TOP_GAMES="PW_LGC PW_VKPLAY PW_EPIC PW_BATTLE_NET" for ai_file in "$PORT_SCRIPTS_PATH"/pw_autoinstall/* ; do - AI_FILE="${ai_file//"$PORT_SCRIPTS_PATH/pw_autoinstall/"/}" while IFS= read -r line ; do [[ $line =~ "##########" ]] && break - [[ $line =~ "# type: " ]] && AI_TYPE="${line//# type: /}" - [[ $line =~ "# name: " ]] && AI_NAME="${line//# name: /}" - [[ $line =~ "# image: " ]] && AI_IMAGE="${line//# image: /}" + [[ $line =~ "# type: " ]] && AI_TYPE["$AI_AMOUNT_ARRAY"]="${line//# type: /}" + [[ $line =~ "# name: " ]] && AI_NAME["$AI_AMOUNT_ARRAY"]="${line//# name: /}" + [[ $line =~ "# image: " ]] && AI_IMAGE["$AI_AMOUNT_ARRAY"]="${line//# image: /}" if [[ "$LANGUAGE" == ru ]] ; then - [[ $line =~ "# info_ru: " ]] && AI_INFO="${line//# info_ru: /}" + [[ $line =~ "# info_ru: " ]] && AI_INFO["$AI_AMOUNT_ARRAY"]="${line//# info_ru: /}" else - [[ $line =~ "# info_en: " ]] && AI_INFO="${line//# info_en: /}" + [[ $line =~ "# info_en: " ]] && AI_INFO["$AI_AMOUNT_ARRAY"]="${line//# info_en: /}" fi done < "$ai_file" + AI_FILE="${ai_file//"$PORT_SCRIPTS_PATH/pw_autoinstall/"/}" + AI_FILE_CHECK="$AI_FILE=$AI_AMOUNT_ARRAY" + AI_FILE_ARRAY+=($AI_FILE) + if [[ $AI_TOP_GAMES =~ ${AI_FILE_CHECK//=*/} ]] ; then + AI_TRUE_FILE+=($AI_FILE_CHECK) + else + AI_FILE_UNSORTED+=($AI_AMOUNT_ARRAY) + fi + (( AI_AMOUNT_ARRAY++ )) + done - IFS=$'\n' - [[ -z "$AI_NAME" ]] && yad_error "Line: \"name\" not found in file $AI_FILE." - case $AI_TYPE in - games) - PW_GENERATE_BUTTONS_GAMES+="--field= $AI_NAME!$PW_GUI_ICON_PATH/$AI_IMAGE.png!$AI_INFO:FBTNR%@bash -c \"button_click --normal $AI_FILE\"%" + unset AI_FILE_SORTED + for ai_sort in $AI_TOP_GAMES ; do + if [[ ${AI_TRUE_FILE[*]} =~ $ai_sort ]] ; then + AI_TRUE_FILE_NEW=(${AI_TRUE_FILE[@]//$ai_sort=/}) + AI_FILE_SORTED+=(${AI_TRUE_FILE_NEW[@]//*=*/}) + fi + done + + IFS=$'\n' + for ai in "${AI_FILE_SORTED[@]}" "${AI_FILE_UNSORTED[@]}" ; do + case ${AI_TYPE[$ai]} in + games) + PW_GENERATE_BUTTONS_GAMES+="--field= ${AI_NAME[$ai]}!$PW_GUI_ICON_PATH/${AI_IMAGE[$ai]}.png!${AI_INFO[$ai]}:FBTNR%@bash -c \"button_click --normal ${AI_FILE_ARRAY[$ai]}\"%" (( AI_AMOUNT_GAMES++ )) ;; - emulators) - PW_GENERATE_BUTTONS_EMULS+="--field= $AI_NAME!$PW_GUI_ICON_PATH/$AI_IMAGE.png!$AI_INFO:FBTNR%@bash -c \"button_click --normal $AI_FILE\"%" + emulators) + PW_GENERATE_BUTTONS_EMULS+="--field= ${AI_NAME[$ai]}!$PW_GUI_ICON_PATH/${AI_IMAGE[$ai]}.png!${AI_INFO[$ai]}:FBTNR%@bash -c \"button_click --normal ${AI_FILE_ARRAY[$ai]}\"%" (( AI_AMOUNT_EMULS++ )) ;; - *) - yad_error "Line: \"type\" not found in file $AI_FILE or misspelled." + *) + yad_error "Line: \"type\" not found in file ${AI_FILE_ARRAY[$ai]} or misspelled." ;; esac - [[ -z $PW_DEBUG ]] && unset AI_FILE AI_TYPE AI_NAME AI_IMAGE AI_INFO done + unset AI_FILE_ARRAY AI_TYPE AI_NAME AI_IMAGE AI_INFO MAIN_GUI_ROWS_GAMES="$(( AI_AMOUNT_GAMES / MAIN_GUI_COLUMNS + 1 ))" MAIN_GUI_ROWS_EMULS="$(( AI_AMOUNT_EMULS / MAIN_GUI_COLUMNS + 1 ))" From 6bb1c63e6f2d95ce8de6ae341fa4386cc1819dbb Mon Sep 17 00:00:00 2001 From: Htylol Date: Fri, 4 Oct 2024 15:05:25 +0500 Subject: [PATCH 02/28] added AI_SKIP --- data_from_portwine/scripts/start.sh | 97 +++++++++++++++-------------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 1b799108..96d288f0 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -697,65 +697,66 @@ else --field=" ${translations[Command line]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"${translations[Run wine cmd]}":"FBTN" '@bash -c "button_click --normal WINECMD"' \ --field=" ${translations[Regedit]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"${translations[Run wine regedit]}":"FBTN" '@bash -c "button_click --normal WINEREG"' 1> "${PW_TMPFS_PATH}/tmp_yad_form_vulkan" 2>/dev/null & - AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0" - AI_TOP_GAMES="PW_LGC PW_VKPLAY PW_EPIC PW_BATTLE_NET" - for ai_file in "$PORT_SCRIPTS_PATH"/pw_autoinstall/* ; do - while IFS= read -r line ; do - [[ $line =~ "##########" ]] && break - [[ $line =~ "# type: " ]] && AI_TYPE["$AI_AMOUNT_ARRAY"]="${line//# type: /}" - [[ $line =~ "# name: " ]] && AI_NAME["$AI_AMOUNT_ARRAY"]="${line//# name: /}" - [[ $line =~ "# image: " ]] && AI_IMAGE["$AI_AMOUNT_ARRAY"]="${line//# image: /}" - if [[ "$LANGUAGE" == ru ]] ; then - [[ $line =~ "# info_ru: " ]] && AI_INFO["$AI_AMOUNT_ARRAY"]="${line//# info_ru: /}" + if [[ $AI_SKIP != 1 ]] ; then + AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0" + AI_TOP_GAMES="PW_LGC PW_VKPLAY PW_EPIC PW_BATTLE_NET" + for ai_file in "$PORT_SCRIPTS_PATH"/pw_autoinstall/* ; do + while IFS= read -r line ; do + [[ $line =~ "##########" ]] && break + [[ $line =~ "# type: " ]] && AI_TYPE["$AI_AMOUNT_ARRAY"]="${line//# type: /}" + [[ $line =~ "# name: " ]] && AI_NAME["$AI_AMOUNT_ARRAY"]="${line//# name: /}" + [[ $line =~ "# image: " ]] && AI_IMAGE["$AI_AMOUNT_ARRAY"]="${line//# image: /}" + if [[ "$LANGUAGE" == ru ]] ; then + [[ $line =~ "# info_ru: " ]] && AI_INFO["$AI_AMOUNT_ARRAY"]="${line//# info_ru: /}" + else + [[ $line =~ "# info_en: " ]] && AI_INFO["$AI_AMOUNT_ARRAY"]="${line//# info_en: /}" + fi + done < "$ai_file" + AI_FILE="${ai_file//"$PORT_SCRIPTS_PATH/pw_autoinstall/"/}" + AI_FILE_CHECK="$AI_FILE=$AI_AMOUNT_ARRAY" + AI_FILE_ARRAY+=($AI_FILE) + if [[ $AI_TOP_GAMES =~ ${AI_FILE_CHECK//=*/} ]] ; then + AI_TRUE_FILE+=($AI_FILE_CHECK) else - [[ $line =~ "# info_en: " ]] && AI_INFO["$AI_AMOUNT_ARRAY"]="${line//# info_en: /}" + AI_FILE_UNSORTED+=($AI_AMOUNT_ARRAY) fi - done < "$ai_file" - AI_FILE="${ai_file//"$PORT_SCRIPTS_PATH/pw_autoinstall/"/}" - AI_FILE_CHECK="$AI_FILE=$AI_AMOUNT_ARRAY" - AI_FILE_ARRAY+=($AI_FILE) - if [[ $AI_TOP_GAMES =~ ${AI_FILE_CHECK//=*/} ]] ; then - AI_TRUE_FILE+=($AI_FILE_CHECK) - else - AI_FILE_UNSORTED+=($AI_AMOUNT_ARRAY) - fi - (( AI_AMOUNT_ARRAY++ )) - done + (( AI_AMOUNT_ARRAY++ )) + done - unset AI_FILE_SORTED - for ai_sort in $AI_TOP_GAMES ; do - if [[ ${AI_TRUE_FILE[*]} =~ $ai_sort ]] ; then - AI_TRUE_FILE_NEW=(${AI_TRUE_FILE[@]//$ai_sort=/}) - AI_FILE_SORTED+=(${AI_TRUE_FILE_NEW[@]//*=*/}) - fi - done + for ai_sort in $AI_TOP_GAMES ; do + if [[ ${AI_TRUE_FILE[*]} =~ $ai_sort ]] ; then + AI_TRUE_FILE_NEW=(${AI_TRUE_FILE[@]//$ai_sort=/}) + AI_FILE_SORTED+=(${AI_TRUE_FILE_NEW[@]//*=*/}) + fi + done - IFS=$'\n' - for ai in "${AI_FILE_SORTED[@]}" "${AI_FILE_UNSORTED[@]}" ; do - case ${AI_TYPE[$ai]} in - games) - PW_GENERATE_BUTTONS_GAMES+="--field= ${AI_NAME[$ai]}!$PW_GUI_ICON_PATH/${AI_IMAGE[$ai]}.png!${AI_INFO[$ai]}:FBTNR%@bash -c \"button_click --normal ${AI_FILE_ARRAY[$ai]}\"%" - (( AI_AMOUNT_GAMES++ )) - ;; - emulators) - PW_GENERATE_BUTTONS_EMULS+="--field= ${AI_NAME[$ai]}!$PW_GUI_ICON_PATH/${AI_IMAGE[$ai]}.png!${AI_INFO[$ai]}:FBTNR%@bash -c \"button_click --normal ${AI_FILE_ARRAY[$ai]}\"%" - (( AI_AMOUNT_EMULS++ )) - ;; + IFS=$'\n' + for ai in "${AI_FILE_SORTED[@]}" "${AI_FILE_UNSORTED[@]}" ; do + case ${AI_TYPE[$ai]} in + games) + export PW_GENERATE_BUTTONS_GAMES+="--field= ${AI_NAME[$ai]}!$PW_GUI_ICON_PATH/${AI_IMAGE[$ai]}.png!${AI_INFO[$ai]}:FBTNR%@bash -c \"button_click --normal ${AI_FILE_ARRAY[$ai]}\"%" + (( AI_AMOUNT_GAMES++ )) + ;; + emulators) + export PW_GENERATE_BUTTONS_EMULS+="--field= ${AI_NAME[$ai]}!$PW_GUI_ICON_PATH/${AI_IMAGE[$ai]}.png!${AI_INFO[$ai]}:FBTNR%@bash -c \"button_click --normal ${AI_FILE_ARRAY[$ai]}\"%" + (( AI_AMOUNT_EMULS++ )) + ;; *) - yad_error "Line: \"type\" not found in file ${AI_FILE_ARRAY[$ai]} or misspelled." - ;; - esac - done - unset AI_FILE_ARRAY AI_TYPE AI_NAME AI_IMAGE AI_INFO - MAIN_GUI_ROWS_GAMES="$(( AI_AMOUNT_GAMES / MAIN_GUI_COLUMNS + 1 ))" - MAIN_GUI_ROWS_EMULS="$(( AI_AMOUNT_EMULS / MAIN_GUI_COLUMNS + 1 ))" + yad_error "Line: \"type\" not found in file ${AI_FILE_ARRAY[$ai]} or misspelled." + ;; + esac + done + export MAIN_GUI_ROWS_GAMES="$(( AI_AMOUNT_GAMES / MAIN_GUI_COLUMNS + 1 ))" + export MAIN_GUI_ROWS_EMULS="$(( AI_AMOUNT_EMULS / MAIN_GUI_COLUMNS + 1 ))" + + export AI_SKIP="1" + fi IFS="%" "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[1]}" --form --columns="$MAIN_GUI_ROWS_EMULS" --align-buttons --scroll --homogeneous-column \ --gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" --separator=" " ${PW_GENERATE_BUTTONS_EMULS} 2>/dev/null & "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[0]}" --form --columns="$MAIN_GUI_ROWS_GAMES" --align-buttons --scroll --homogeneous-column \ --gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" --separator=" " ${PW_GENERATE_BUTTONS_GAMES} 2>/dev/null & - unset PW_GENERATE_BUTTONS_GAMES PW_GENERATE_BUTTONS_EMULS IFS="$orig_IFS" export START_FROM_PP_GUI="1" From 8781ca6e3b949bcef64d71981a6c19394aec885f Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 02:02:28 +0500 Subject: [PATCH 03/28] Rewrite PW_DESKTOP_FILES --- data_from_portwine/scripts/start.sh | 59 ++++++++++++++++++----------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 96d288f0..67b83d9d 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -602,35 +602,42 @@ if [[ -f "${portwine_exe}" ]] ; then portwine_launch fi else - PW_ALL_DF="$(ls "${PORT_WINE_PATH}"/ | grep .desktop | grep -vE '(PortProton|readme)')" - if [[ -z "${PW_ALL_DF}" ]] - then export PW_GUI_SORT_TABS=(1 2 3 4 5) - else export PW_GUI_SORT_TABS=(2 3 4 5 1) - fi if [[ "$RESTART_PP_USED" == "userconf" ]] ; then unset RESTART_PP_USED gui_userconf fi - export KEY_MENU="$RANDOM" + AMOUNT_GENERATE_BUTTONS="0" + for desktop_file in "${PORT_WINE_PATH}"/* ; do + if [[ $desktop_file =~ .desktop ]] ; then + if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then + while IFS= read -r line ; do + [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" + [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" + done < "$desktop_file" + desktop_file="${desktop_file//"${PORT_WINE_PATH}"\//}" + PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file}" + DESKTOP_FILE_ARRAY+=($AMOUNT_GENERATE_BUTTONS) + (( AMOUNT_GENERATE_BUTTONS++ )) + fi + fi + done IFS=$'\n' - AMOUNT_GENERATE_BUTTONS="1" PW_GENERATE_BUTTONS="--field= ${translations[Create shortcut...]}!${PW_GUI_ICON_PATH}/find_48.svg!:FBTNR%@bash -c \"button_click --normal pw_find_exe\"%" - for PW_DESKTOP_FILES in ${PW_ALL_DF} ; do - if check_flatpak ; then - PW_NAME_D_ICON="$(grep Exec "${PORT_WINE_PATH}/${PW_DESKTOP_FILES}" | awk -F'=' '{print $2}' | - sed -e 's|flatpak run ru.linux_gaming.PortProton||' -e 's|"||g' -e 's|^[ \t]*||')" - else - PW_NAME_D_ICON="$(grep Exec "${PORT_WINE_PATH}/${PW_DESKTOP_FILES}" | awk -F"=env " '{print $2}' | - sed -e "s|${PORT_SCRIPTS_PATH}/start.sh||" -e 's|"||g' -e 's|^[ \t]*||')" - fi - PW_ICON_PATH="$(grep Icon "${PORT_WINE_PATH}/${PW_DESKTOP_FILES}" | awk -F= '{print $2}')" - PW_NAME_D_ICON_48="${PW_ICON_PATH%.png}_48" - PW_NAME_D_ICON_128="${PW_ICON_PATH%.png}" - if [[ -f "${PW_NAME_D_ICON}" ]] ; then - resize_png "${PW_NAME_D_ICON}" "${PW_NAME_D_ICON_48//"${PORT_WINE_PATH}/data/img/"/}" "48" - resize_png "${PW_NAME_D_ICON}" "${PW_NAME_D_ICON_128//"${PORT_WINE_PATH}/data/img/"/}" "128" + for df in "${DESKTOP_FILE_ARRAY[@]}" ; do + PW_DESKTOP_FILES="${PW_ALL_DF[$df]}" + if [[ -n ${PW_NAME_D_ICON[$df]} ]] ; then + PW_NAME_D_ICON_48="${PW_ICON_PATH[$df]%.png}_48" + PW_NAME_D_ICON_128="${PW_ICON_PATH[$df]%.png}" + if check_flatpak ; then + PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[$df]//flatpak run ru.linux_gaming.PortProton /} + else + PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[$df]//"${PORT_SCRIPTS_PATH}/start.sh" /} + fi + PW_NAME_D_ICON_NEW="${PW_NAME_D_ICON_NEW//\"/}" + resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_48//"${PORT_WINE_PATH}/data/img/"/}" "48" + resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_128//"${PORT_WINE_PATH}/data/img/"/}" "128" fi if [[ $PW_DESKTOP_FILES =~ [\(\)\!\$\%\&\`\'\"\>\<\\\|\;] ]] ; then export PW_DESKTOP_FILES_REGEX="1" @@ -658,9 +665,15 @@ else PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES}" fi PW_GENERATE_BUTTONS+="--field= $(print_wrapped "${PW_DESKTOP_FILES_SHOW//".desktop"/""}" "25" "...")!${PW_NAME_D_ICON_48}.png!:FBTNR%@bash -c \"button_click --desktop "${PW_DESKTOP_FILES// /#@_@#}"\"%" - (( AMOUNT_GENERATE_BUTTONS++ )) done - MAIN_GUI_ROWS="$(( AMOUNT_GENERATE_BUTTONS / MAIN_GUI_COLUMNS + 1 ))" + MAIN_GUI_ROWS="$(( ( AMOUNT_GENERATE_BUTTONS + 1 ) / MAIN_GUI_COLUMNS + 1 ))" + + if [[ -z "${PW_ALL_DF[0]}" ]] + then export PW_GUI_SORT_TABS=(1 2 3 4 5) + else export PW_GUI_SORT_TABS=(2 3 4 5 1) + fi + + KEY_MENU="$RANDOM" IFS="%" "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[4]}" --form --columns="$MAIN_GUI_ROWS" --homogeneous-column \ From ceaa7da2a037323e0038cd1cc338bca3d8c2a60a Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 04:18:01 +0500 Subject: [PATCH 04/28] Update PW_DESKTOP_FILES_REGEX --- data_from_portwine/scripts/functions_helper | 21 ++++-------- data_from_portwine/scripts/start.sh | 37 ++++++++------------- 2 files changed, 20 insertions(+), 38 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 08ec756d..2e5838b7 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -5851,21 +5851,12 @@ button_click () { --desktop) 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 [[ $PW_DESKTOP_FILES_REGEX == "1" ]] ; then - PW_YAD_SET="${PW_YAD_SET//#+_1#/\(}" - PW_YAD_SET="${PW_YAD_SET//#+_2#/\)}" - PW_YAD_SET="${PW_YAD_SET//#+_3#/\!}" - PW_YAD_SET="${PW_YAD_SET//#+_4#/\$}" - PW_YAD_SET="${PW_YAD_SET//#+_5#/\%}" - PW_YAD_SET="${PW_YAD_SET//#+_6#/\&}" - PW_YAD_SET="${PW_YAD_SET//#+_7#/\`}" - PW_YAD_SET="${PW_YAD_SET//#+_8#/\'}" - PW_YAD_SET="${PW_YAD_SET//#+_9#/\"}" - PW_YAD_SET="${PW_YAD_SET//#+_10#/\>}" - PW_YAD_SET="${PW_YAD_SET//#+_11#/\<}" - PW_YAD_SET="${PW_YAD_SET//#+_12#/\\}" - PW_YAD_SET="${PW_YAD_SET//#+_13#/\|}" - PW_YAD_SET="${PW_YAD_SET//#+_14#/\;}" + if [[ -n $PW_DESKTOP_FILES_REGEX ]] ; then + count=1 + for y in ${PW_DESKTOP_FILES_REGEX[@]} ; do + PW_YAD_SET="${PW_YAD_SET//#+_$count#/$y}" + (( count++ )) + done fi if check_flatpak then PW_EXEC_FROM_DESKTOP="$(grep Exec "$PW_YAD_SET" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 67b83d9d..12c102b9 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -639,30 +639,21 @@ else resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_48//"${PORT_WINE_PATH}/data/img/"/}" "48" resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_128//"${PORT_WINE_PATH}/data/img/"/}" "128" fi - if [[ $PW_DESKTOP_FILES =~ [\(\)\!\$\%\&\`\'\"\>\<\\\|\;] ]] ; then - export PW_DESKTOP_FILES_REGEX="1" - PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES//\!/}" - PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES_SHOW//\%/}" - PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES_SHOW//\$/}" - PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES_SHOW//\&/}" - PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES_SHOW//\/#+_10#}" - PW_DESKTOP_FILES="${PW_DESKTOP_FILES//\\<\\\|\;] ]] ; then + PW_DESKTOP_FILES_SHOW_REGEX=(\! % \$ \& \<) + PW_DESKTOP_FILES_REGEX=(\( \) \! \$ % \& \` \' \" \> \< \\ \| \;) + + 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 + PW_DESKTOP_FILES="${PW_DESKTOP_FILES//$j/#+_$count#}" + (( count++ )) + done fi PW_GENERATE_BUTTONS+="--field= $(print_wrapped "${PW_DESKTOP_FILES_SHOW//".desktop"/""}" "25" "...")!${PW_NAME_D_ICON_48}.png!:FBTNR%@bash -c \"button_click --desktop "${PW_DESKTOP_FILES// /#@_@#}"\"%" done From 1d1ccdfb81470e0c2854fce65af2ccb818d77d73 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 05:49:46 +0500 Subject: [PATCH 05/28] Update debug_timer --- data_from_portwine/scripts/functions_helper | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 2e5838b7..bf119e09 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -744,12 +744,15 @@ debug_timer () { START=$(date +%s%N) elif [[ "$1" == "--end" ]] ; then END=$(date +%s%N) - DIFF=$((( END - START )/1000000)) if [[ -n "$2" ]] ; then - if [[ "$2" != "-s" ]] ; then + if [[ "$2" == "-s" ]] ; then + export "$3"=$((( END - START )/1000000 )) + else + DIFF=$((( END - START )/1000000 )) print_warning "It took $DIFF milliseconds for $2" fi else + DIFF=$((( END - START )/1000000 )) print_warning "It took $DIFF milliseconds" fi fi @@ -1761,8 +1764,7 @@ pw_port_update () { print_warning "https://gitlab.eterfund.ru/ broken. Skip it..." UPDATE_SKIP_ETERFUND="1" fi - debug_timer --end -s - UPDATE_ETERFUND="$DIFF" + debug_timer --end -s "UPDATE_ETERFUND" debug_timer --start if ! timeout 2 curl -f -s --list-only "$URL_GITHUB" > "${PORT_WINE_TMP_PATH}/curent_var_ver" @@ -1770,8 +1772,7 @@ pw_port_update () { print_warning "https://raw.githubusercontent.com/ broken. Skip it..." UPDATE_SKIP_GITHUB="1" fi - debug_timer --end -s - UPDATE_GITHUB="$DIFF" + debug_timer --end -s "UPDATE_GITHUB" if [[ "$UPDATE_SKIP_ETERFUND" == "1" ]] \ && [[ "$UPDATE_SKIP_GITHUB" == "1" ]] ; then From bb84ba2f67e5db18d34cc9a1fb7c1849d2b3a0aa Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 08:12:40 +0500 Subject: [PATCH 06/28] Added Time= in desktop file --- data_from_portwine/scripts/functions_helper | 43 +++++++++++++++++++-- data_from_portwine/scripts/start.sh | 24 +++++++----- 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index bf119e09..87399e64 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -742,11 +742,29 @@ unpack () { debug_timer () { if [[ "$1" == "--start" ]] ; then START=$(date +%s%N) + if [[ "$2" == "-s" ]] ; then + case $3 in + PW_TIME_IN_GAME) + START_PW_TIME_IN_GAME=$START ;; + UPDATE_ETERFUND) + START_UPDATE_ETERFUND=$START ;; + UPDATE_GITHUB) + START_UPDATE_GITHUB=$START ;; + esac + fi elif [[ "$1" == "--end" ]] ; then END=$(date +%s%N) if [[ -n "$2" ]] ; then if [[ "$2" == "-s" ]] ; then - export "$3"=$((( END - START )/1000000 )) + case $3 in + PW_TIME_IN_GAME) + START=$START_PW_TIME_IN_GAME ;; + UPDATE_ETERFUND) + START=$START_UPDATE_ETERFUND ;; + UPDATE_GITHUB) + START=$START_UPDATE_GITHUB ;; + esac + export "$3"="$((( END - START )/1000000 ))" else DIFF=$((( END - START )/1000000 )) print_warning "It took $DIFF milliseconds for $2" @@ -1301,6 +1319,23 @@ stop_portwine () { pw_exit_tray pw_auto_create_shortcut add_in_stop_portwine + + debug_timer --end -s "PW_TIME_IN_GAME" + while IFS= read -r line ; do + if [[ $line =~ ^Time= ]] ; then + export SKIP_GAME_TIME="1" + TIME_CURRENT=${line//Time=/} + TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) + fi + done < "$LAST_DESKTOP_FILE" + IFS="$orig_IFS" + if [[ $SKIP_GAME_TIME != 1 ]] ; then + echo "Time=$PW_TIME_IN_GAME" >> "$LAST_DESKTOP_FILE" + else + sed -i '/^Time=/d' "$LAST_DESKTOP_FILE" + echo "Time=$TIME_TOTAL" >> "$LAST_DESKTOP_FILE" + fi + case "$1" in --restart) restart_pp ;; @@ -1758,7 +1793,7 @@ pw_port_update () { URL_GITHUB="https://raw.githubusercontent.com/Castro-Fidel/PortWINE/${BRANCH}/data_from_portwine/scripts/var" pw_check_update () { - debug_timer --start + debug_timer --start -s "UPDATE_ETERFUND" if ! timeout 2 curl -f -s --list-only "$URL_ETERFUND" > "${PORT_WINE_TMP_PATH}/curent_var_ver" then print_warning "https://gitlab.eterfund.ru/ broken. Skip it..." @@ -1766,7 +1801,7 @@ pw_port_update () { fi debug_timer --end -s "UPDATE_ETERFUND" - debug_timer --start + debug_timer --start -s "UPDATE_GITHUB" if ! timeout 2 curl -f -s --list-only "$URL_GITHUB" > "${PORT_WINE_TMP_PATH}/curent_var_ver" then print_warning "https://raw.githubusercontent.com/ broken. Skip it..." @@ -3532,6 +3567,7 @@ portwine_launch () { PW_VD_TMP=(explorer "/desktop=PortProton,${PW_SCREEN_RESOLUTION}") fi + debug_timer --start -s "PW_TIME_IN_GAME" case "$portwine_exe" in *.[Ee][Xx][Ee]) pw_run ${PW_VD_TMP[@]} ${WINE_WIN_START} "$portwine_exe" @@ -5859,6 +5895,7 @@ button_click () { (( count++ )) done fi + export LAST_DESKTOP_FILE="$PW_YAD_SET" if check_flatpak then PW_EXEC_FROM_DESKTOP="$(grep Exec "$PW_YAD_SET" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')" else PW_EXEC_FROM_DESKTOP="$(grep Exec "$PW_YAD_SET" | head -n 1 | awk -F"=env " '{print $2}')" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 12c102b9..a0bc0224 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -607,17 +607,20 @@ else gui_userconf fi + debug_timer --start AMOUNT_GENERATE_BUTTONS="0" for desktop_file in "${PORT_WINE_PATH}"/* ; do + if [[ $desktop_file =~ .desktop ]] ; then if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then while IFS= read -r line ; do [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" + [[ $line =~ ^Time= ]] && PW_GAME_TIME["${line//Time=/}"]="${desktop_file//"${PORT_WINE_PATH}"\//}" done < "$desktop_file" - desktop_file="${desktop_file//"${PORT_WINE_PATH}"\//}" - PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file}" - DESKTOP_FILE_ARRAY+=($AMOUNT_GENERATE_BUTTONS) + if [[ -z ${PW_GAME_TIME["${line//Time=/}"]} ]] ; then + PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + fi (( AMOUNT_GENERATE_BUTTONS++ )) fi fi @@ -625,15 +628,14 @@ else 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 df in "${DESKTOP_FILE_ARRAY[@]}" ; do - PW_DESKTOP_FILES="${PW_ALL_DF[$df]}" - if [[ -n ${PW_NAME_D_ICON[$df]} ]] ; then - PW_NAME_D_ICON_48="${PW_ICON_PATH[$df]%.png}_48" - PW_NAME_D_ICON_128="${PW_ICON_PATH[$df]%.png}" + for PW_DESKTOP_FILES in "${PW_GAME_TIME[@]}" "${PW_ALL_DF[@]}" ; do + if [[ -n ${PW_NAME_D_ICON} ]] ; then + PW_NAME_D_ICON_48="${PW_ICON_PATH%.png}_48" + PW_NAME_D_ICON_128="${PW_ICON_PATH%.png}" if check_flatpak ; then - PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[$df]//flatpak run ru.linux_gaming.PortProton /} + PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON//flatpak run ru.linux_gaming.PortProton /} else - PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[$df]//"${PORT_SCRIPTS_PATH}/start.sh" /} + PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON//"${PORT_SCRIPTS_PATH}/start.sh" /} fi PW_NAME_D_ICON_NEW="${PW_NAME_D_ICON_NEW//\"/}" resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_48//"${PORT_WINE_PATH}/data/img/"/}" "48" @@ -657,6 +659,7 @@ else fi PW_GENERATE_BUTTONS+="--field= $(print_wrapped "${PW_DESKTOP_FILES_SHOW//".desktop"/""}" "25" "...")!${PW_NAME_D_ICON_48}.png!:FBTNR%@bash -c \"button_click --desktop "${PW_DESKTOP_FILES// /#@_@#}"\"%" done + MAIN_GUI_ROWS="$(( ( AMOUNT_GENERATE_BUTTONS + 1 ) / MAIN_GUI_COLUMNS + 1 ))" if [[ -z "${PW_ALL_DF[0]}" ]] @@ -755,6 +758,7 @@ else export AI_SKIP="1" fi + debug_timer --end IFS="%" "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[1]}" --form --columns="$MAIN_GUI_ROWS_EMULS" --align-buttons --scroll --homogeneous-column \ From 477bc8071f4a94baec7397ccf5ce6956d8caac4b Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 10:53:22 +0500 Subject: [PATCH 07/28] Use PW_DESKTOP_FILES --- data_from_portwine/scripts/functions_helper | 1 + data_from_portwine/scripts/start.sh | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 87399e64..dca8a221 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1321,6 +1321,7 @@ stop_portwine () { add_in_stop_portwine debug_timer --end -s "PW_TIME_IN_GAME" + PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) while IFS= read -r line ; do if [[ $line =~ ^Time= ]] ; then export SKIP_GAME_TIME="1" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index a0bc0224..af24e625 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -90,7 +90,7 @@ 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_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48 +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 @@ -616,11 +616,15 @@ else while IFS= read -r line ; do [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" - [[ $line =~ ^Time= ]] && PW_GAME_TIME["${line//Time=/}"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + if [[ $line =~ ^Time= ]] ; then + PW_GAME_TIME["${line//Time=/}"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + WITH_TIME="1" + fi done < "$desktop_file" - if [[ -z ${PW_GAME_TIME["${line//Time=/}"]} ]] ; then + if [[ $WITH_TIME != 1 ]] ; then PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" fi + unset WITH_TIME (( AMOUNT_GENERATE_BUTTONS++ )) fi fi @@ -662,7 +666,7 @@ else MAIN_GUI_ROWS="$(( ( AMOUNT_GENERATE_BUTTONS + 1 ) / MAIN_GUI_COLUMNS + 1 ))" - if [[ -z "${PW_ALL_DF[0]}" ]] + if [[ -z $PW_DESKTOP_FILES ]] then export PW_GUI_SORT_TABS=(1 2 3 4 5) else export PW_GUI_SORT_TABS=(2 3 4 5 1) fi @@ -772,7 +776,7 @@ else export TAB_MAIN_MENU="1" fi - if [[ -z "${PW_ALL_DF}" ]] ; then + if [[ -z $PW_DESKTOP_FILES ]] ; then "${pw_yad}" --key=$KEY_MENU --notebook --expand \ --gui-type="settings-notebook" --active-tab="${TAB_MAIN_MENU}" \ --width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons \ @@ -826,7 +830,7 @@ fi 128|gui_pw_update|gui_rm_portproton|\ change_loc|gui_open_scripts_from_backup|\ gui_credits|pw_start_cont_xterm) - if [[ -z "${PW_ALL_DF}" ]] ; then + if [[ -z $PW_DESKTOP_FILES ]] ; then export TAB_MAIN_MENU="4" else export TAB_MAIN_MENU="5" @@ -836,14 +840,14 @@ fi 116|pw_create_prefix_backup|\ gui_clear_pfx|WINEREG|WINECMD|\ WINEFILE|WINECFG|gui_wine_uninstaller) - if [[ -z "${PW_ALL_DF}" ]] ; then + if [[ -z $PW_DESKTOP_FILES ]] ; then export TAB_MAIN_MENU="3" else export TAB_MAIN_MENU="4" fi ;; pw_find_exe) - if [[ -z "${PW_ALL_DF}" ]] ; then + if [[ -z $PW_DESKTOP_FILES ]] ; then export TAB_MAIN_MENU="5" else export TAB_MAIN_MENU="1" From 006f5645f149872f02a7eb934ef2a8fba8d1332b Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 11:43:23 +0500 Subject: [PATCH 08/28] Added sort with time for desktop file in menu --- data_from_portwine/scripts/functions_helper | 3 ++- data_from_portwine/scripts/start.sh | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index dca8a221..ee149cfb 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1321,7 +1321,8 @@ stop_portwine () { add_in_stop_portwine debug_timer --end -s "PW_TIME_IN_GAME" - PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) + #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) так в минутах + PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) while IFS= read -r line ; do if [[ $line =~ ^Time= ]] ; then export SKIP_GAME_TIME="1" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index af24e625..b7e67a60 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -610,14 +610,14 @@ else debug_timer --start AMOUNT_GENERATE_BUTTONS="0" for desktop_file in "${PORT_WINE_PATH}"/* ; do - if [[ $desktop_file =~ .desktop ]] ; then if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then while IFS= read -r line ; do [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" if [[ $line =~ ^Time= ]] ; then - PW_GAME_TIME["${line//Time=/}"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + PW_ALL_DF_WITH_TIME["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//Time=/}" WITH_TIME="1" fi done < "$desktop_file" @@ -630,9 +630,22 @@ else fi done + for i in "${!PW_GAME_TIME[@]}" ; do + for j in "${!PW_GAME_TIME[@]}" ; do + if [[ ${PW_GAME_TIME[$i]} -gt ${PW_GAME_TIME[$j]} ]]; then + tmp=${PW_GAME_TIME[$i]} + tmp_new=${PW_ALL_DF_WITH_TIME[$i]} + PW_GAME_TIME[$i]=${PW_GAME_TIME[$j]} + PW_ALL_DF_WITH_TIME[$i]=${PW_ALL_DF_WITH_TIME[$j]} + PW_GAME_TIME[$j]=$tmp + PW_ALL_DF_WITH_TIME[$j]=$tmp_new + fi + done + done + 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 PW_DESKTOP_FILES in "${PW_GAME_TIME[@]}" "${PW_ALL_DF[@]}" ; do + for PW_DESKTOP_FILES in "${PW_ALL_DF_WITH_TIME[@]}" "${PW_ALL_DF[@]}" ; do if [[ -n ${PW_NAME_D_ICON} ]] ; then PW_NAME_D_ICON_48="${PW_ICON_PATH%.png}_48" PW_NAME_D_ICON_128="${PW_ICON_PATH%.png}" From f6879176925b945c71aa5b33d445124f5a8571c2 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 12:49:43 +0500 Subject: [PATCH 09/28] Fixed bugs --- data_from_portwine/scripts/functions_helper | 13 +++----- data_from_portwine/scripts/start.sh | 37 +++++++++++++-------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index ee149cfb..323ab50e 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1321,22 +1321,17 @@ stop_portwine () { add_in_stop_portwine debug_timer --end -s "PW_TIME_IN_GAME" - #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) так в минутах - PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) + #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) # в минутах + PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах while IFS= read -r line ; do if [[ $line =~ ^Time= ]] ; then - export SKIP_GAME_TIME="1" TIME_CURRENT=${line//Time=/} TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) fi done < "$LAST_DESKTOP_FILE" IFS="$orig_IFS" - if [[ $SKIP_GAME_TIME != 1 ]] ; then - echo "Time=$PW_TIME_IN_GAME" >> "$LAST_DESKTOP_FILE" - else - sed -i '/^Time=/d' "$LAST_DESKTOP_FILE" - echo "Time=$TIME_TOTAL" >> "$LAST_DESKTOP_FILE" - fi + sed -i '/^Time=/d' "$LAST_DESKTOP_FILE" + echo "Time=$TIME_TOTAL" >> "$LAST_DESKTOP_FILE" case "$1" in --restart) diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index b7e67a60..e908c72c 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -616,15 +616,17 @@ else [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" if [[ $line =~ ^Time= ]] ; then - PW_ALL_DF_WITH_TIME["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//Time=/}" WITH_TIME="1" fi done < "$desktop_file" + PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" if [[ $WITH_TIME != 1 ]] ; then - PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + echo "Time=0" >> "$desktop_file" + PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="0" fi unset WITH_TIME + PW_ALL_DF_ARRAY+=($AMOUNT_GENERATE_BUTTONS) (( AMOUNT_GENERATE_BUTTONS++ )) fi fi @@ -633,26 +635,35 @@ else for i in "${!PW_GAME_TIME[@]}" ; do for j in "${!PW_GAME_TIME[@]}" ; do if [[ ${PW_GAME_TIME[$i]} -gt ${PW_GAME_TIME[$j]} ]]; then - tmp=${PW_GAME_TIME[$i]} - tmp_new=${PW_ALL_DF_WITH_TIME[$i]} + tmp_0=${PW_GAME_TIME[$i]} + tmp_1=${PW_ALL_DF[$i]} + tmp_2=${PW_NAME_D_ICON[$i]} + tmp_4=${PW_ICON_PATH[$i]} + PW_GAME_TIME[$i]=${PW_GAME_TIME[$j]} - PW_ALL_DF_WITH_TIME[$i]=${PW_ALL_DF_WITH_TIME[$j]} - PW_GAME_TIME[$j]=$tmp - PW_ALL_DF_WITH_TIME[$j]=$tmp_new + PW_ALL_DF[$i]=${PW_ALL_DF[$j]} + PW_NAME_D_ICON[$i]=${PW_NAME_D_ICON[$j]} + PW_ICON_PATH[$i]=${PW_ICON_PATH[$j]} + + PW_GAME_TIME[$j]=$tmp_0 + PW_ALL_DF[$j]=$tmp_1 + PW_NAME_D_ICON[$j]=$tmp_2 + PW_ICON_PATH[$j]=$tmp_4 fi done done 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 PW_DESKTOP_FILES in "${PW_ALL_DF_WITH_TIME[@]}" "${PW_ALL_DF[@]}" ; do - if [[ -n ${PW_NAME_D_ICON} ]] ; then - PW_NAME_D_ICON_48="${PW_ICON_PATH%.png}_48" - PW_NAME_D_ICON_128="${PW_ICON_PATH%.png}" + for dp in "${PW_ALL_DF_ARRAY[@]}" ; do + PW_DESKTOP_FILES="${PW_ALL_DF[$dp]}" + if [[ -n ${PW_NAME_D_ICON[dp]} ]] ; then + PW_NAME_D_ICON_48="${PW_ICON_PATH[dp]%.png}_48" + PW_NAME_D_ICON_128="${PW_ICON_PATH[dp]%.png}" if check_flatpak ; then - PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON//flatpak run ru.linux_gaming.PortProton /} + PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[dp]//flatpak run ru.linux_gaming.PortProton /} else - PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON//"${PORT_SCRIPTS_PATH}/start.sh" /} + PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[dp]//env \"${PORT_SCRIPTS_PATH}\/start.sh\" /} fi PW_NAME_D_ICON_NEW="${PW_NAME_D_ICON_NEW//\"/}" resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_48//"${PORT_WINE_PATH}/data/img/"/}" "48" From baaede8fe4ca037020cab92f4835b2d788fc3bf1 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 13:05:17 +0500 Subject: [PATCH 10/28] Revert SKIP_GAME_TIME --- data_from_portwine/scripts/functions_helper | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 323ab50e..11abe1b2 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1325,13 +1325,19 @@ stop_portwine () { PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах while IFS= read -r line ; do if [[ $line =~ ^Time= ]] ; then + SKIP_GAME_TIME="1" TIME_CURRENT=${line//Time=/} TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) fi done < "$LAST_DESKTOP_FILE" IFS="$orig_IFS" - sed -i '/^Time=/d' "$LAST_DESKTOP_FILE" - echo "Time=$TIME_TOTAL" >> "$LAST_DESKTOP_FILE" + + if [[ $SKIP_GAME_TIME != 1 ]] ; then + echo "Time=$PW_TIME_IN_GAME" >> "$LAST_DESKTOP_FILE" + else + sed -i '/^Time=/d' "$LAST_DESKTOP_FILE" + echo "Time=$TIME_TOTAL" >> "$LAST_DESKTOP_FILE" + fi case "$1" in --restart) From e3079c77438f388bbce0c326cdc915f02dee8f5f Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 13:24:52 +0500 Subject: [PATCH 11/28] Fixes.. --- data_from_portwine/scripts/functions_helper | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 11abe1b2..f8842270 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1323,21 +1323,23 @@ stop_portwine () { debug_timer --end -s "PW_TIME_IN_GAME" #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) # в минутах PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах + + if [[ -z "${PORTPROTON_NAME}" ]] ; then + name_desktop="$(basename "$portwine_exe")" + else + name_desktop="${PORTPROTON_NAME}" + fi + while IFS= read -r line ; do if [[ $line =~ ^Time= ]] ; then - SKIP_GAME_TIME="1" TIME_CURRENT=${line//Time=/} TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) fi - done < "$LAST_DESKTOP_FILE" + done < "${PORT_WINE_PATH}/${name_desktop}.desktop" IFS="$orig_IFS" - if [[ $SKIP_GAME_TIME != 1 ]] ; then - echo "Time=$PW_TIME_IN_GAME" >> "$LAST_DESKTOP_FILE" - else - sed -i '/^Time=/d' "$LAST_DESKTOP_FILE" - echo "Time=$TIME_TOTAL" >> "$LAST_DESKTOP_FILE" - fi + sed -i '/^Time=/d' "${PORT_WINE_PATH}/${name_desktop}.desktop" + echo "Time=$TIME_TOTAL" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" case "$1" in --restart) @@ -5312,6 +5314,7 @@ portwine_create_shortcut () { echo "StartupNotify=true" echo "Path=${PORT_SCRIPTS_PATH}/" echo "Icon=${PORT_WINE_PATH}/data/img/${name_desktop_png}.png" + echo "Time=0" } >> "${PORT_WINE_PATH}/${name_desktop}.desktop" chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" @@ -5898,7 +5901,6 @@ button_click () { (( count++ )) done fi - export LAST_DESKTOP_FILE="$PW_YAD_SET" if check_flatpak then PW_EXEC_FROM_DESKTOP="$(grep Exec "$PW_YAD_SET" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')" else PW_EXEC_FROM_DESKTOP="$(grep Exec "$PW_YAD_SET" | head -n 1 | awk -F"=env " '{print $2}')" From 89df756124bcadcc49959f9e70a714485ad56a7a Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 19:56:48 +0500 Subject: [PATCH 12/28] Added function for detected .desktop files --- data_from_portwine/scripts/functions_helper | 43 ++++++++++++++------- data_from_portwine/scripts/start.sh | 4 +- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index f8842270..7be0f973 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1324,23 +1324,37 @@ stop_portwine () { #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) # в минутах PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах - if [[ -z "${PORTPROTON_NAME}" ]] ; then - name_desktop="$(basename "$portwine_exe")" - else - name_desktop="${PORTPROTON_NAME}" - fi - - while IFS= read -r line ; do - if [[ $line =~ ^Time= ]] ; then - TIME_CURRENT=${line//Time=/} - TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) + for desktop_file in "${PORT_WINE_PATH}"/* ; do + if [[ $desktop_file =~ .desktop ]] ; then + if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then + while IFS= read -r line ; do + if [[ $line =~ ^Exec= ]] ; then + if check_flatpak ; then + EXEC_DESKTOP=${line//Exec=flatpak run ru.linux_gaming.PortProton /} + else + EXEC_DESKTOP=${line//Exec=env \"${PORT_SCRIPTS_PATH}\/start.sh\" /} + fi + EXEC_DESKTOP_NEW="${EXEC_DESKTOP//\"/}" + fi + if [[ $line =~ ^Time= ]] ; then + WITH_TIME="1" + TIME_CURRENT=${line//Time=/} + TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) + fi + done < "$desktop_file" + if [[ $WITH_TIME != 1 ]] ; then + echo "Time=0" >> "$desktop_file" + fi + unset WITH_TIME + if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then + sed -i '/^Time=/d' "$desktop_file" + echo "Time=$TIME_TOTAL" >> "$desktop_file" + fi + fi fi - done < "${PORT_WINE_PATH}/${name_desktop}.desktop" + done IFS="$orig_IFS" - sed -i '/^Time=/d' "${PORT_WINE_PATH}/${name_desktop}.desktop" - echo "Time=$TIME_TOTAL" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" - case "$1" in --restart) restart_pp ;; @@ -5314,7 +5328,6 @@ portwine_create_shortcut () { echo "StartupNotify=true" echo "Path=${PORT_SCRIPTS_PATH}/" echo "Icon=${PORT_WINE_PATH}/data/img/${name_desktop_png}.png" - echo "Time=0" } >> "${PORT_WINE_PATH}/${name_desktop}.desktop" chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index e908c72c..90382dda 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -616,14 +616,14 @@ else [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" if [[ $line =~ ^Time= ]] ; then - PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//Time=/}" WITH_TIME="1" + PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//Time=/}" fi done < "$desktop_file" PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" if [[ $WITH_TIME != 1 ]] ; then echo "Time=0" >> "$desktop_file" - PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="0" + PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="9999999999999999999999" fi unset WITH_TIME PW_ALL_DF_ARRAY+=($AMOUNT_GENERATE_BUTTONS) From d9d30ddc4c0401e15ee5d21950d556cc69b8628c Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 20:06:00 +0500 Subject: [PATCH 13/28] Added comments --- data_from_portwine/scripts/functions_helper | 1 + data_from_portwine/scripts/start.sh | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 7be0f973..ebe0b382 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1324,6 +1324,7 @@ stop_portwine () { #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) # в минутах PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах + # Поиск нужного .desktop файла по $portwine_exe, чтобы внести изменения в него. for desktop_file in "${PORT_WINE_PATH}"/* ; do if [[ $desktop_file =~ .desktop ]] ; then if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 90382dda..01158c9f 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -607,7 +607,9 @@ else gui_userconf fi - debug_timer --start + debug_timer --start # дропнуть и debug_timer --end ниже тоже + + # Поиск .desktop файлов AMOUNT_GENERATE_BUTTONS="0" for desktop_file in "${PORT_WINE_PATH}"/* ; do if [[ $desktop_file =~ .desktop ]] ; then @@ -632,6 +634,7 @@ else fi done + # Переопределение массивов в зависимости от PW_GAME_TIME, от большего значения к меньшему. for i in "${!PW_GAME_TIME[@]}" ; do for j in "${!PW_GAME_TIME[@]}" ; do if [[ ${PW_GAME_TIME[$i]} -gt ${PW_GAME_TIME[$j]} ]]; then @@ -653,6 +656,7 @@ else done done + # Генерация .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_ALL_DF_ARRAY[@]}" ; do @@ -733,8 +737,9 @@ else --field=" ${translations[Regedit]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"${translations[Run wine regedit]}":"FBTN" '@bash -c "button_click --normal WINEREG"' 1> "${PW_TMPFS_PATH}/tmp_yad_form_vulkan" 2>/dev/null & if [[ $AI_SKIP != 1 ]] ; then - AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0" + # AI_TOP_GAMES используется для сортировки автоинсталлов (работает на эмуляторы тоже) AI_TOP_GAMES="PW_LGC PW_VKPLAY PW_EPIC PW_BATTLE_NET" + AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0" for ai_file in "$PORT_SCRIPTS_PATH"/pw_autoinstall/* ; do while IFS= read -r line ; do [[ $line =~ "##########" ]] && break From bd1d62bd88cb933e6696c5583f3513d5c309be89 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 5 Oct 2024 21:15:43 +0500 Subject: [PATCH 14/28] Update hack for new .desktop files --- data_from_portwine/scripts/functions_helper | 2 +- data_from_portwine/scripts/start.sh | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index ebe0b382..66f8b25b 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1321,7 +1321,7 @@ stop_portwine () { add_in_stop_portwine debug_timer --end -s "PW_TIME_IN_GAME" - #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) % 60 )) # в минутах + #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) )) # в минутах PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах # Поиск нужного .desktop файла по $portwine_exe, чтобы внести изменения в него. diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 01158c9f..94e558f0 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -623,12 +623,14 @@ else fi done < "$desktop_file" PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + # Чтобы новый ярлык показало первым при первом запуске, потом уже по времени if [[ $WITH_TIME != 1 ]] ; then echo "Time=0" >> "$desktop_file" - PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="9999999999999999999999" + PW_AMOUNT_NO_TIME+=($AMOUNT_GENERATE_BUTTONS) + else + PW_AMOUNT_WITH_TIME+=($AMOUNT_GENERATE_BUTTONS) fi unset WITH_TIME - PW_ALL_DF_ARRAY+=($AMOUNT_GENERATE_BUTTONS) (( AMOUNT_GENERATE_BUTTONS++ )) fi fi @@ -637,7 +639,7 @@ else # Переопределение массивов в зависимости от PW_GAME_TIME, от большего значения к меньшему. for i in "${!PW_GAME_TIME[@]}" ; do for j in "${!PW_GAME_TIME[@]}" ; do - if [[ ${PW_GAME_TIME[$i]} -gt ${PW_GAME_TIME[$j]} ]]; then + if [[ ${PW_GAME_TIME[$i]} -gt ${PW_GAME_TIME[$j]} ]] ; then tmp_0=${PW_GAME_TIME[$i]} tmp_1=${PW_ALL_DF[$i]} tmp_2=${PW_NAME_D_ICON[$i]} @@ -659,7 +661,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_ALL_DF_ARRAY[@]}" ; do + for dp in "${PW_AMOUNT_NO_TIME[@]}" "${PW_AMOUNT_WITH_TIME[@]}" ; do PW_DESKTOP_FILES="${PW_ALL_DF[$dp]}" if [[ -n ${PW_NAME_D_ICON[dp]} ]] ; then PW_NAME_D_ICON_48="${PW_ICON_PATH[dp]%.png}_48" From 91a220acad3724353d13883ea1d85ac5752f2108 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sun, 6 Oct 2024 06:40:20 +0500 Subject: [PATCH 15/28] Time= variable is commented out --- data_from_portwine/scripts/functions_helper | 10 +++++----- data_from_portwine/scripts/start.sh | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 66f8b25b..7d4095a6 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1337,19 +1337,19 @@ stop_portwine () { fi EXEC_DESKTOP_NEW="${EXEC_DESKTOP//\"/}" fi - if [[ $line =~ ^Time= ]] ; then + if [[ $line =~ ^#Time= ]] ; then WITH_TIME="1" - TIME_CURRENT=${line//Time=/} + TIME_CURRENT=${line//#Time=/} TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) fi done < "$desktop_file" if [[ $WITH_TIME != 1 ]] ; then - echo "Time=0" >> "$desktop_file" + echo "#Time=0" >> "$desktop_file" fi unset WITH_TIME if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then - sed -i '/^Time=/d' "$desktop_file" - echo "Time=$TIME_TOTAL" >> "$desktop_file" + sed -i '/^#Time=/d' "$desktop_file" + echo "#Time=$TIME_TOTAL" >> "$desktop_file" fi fi fi diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 94e558f0..ab2092b0 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -617,15 +617,15 @@ else while IFS= read -r line ; do [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" - if [[ $line =~ ^Time= ]] ; then + if [[ $line =~ ^#Time= ]] ; then WITH_TIME="1" - PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//Time=/}" + PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//#Time=/}" fi done < "$desktop_file" PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" # Чтобы новый ярлык показало первым при первом запуске, потом уже по времени if [[ $WITH_TIME != 1 ]] ; then - echo "Time=0" >> "$desktop_file" + echo "#Time=0" >> "$desktop_file" PW_AMOUNT_NO_TIME+=($AMOUNT_GENERATE_BUTTONS) else PW_AMOUNT_WITH_TIME+=($AMOUNT_GENERATE_BUTTONS) From e6c94c966b470e31d37f7a579d8f9bc065c40b80 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sun, 6 Oct 2024 06:50:58 +0500 Subject: [PATCH 16/28] Spellcheck fixes --- data_from_portwine/scripts/start.sh | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index ab2092b0..6b3be892 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -637,28 +637,29 @@ else done # Переопределение массивов в зависимости от PW_GAME_TIME, от большего значения к меньшему. + # 10 миллисекунд на 40 .desktop файлов, работает быстро for i in "${!PW_GAME_TIME[@]}" ; do for j in "${!PW_GAME_TIME[@]}" ; do - if [[ ${PW_GAME_TIME[$i]} -gt ${PW_GAME_TIME[$j]} ]] ; then + 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]} tmp_4=${PW_ICON_PATH[$i]} - PW_GAME_TIME[$i]=${PW_GAME_TIME[$j]} - PW_ALL_DF[$i]=${PW_ALL_DF[$j]} - PW_NAME_D_ICON[$i]=${PW_NAME_D_ICON[$j]} - PW_ICON_PATH[$i]=${PW_ICON_PATH[$j]} + PW_GAME_TIME[i]=${PW_GAME_TIME[$j]} + PW_ALL_DF[i]=${PW_ALL_DF[$j]} + PW_NAME_D_ICON[i]=${PW_NAME_D_ICON[$j]} + PW_ICON_PATH[i]=${PW_ICON_PATH[$j]} - PW_GAME_TIME[$j]=$tmp_0 - PW_ALL_DF[$j]=$tmp_1 - PW_NAME_D_ICON[$j]=$tmp_2 - PW_ICON_PATH[$j]=$tmp_4 + PW_GAME_TIME[j]=$tmp_0 + PW_ALL_DF[j]=$tmp_1 + PW_NAME_D_ICON[j]=$tmp_2 + PW_ICON_PATH[j]=$tmp_4 fi done done - # Генерация .desktop баттанов для меню + # Генерация .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 From 7fbfc75b25b77e7c495954dfd9640370855e7eb1 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sun, 6 Oct 2024 10:43:43 +0500 Subject: [PATCH 17/28] Fixed bug on native version PP --- data_from_portwine/scripts/functions_helper | 8 +++++--- .../scripts/pw_autoinstall/PW_STALCRAFT | 4 ++-- data_from_portwine/scripts/start.sh | 14 ++++++++++---- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 7d4095a6..5b2f7523 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1321,13 +1321,15 @@ stop_portwine () { add_in_stop_portwine debug_timer --end -s "PW_TIME_IN_GAME" - #PW_TIME_IN_GAME=$(( (PW_TIME_IN_GAME / 60000) )) # в минутах PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах + # В году 31536000 секунд. + # Bash у меня ещё работает с таким числом 999999999999999999999999999999999999999999999999 # Поиск нужного .desktop файла по $portwine_exe, чтобы внести изменения в него. for desktop_file in "${PORT_WINE_PATH}"/* ; do - if [[ $desktop_file =~ .desktop ]] ; then - if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then + desktop_file_new="${desktop_file//"${PORT_WINE_PATH}/"/}" + if [[ $desktop_file_new =~ .desktop ]] ; then + if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then while IFS= read -r line ; do if [[ $line =~ ^Exec= ]] ; then if check_flatpak ; then diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_STALCRAFT b/data_from_portwine/scripts/pw_autoinstall/PW_STALCRAFT index 155b3682..50426ed3 100755 --- a/data_from_portwine/scripts/pw_autoinstall/PW_STALCRAFT +++ b/data_from_portwine/scripts/pw_autoinstall/PW_STALCRAFT @@ -1,8 +1,8 @@ #!/usr/bin/env bash # Author: Castro-Fidel (linux-gaming.ru) # type: games -# name: Star Conflict -# image: starconflict +# name: STALCRAFT +# image: stalcraft # info_en: # info_ru: ######################################################################## diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 6b3be892..93d472f6 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -612,8 +612,9 @@ else # Поиск .desktop файлов AMOUNT_GENERATE_BUTTONS="0" for desktop_file in "${PORT_WINE_PATH}"/* ; do - if [[ $desktop_file =~ .desktop ]] ; then - if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then + desktop_file_new="${desktop_file//"${PORT_WINE_PATH}/"/}" + if [[ $desktop_file_new =~ .desktop ]] ; then + if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then while IFS= read -r line ; do [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" @@ -622,12 +623,17 @@ else PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]="${line//#Time=/}" fi done < "$desktop_file" - PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="${desktop_file//"${PORT_WINE_PATH}"\//}" + PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="$desktop_file_new" # Чтобы новый ярлык показало первым при первом запуске, потом уже по времени if [[ $WITH_TIME != 1 ]] ; then echo "#Time=0" >> "$desktop_file" PW_AMOUNT_NO_TIME+=($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) fi unset WITH_TIME @@ -636,7 +642,7 @@ else fi done - # Переопределение массивов в зависимости от PW_GAME_TIME, от большего значения к меньшему. + # Переопределение элементов в массивах в зависимости от PW_GAME_TIME, от большего значения к меньшему. # 10 миллисекунд на 40 .desktop файлов, работает быстро for i in "${!PW_GAME_TIME[@]}" ; do for j in "${!PW_GAME_TIME[@]}" ; do From 64dfaf808f31d40432a25a8faa855c60342bed49 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sun, 6 Oct 2024 20:44:58 +0500 Subject: [PATCH 18/28] new changes.. --- data_from_portwine/scripts/start.sh | 33 +++++++++++++++-------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 93d472f6..6bfd0b96 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -616,8 +616,16 @@ else if [[ $desktop_file_new =~ .desktop ]] ; then if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then while IFS= read -r line ; do - [[ $line =~ ^Exec= ]] && PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]="${line//Exec=/}" - [[ $line =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]="${line//Icon=/}" + if [[ $line =~ ^Exec= ]] ; then + if check_flatpak ; then + PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line//Exec=flatpak run ru.linux_gaming.PortProton /} + 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=/}" @@ -669,21 +677,14 @@ else 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 - PW_DESKTOP_FILES="${PW_ALL_DF[$dp]}" - if [[ -n ${PW_NAME_D_ICON[dp]} ]] ; then - PW_NAME_D_ICON_48="${PW_ICON_PATH[dp]%.png}_48" - PW_NAME_D_ICON_128="${PW_ICON_PATH[dp]%.png}" - if check_flatpak ; then - PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[dp]//flatpak run ru.linux_gaming.PortProton /} - else - PW_NAME_D_ICON_NEW=${PW_NAME_D_ICON[dp]//env \"${PORT_SCRIPTS_PATH}\/start.sh\" /} - fi - PW_NAME_D_ICON_NEW="${PW_NAME_D_ICON_NEW//\"/}" - resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_48//"${PORT_WINE_PATH}/data/img/"/}" "48" - resize_png "${PW_NAME_D_ICON_NEW}" "${PW_NAME_D_ICON_128//"${PORT_WINE_PATH}/data/img/"/}" "128" - fi + 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]//\"/}" + resize_png "$PW_NAME_D_ICON_NEW" "${PW_NAME_D_ICON_48//"${PORT_WINE_PATH}/data/img/"/}" "48" + resize_png "$PW_NAME_D_ICON_NEW" "${PW_NAME_D_ICON_128//"${PORT_WINE_PATH}/data/img/"/}" "128" - PW_DESKTOP_FILES_SHOW="${PW_DESKTOP_FILES}" + PW_DESKTOP_FILES="${PW_ALL_DF[$dp]}" + PW_DESKTOP_FILES_SHOW="$PW_DESKTOP_FILES" if [[ $PW_DESKTOP_FILES =~ [\(\)\!\$\%\&\`\'\"\>\<\\\|\;] ]] ; then PW_DESKTOP_FILES_SHOW_REGEX=(\! % \$ \& \<) PW_DESKTOP_FILES_REGEX=(\( \) \! \$ % \& \` \' \" \> \< \\ \| \;) From 3fa814b2392583399b53446acee53bcc0c9cc630 Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 05:39:24 +0500 Subject: [PATCH 19/28] Added search_desktop_file and seconds_to_time functions --- data_from_portwine/scripts/functions_helper | 113 +++++++++++++------- data_from_portwine/scripts/start.sh | 43 ++++---- 2 files changed, 97 insertions(+), 59 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 5b2f7523..c67060cf 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -774,7 +774,61 @@ debug_timer () { print_warning "It took $DIFF milliseconds" fi fi - return 0 +} + +search_desktop_file () { + # Поиск нужного .desktop файла по $portwine_exe, чтобы внести изменения в него. + for desktop_file in "${PORT_WINE_PATH}"/* ; do + if [[ $desktop_file =~ .desktop ]] ; then + if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then + while IFS= read -r line ; do + if [[ $line =~ ^Exec= ]] ; then + if check_flatpak ; then + EXEC_DESKTOP=${line//Exec=flatpak run ru.linux_gaming.PortProton /} + else + EXEC_DESKTOP=${line//Exec=env \"${PORT_SCRIPTS_PATH}\/start.sh\" /} + fi + EXEC_DESKTOP_NEW="${EXEC_DESKTOP//\"/}" + fi + + if [[ $line =~ ^#Time= ]] ; then + if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then + TIME_CURRENT=${line//#Time=/} + if [[ ! $TIME_CURRENT =~ [0-9]+ ]] ; then + TIME_CURRENT="0" + sed -i '/^#Time=/d' "$desktop_file" + echo "#Time=0" >> "$desktop_file" + fi + fi + fi + done < "$desktop_file" + 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 + fi + fi + done + IFS="$orig_IFS" +} + +seconds_to_time () { + [[ -z $1 ]] && return 1 + local seconds=$1 + + local minutes=$((seconds / 60)) + local hours=$((minutes / 60)) + local days=$((hours / 24)) + + local remaining_minutes=$((minutes % 60)) + local remaining_hours=$((hours % 24)) + + if [[ "$LANGUAGE" == ru ]] ; then + echo "\n$days дней, $remaining_hours часов и $remaining_minutes минут" + else + echo "\n$days days, $remaining_hours hours and $remaining_minutes minutes" + fi } combobox_fix () { @@ -1320,43 +1374,14 @@ stop_portwine () { pw_auto_create_shortcut add_in_stop_portwine + # То что новый трей ругается на debug_timer и search_desktop_file, так и должно быть. debug_timer --end -s "PW_TIME_IN_GAME" - PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах + # В году 31536000 секунд. # Bash у меня ещё работает с таким числом 999999999999999999999999999999999999999999999999 + PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах - # Поиск нужного .desktop файла по $portwine_exe, чтобы внести изменения в него. - for desktop_file in "${PORT_WINE_PATH}"/* ; do - desktop_file_new="${desktop_file//"${PORT_WINE_PATH}/"/}" - if [[ $desktop_file_new =~ .desktop ]] ; then - if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then - while IFS= read -r line ; do - if [[ $line =~ ^Exec= ]] ; then - if check_flatpak ; then - EXEC_DESKTOP=${line//Exec=flatpak run ru.linux_gaming.PortProton /} - else - EXEC_DESKTOP=${line//Exec=env \"${PORT_SCRIPTS_PATH}\/start.sh\" /} - fi - EXEC_DESKTOP_NEW="${EXEC_DESKTOP//\"/}" - fi - if [[ $line =~ ^#Time= ]] ; then - WITH_TIME="1" - TIME_CURRENT=${line//#Time=/} - TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) - fi - done < "$desktop_file" - if [[ $WITH_TIME != 1 ]] ; then - echo "#Time=0" >> "$desktop_file" - fi - unset WITH_TIME - if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then - sed -i '/^#Time=/d' "$desktop_file" - echo "#Time=$TIME_TOTAL" >> "$desktop_file" - fi - fi - fi - done - IFS="$orig_IFS" + search_desktop_file case "$1" in --restart) @@ -5152,11 +5177,20 @@ gui_userconf () { GPU_VAR="disabled" fi + if [[ -n "${DESKTOPS_WITH_TIME}" ]] \ + && [[ "${DESKTOPS_WITH_TIME}" != "disabled" ]] + then + DESKTOPS_WITH_TIME="${DESKTOPS_WITH_TIME}" + else + DESKTOPS_WITH_TIME="disabled" + fi + "${pw_yad}" --plug=$KEY_USERCONF_GUI --tabnum="2" --form --columns=1 --separator="%" --homogeneous-row \ - --gui-type-text="${PANED_GUI_TYPE_TEXT_DOWN}" --gui-type-layout="${PANED_GUI_TYPE_LAYOUT_DOWN}" \ - --field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix --disabled "${GPU_VAR}" "${GET_GPU_NAMES}")" \ - --field="${translations[Choice wine audio driver]}!${translations[Fixes sound popling if choice alsa]} :CB" "$(combobox_fix --disabled "${SOUND_DRIVER_VAR}" "alsa!oss!pulse")" \ - --field="${translations[Choice gui themes]}!${translations[Allows you to select a theme for PortProton]} :CB" "$(combobox_fix "${GUI_THEME}" "default!compact!classic")" \ + --gui-type-text="$PANED_GUI_TYPE_TEXT_DOWN" --gui-type-layout="$PANED_GUI_TYPE_LAYOUT_DOWN" \ + --field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix --disabled "$GPU_VAR" "$GET_GPU_NAMES")" \ + --field="${translations[Choice wine audio driver]}!${translations[Fixes sound popling if choice alsa]} :CB" "$(combobox_fix --disabled "$SOUND_DRIVER_VAR" "alsa!oss!pulse")" \ + --field="${translations[Choice gui themes]}!${translations[Allows you to select a theme for PortProton]} :CB" "$(combobox_fix "$GUI_THEME" "default!compact!classic")" \ + --field="${translations[Time display]}!${translations[Displays time spent in an application or game]} :CB" "$(combobox_fix "$DESKTOPS_WITH_TIME" "enabled!disabled")" \ 1> "${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" 2>/dev/null & "${pw_yad}" --key=$KEY_USERCONF_GUI --paned --sensitive \ @@ -5192,7 +5226,8 @@ gui_userconf () { PW_GPU_USE="${PW_ADD_SETTINGS_UC[0]}" PW_SOUND_DRIVER_USE="${PW_ADD_SETTINGS_UC[1]}" GUI_THEME="${PW_ADD_SETTINGS_UC[2]}" - edit_user_conf_from_gui PW_GPU_USE PW_SOUND_DRIVER_USE GUI_THEME + DESKTOPS_WITH_TIME="${PW_ADD_SETTINGS_UC[3]}" + edit_user_conf_from_gui PW_GPU_USE PW_SOUND_DRIVER_USE GUI_THEME DESKTOPS_WITH_TIME restart_pp ;; esac diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 6bfd0b96..7af73a27 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -464,14 +464,6 @@ case "${PW_VULKAN_USE}" in *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL!$SORT_VULKAN" ;; esac -if [[ -z "${PW_COMMENT_DB}" ]] ; then - if [[ -n "${PORTPROTON_NAME}" ]] ; then - PW_COMMENT_DB="${translations[Launching]} $(print_wrapped "${PORTPROTON_NAME}" "50")" - else - PW_COMMENT_DB="${translations[Launching]} $(print_wrapped "${PORTWINE_DB}" "50")" - fi -fi - if [[ $PW_WINE_USE == PROTON_LG ]] ; then PW_WINE_USE="${PW_PROTON_LG_VER}" PW_DEFAULT_WINE_USE="${PW_WINE_LG_VER}${DIST_ADD_TO_GUI}!GET-OTHER-WINE" @@ -505,6 +497,17 @@ if [[ -f "${portwine_exe}" ]] ; then PW_SHORTCUT="${translations[DELETE SHORTCUT]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Delete shortcut for select file...]}:98" fi + if [[ $DESKTOPS_WITH_TIME == enabled ]] ; then + search_desktop_file + fi + 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)" + else + PW_COMMENT_DB="${translations[Launching]} $(print_wrapped "${PORTWINE_DB}" "50")$(seconds_to_time $TIME_CURRENT)" + fi + fi + export KEY_START="$RANDOM" if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then "${pw_yad}" --plug=$KEY_START --tabnum=1 --form --separator=";" ${START_GUI_TYPE} \ @@ -583,18 +586,18 @@ 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 - [[ -n "$PW_YAD_SET" ]] && case "$PW_YAD_SET" in + case $PW_YAD_SET in 128) - if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then - unset PW_YAD_FORM_TAB - fi - unset portwine_exe KEY_START $(sed -n '/export/p' "${PORTWINE_DB_FILE}" | sed 's/\(export\|=.*\| \)//g') - print_info "Restarting..." - restart_pp - ;; + if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then + unset PW_YAD_FORM_TAB + fi + unset portwine_exe KEY_START $(sed -n '/export/p' "${PORTWINE_DB_FILE}" | sed 's/\(export\|=.*\| \)//g') + print_info "Restarting..." + restart_pp + ;; 1|252) - exit 0 - ;; + exit 0 + ;; esac pw_yad_set_form pw_yad_form_vulkan @@ -864,7 +867,7 @@ if [[ -f "${PORTWINE_DB_FILE}" ]] ; then edit_db_from_gui PW_VULKAN_USE PW_WINE_USE PW_PREFIX_NAME fi -[[ -n "$PW_YAD_SET" ]] && 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|\ @@ -894,7 +897,7 @@ fi ;; esac -[[ -n "$PW_YAD_SET" ]] && case "$PW_YAD_SET" in +case $PW_YAD_SET in 98) portwine_delete_shortcut ;; 100) portwine_create_shortcut ;; DEBUG|102) portwine_start_debug ;; From e8492d6f73c2198b2348c19bc4c98a0095565809 Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 05:46:03 +0500 Subject: [PATCH 20/28] Update locales --- data_from_portwine/locales/PortProton.pot | 73 +++------- .../locales/es/LC_MESSAGES/PortProton.po | 125 +++++++++--------- .../locales/ru/LC_MESSAGES/PortProton.po | 122 +++++++++-------- 3 files changed, 149 insertions(+), 171 deletions(-) diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot index 95af4327..7679b26f 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-09-24 13:23+0300\n" + "POT-Creation-Date: 2024-10-07 05:41+0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,9 +47,6 @@ msgstr "" msgid "Gallium Zink (OpenGL to Vulkan)" msgstr "" -msgid "Launching" -msgstr "" - msgid "CREATE SHORTCUT" msgstr "" @@ -62,6 +59,9 @@ msgstr "" msgid "Delete shortcut for select file..." msgstr "" +msgid "Launching" +msgstr "" + msgid "Base settings" msgstr "" @@ -194,49 +194,6 @@ msgstr "" msgid "Run wine regedit" msgstr "" -msgid "Emulator for Nintendo game consoles with high compatibility" -msgstr "" - -msgid "Multi-arcade emulator that allows you to play old arcade games" -msgstr "" - -msgid "Multi-platform frontend for emulators with extensive settings" -msgstr "" - -msgid "Emulator for the PlayStation Portable (PSP) game console" -msgstr "" - -msgid "Emulator for the Nintendo 3DS game console" -msgstr "" - -msgid "Emulator for the Wii U game console" -msgstr "" - -msgid "Emulator for the PlayStation 1 game console with high compatibility" -msgstr "" - -msgid "Emulator for the Nintendo 64 game console" -msgstr "" - -msgid "Emulator for the Game Boy Advance game console" -msgstr "" - -msgid "Emulator for the Sega Saturn game console" -msgstr "" - -msgid "Emulator for the Xbox 360 game console" -msgstr "" - -msgid "Emulator for the Nintendo Entertainment System (NES or Dendy) game " - "console" -msgstr "" - -msgid "Emulator for the Xbox game console" -msgstr "" - -msgid "Emulator for the Sega Dreamcast game console" -msgstr "" - msgid "AUTOINSTALLS" msgstr "" @@ -282,9 +239,6 @@ msgid "More than one DB file found for the application being launched." "next run.\\n" msgstr "" -msgid "UPDATING NOW" -msgstr "" - msgid "Update scripts:" msgstr "" @@ -294,6 +248,9 @@ msgstr "" msgid "REMIND ME LATER" msgstr "" +msgid "UPDATING NOW" +msgstr "" + msgid "EXIT" msgstr "" @@ -881,6 +838,9 @@ msgstr "" msgid "Display frame count" msgstr "" +msgid "Display frametime next to FPS text" +msgstr "" + msgid "Enable most of the toggleable parameters (currently excludes " "histogram)" msgstr "" @@ -985,9 +945,6 @@ msgstr "" msgid "Display used Vulkan driver (radv/amdgpu-pro/amdvlk)" msgstr "" -msgid "Display frametime next to FPS text" -msgstr "" - msgid "Show current Wine or Proton version in use" msgstr "" @@ -1407,6 +1364,12 @@ msgstr "" msgid "Allows you to select a theme for PortProton" msgstr "" +msgid "Time display" +msgstr "" + +msgid "Displays time spent in an application or game" +msgstr "" + msgid "GLOBAL SETTINGS (USER.CONF)" msgstr "" @@ -1573,8 +1536,8 @@ msgid "MIT License\n" "\n" "Permission is hereby granted, free of charge, to any person " "obtaining a copy\n" - "of this software and associated documentation files (the \"Software" - "\"), to deal\n" + "of this software and associated documentation files (the " + "\"Software\"), to deal\n" "in the Software without restriction, including without limitation " "the rights\n" "to use, copy, modify, merge, publish, distribute, sublicense, and/or " diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po index 75fce4f2..1a566e50 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-09-24 13:23+0300\n" +"POT-Creation-Date: 2024-10-07 05:31+0500\n" "PO-Revision-Date: 2024-09-19 23:35+0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -52,9 +52,6 @@ msgstr "Gallium Nine (DirectX 9 para MESA)" msgid "Gallium Zink (OpenGL to Vulkan)" msgstr "Gallium Zink (OpenGL a Vulkan)" -msgid "Launching" -msgstr "Lanzamiento" - msgid "CREATE SHORTCUT" msgstr "CREAR ACCESO DIRECTO" @@ -67,6 +64,9 @@ msgstr "ELIMINAR ACCESO DIRECTO" msgid "Delete shortcut for select file..." msgstr "Eliminar el acceso directo del archivo seleccionado..." +msgid "Launching" +msgstr "Lanzamiento" + msgid "Base settings" msgstr "Configuración básica" @@ -212,55 +212,6 @@ msgstr "Editor del Registro" msgid "Run wine regedit" msgstr "Ejecutar wine regedit" -msgid "Emulator for Nintendo game consoles with high compatibility" -msgstr "" -"Un emulador para consolas de juegos de Nintendo con alta compatibilidad" - -msgid "Multi-arcade emulator that allows you to play old arcade games" -msgstr "" -"Un emulador de múltiples arcade que te permite jugar juegos antiguos de " -"arcade" - -msgid "Multi-platform frontend for emulators with extensive settings" -msgstr "Un frontend multiplataforma para emuladores con ajustes extensos" - -msgid "Emulator for the PlayStation Portable (PSP) game console" -msgstr "Un emulador para la consola de juegos PlayStation Portable (PSP)" - -msgid "Emulator for the Nintendo 3DS game console" -msgstr "Un emulador para la consola de juegos Nintendo 3DS" - -msgid "Emulator for the Wii U game console" -msgstr "Un emulador para la consola de juegos Wii U" - -msgid "Emulator for the PlayStation 1 game console with high compatibility" -msgstr "" -"Un emulador para la consola de juegos PlayStation 1 con alta compatibilidad" - -msgid "Emulator for the Nintendo 64 game console" -msgstr "Un emulador para la consola de juegos Nintendo 64" - -msgid "Emulator for the Game Boy Advance game console" -msgstr "Un emulador para la consola de juegos Game Boy Advance" - -msgid "Emulator for the Sega Saturn game console" -msgstr "Un emulador para la consola de juegos Sega Saturn" - -msgid "Emulator for the Xbox 360 game console" -msgstr "Un emulador para la consola de juegos Xbox 360" - -msgid "" -"Emulator for the Nintendo Entertainment System (NES or Dendy) game console" -msgstr "" -"Un emulador para la consola de juegos Nintendo Entertainment System (NES o " -"Dendy)" - -msgid "Emulator for the Xbox game console" -msgstr "Un emulador para la consola de juegos Xbox" - -msgid "Emulator for the Sega Dreamcast game console" -msgstr "Un emulador para la consola de juegos Sega Dreamcast" - msgid "AUTOINSTALLS" msgstr "INSTALACIONES AUTOMÁTICAS" @@ -317,9 +268,6 @@ msgstr "" "está iniciando. Selecciona el que se requiera, o elimina el archivo de base " "de datos adicional antes del próximo inicio" -msgid "UPDATING NOW" -msgstr "ACTUALIZANDO AHORA" - msgid "Update scripts:" msgstr "Actualizar scripts:" @@ -329,6 +277,9 @@ msgstr "NO SOCIO" msgid "REMIND ME LATER" msgstr "VUELVA MÁS TARDE" +msgid "UPDATING NOW" +msgstr "ACTUALIZANDO AHORA" + msgid "EXIT" msgstr "SALIR" @@ -1085,6 +1036,9 @@ msgstr "" msgid "Display frame count" msgstr "Mostrar recuento de cuadros" +msgid "Display frametime next to FPS text" +msgstr "Mostrar tiempo de cuadro junto al texto de FPS" + msgid "Enable most of the toggleable parameters (currently excludes histogram)" msgstr "" "Activar la mayoría de los parámetros conmutables (actualmente excluye el " @@ -1204,9 +1158,6 @@ msgstr "Mostrar el uso de VRAM del sistema" msgid "Display used Vulkan driver (radv/amdgpu-pro/amdvlk)" msgstr "Mostrar el controlador Vulkan utilizado (radv/amdgpu-pro/amdvlk)" -msgid "Display frametime next to FPS text" -msgstr "Mostrar tiempo de cuadro junto al texto de FPS" - msgid "Show current Wine or Proton version in use" msgstr "Mostrar la versión actual de Wine o Proton en uso" @@ -1847,6 +1798,12 @@ msgstr "Temas de interfaz gráfica de usuario elegidos" msgid "Allows you to select a theme for PortProton" msgstr "Le permite seleccionar un tema para PortProton" +msgid "Time display" +msgstr "" + +msgid "Displays time spent in an application or game" +msgstr "" + #, fuzzy msgid "GLOBAL SETTINGS (USER.CONF)" msgstr "AJUSTES USUARIO.CONF" @@ -2119,6 +2076,56 @@ msgstr "" msgid "THIRD PARTY LIBRARIES" msgstr "" +#~ msgid "Emulator for Nintendo game consoles with high compatibility" +#~ msgstr "" +#~ "Un emulador para consolas de juegos de Nintendo con alta compatibilidad" + +#~ msgid "Multi-arcade emulator that allows you to play old arcade games" +#~ msgstr "" +#~ "Un emulador de múltiples arcade que te permite jugar juegos antiguos de " +#~ "arcade" + +#~ msgid "Multi-platform frontend for emulators with extensive settings" +#~ msgstr "Un frontend multiplataforma para emuladores con ajustes extensos" + +#~ msgid "Emulator for the PlayStation Portable (PSP) game console" +#~ msgstr "Un emulador para la consola de juegos PlayStation Portable (PSP)" + +#~ msgid "Emulator for the Nintendo 3DS game console" +#~ msgstr "Un emulador para la consola de juegos Nintendo 3DS" + +#~ msgid "Emulator for the Wii U game console" +#~ msgstr "Un emulador para la consola de juegos Wii U" + +#~ msgid "Emulator for the PlayStation 1 game console with high compatibility" +#~ msgstr "" +#~ "Un emulador para la consola de juegos PlayStation 1 con alta " +#~ "compatibilidad" + +#~ msgid "Emulator for the Nintendo 64 game console" +#~ msgstr "Un emulador para la consola de juegos Nintendo 64" + +#~ msgid "Emulator for the Game Boy Advance game console" +#~ msgstr "Un emulador para la consola de juegos Game Boy Advance" + +#~ msgid "Emulator for the Sega Saturn game console" +#~ msgstr "Un emulador para la consola de juegos Sega Saturn" + +#~ msgid "Emulator for the Xbox 360 game console" +#~ msgstr "Un emulador para la consola de juegos Xbox 360" + +#~ msgid "" +#~ "Emulator for the Nintendo Entertainment System (NES or Dendy) game console" +#~ msgstr "" +#~ "Un emulador para la consola de juegos Nintendo Entertainment System (NES " +#~ "o Dendy)" + +#~ msgid "Emulator for the Xbox game console" +#~ msgstr "Un emulador para la consola de juegos Xbox" + +#~ msgid "Emulator for the Sega Dreamcast game console" +#~ msgstr "Un emulador para la consola de juegos Sega Dreamcast" + #, fuzzy #~ msgid "scripts" #~ msgstr "Actualizar scripts:" diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po index 3f0d9288..4c3bc7a4 100644 --- a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po +++ b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-24 13:23+0300\n" -"PO-Revision-Date: 2024-09-19 23:32+0500\n" +"POT-Creation-Date: 2024-10-07 05:31+0500\n" +"PO-Revision-Date: 2024-10-07 05:41+0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4.4\n" msgid "" @@ -52,9 +52,6 @@ msgstr "Gallium Nine (поддержка DirectX 9 для MESA)" msgid "Gallium Zink (OpenGL to Vulkan)" msgstr "Gallium Zink (трансляция OpenGL в Vulkan)" -msgid "Launching" -msgstr "Запуск" - msgid "CREATE SHORTCUT" msgstr "СОЗДАТЬ ЯРЛЫК" @@ -67,6 +64,9 @@ msgstr "УДАЛИТЬ ЯРЛЫК" msgid "Delete shortcut for select file..." msgstr "Удалить ярлык для выбранного файла..." +msgid "Launching" +msgstr "Запуск" + msgid "Base settings" msgstr "Основные настройки" @@ -214,49 +214,6 @@ msgstr "Редактор реестра" msgid "Run wine regedit" msgstr "Запустить редактор реестра Wine" -msgid "Emulator for Nintendo game consoles with high compatibility" -msgstr "Эмулятор игровых консолей Nintendo с высокой совместимостью" - -msgid "Multi-arcade emulator that allows you to play old arcade games" -msgstr "Мультиаркадный эмулятор, позволяющий играть в старые аркадные игры" - -msgid "Multi-platform frontend for emulators with extensive settings" -msgstr "Мультиплатформенный интерфейс для эмуляторов с обширными настройками" - -msgid "Emulator for the PlayStation Portable (PSP) game console" -msgstr "Эмулятор игровой консоли PlayStation Portable (PSP)" - -msgid "Emulator for the Nintendo 3DS game console" -msgstr "Эмулятор игровой консоли Nintendo 3DS" - -msgid "Emulator for the Wii U game console" -msgstr "Эмулятор игровой консоли Wii U" - -msgid "Emulator for the PlayStation 1 game console with high compatibility" -msgstr "Эмулятор игровой консоли PlayStation 1 с высокой совместимостью" - -msgid "Emulator for the Nintendo 64 game console" -msgstr "Эмулятор игровой консоли Nintendo 64" - -msgid "Emulator for the Game Boy Advance game console" -msgstr "Эмулятор игровой консоли Game Boy Advance" - -msgid "Emulator for the Sega Saturn game console" -msgstr "Эмулятор игровой консоли Sega Saturn" - -msgid "Emulator for the Xbox 360 game console" -msgstr "Эмулятор игровой консоли Xbox 360" - -msgid "" -"Emulator for the Nintendo Entertainment System (NES or Dendy) game console" -msgstr "Эмулятор игровой консоли Nintendo Entertainment System (NES или Dendy)" - -msgid "Emulator for the Xbox game console" -msgstr "Эмулятор игровой консоли Xbox" - -msgid "Emulator for the Sega Dreamcast game console" -msgstr "Эмулятор игровой консоли Sega Dreamcast" - msgid "AUTOINSTALLS" msgstr "АВТОУСТАНОВКА" @@ -312,10 +269,6 @@ msgstr "" "ppdb.\\nВыберите нужный или удалите лишний файл .ppdb перед следующим " "запуском\\n" -# изменить -msgid "UPDATING NOW" -msgstr "ОБНОВИТЬ СЕЙЧАС" - msgid "Update scripts:" msgstr "Обновление скриптов:" @@ -325,6 +278,10 @@ msgstr "НЕ НАПОМИНАТЬ" msgid "REMIND ME LATER" msgstr "НАПОМНИТЬ ПОЗЖЕ" +# изменить +msgid "UPDATING NOW" +msgstr "ОБНОВИТЬ СЕЙЧАС" + msgid "EXIT" msgstr "ВЫХОД" @@ -1090,6 +1047,9 @@ msgstr "" msgid "Display frame count" msgstr "Отображение количества кадров" +msgid "Display frametime next to FPS text" +msgstr "Отображение времени кадра рядом с FPS" + msgid "Enable most of the toggleable parameters (currently excludes histogram)" msgstr "" "Включить большинство переключаемых параметров (в настоящее время исключает " @@ -1213,9 +1173,6 @@ msgstr "Показать использование VRAM" msgid "Display used Vulkan driver (radv/amdgpu-pro/amdvlk)" msgstr "Показать используемый драйвер Vulkan (radv/amdgpu-pro/amdvlk)" -msgid "Display frametime next to FPS text" -msgstr "Отображение времени кадра рядом с FPS" - msgid "Show current Wine or Proton version in use" msgstr "Показать текущую используемую версию Wine или Proton" @@ -1815,6 +1772,12 @@ msgstr "Выбор графической темы" msgid "Allows you to select a theme for PortProton" msgstr "Позволяет выбрать тему для PortProton" +msgid "Time display" +msgstr "Отображение времени" + +msgid "Displays time spent in an application or game" +msgstr "Отображает общее время проведённое в приложении или игре" + #, fuzzy msgid "GLOBAL SETTINGS (USER.CONF)" msgstr "ГЛОБАЛЬНЫЕ НАСТРОЙКИ (USER.CONF)" @@ -2146,6 +2109,51 @@ msgstr "ПРИСОЕДЕНИТЬСЯ" msgid "THIRD PARTY LIBRARIES" msgstr "БИБЛИОТЕКИ" +#~ msgid "Emulator for Nintendo game consoles with high compatibility" +#~ msgstr "Эмулятор игровых консолей Nintendo с высокой совместимостью" + +#~ msgid "Multi-arcade emulator that allows you to play old arcade games" +#~ msgstr "Мультиаркадный эмулятор, позволяющий играть в старые аркадные игры" + +#~ msgid "Multi-platform frontend for emulators with extensive settings" +#~ msgstr "" +#~ "Мультиплатформенный интерфейс для эмуляторов с обширными настройками" + +#~ msgid "Emulator for the PlayStation Portable (PSP) game console" +#~ msgstr "Эмулятор игровой консоли PlayStation Portable (PSP)" + +#~ msgid "Emulator for the Nintendo 3DS game console" +#~ msgstr "Эмулятор игровой консоли Nintendo 3DS" + +#~ msgid "Emulator for the Wii U game console" +#~ msgstr "Эмулятор игровой консоли Wii U" + +#~ msgid "Emulator for the PlayStation 1 game console with high compatibility" +#~ msgstr "Эмулятор игровой консоли PlayStation 1 с высокой совместимостью" + +#~ msgid "Emulator for the Nintendo 64 game console" +#~ msgstr "Эмулятор игровой консоли Nintendo 64" + +#~ msgid "Emulator for the Game Boy Advance game console" +#~ msgstr "Эмулятор игровой консоли Game Boy Advance" + +#~ msgid "Emulator for the Sega Saturn game console" +#~ msgstr "Эмулятор игровой консоли Sega Saturn" + +#~ msgid "Emulator for the Xbox 360 game console" +#~ msgstr "Эмулятор игровой консоли Xbox 360" + +#~ msgid "" +#~ "Emulator for the Nintendo Entertainment System (NES or Dendy) game console" +#~ msgstr "" +#~ "Эмулятор игровой консоли Nintendo Entertainment System (NES или Dendy)" + +#~ msgid "Emulator for the Xbox game console" +#~ msgstr "Эмулятор игровой консоли Xbox" + +#~ msgid "Emulator for the Sega Dreamcast game console" +#~ msgstr "Эмулятор игровой консоли Sega Dreamcast" + #~ msgid "scripts" #~ msgstr "версия" From 0b963639b735b5849b613f0aa7be1db111eb12e6 Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 07:20:05 +0500 Subject: [PATCH 21/28] Update display time function --- data_from_portwine/locales/PortProton.pot | 26 ++++++++++++- .../locales/es/LC_MESSAGES/PortProton.po | 26 ++++++++++++- .../locales/ru/LC_MESSAGES/PortProton.po | 28 +++++++++++++- data_from_portwine/scripts/functions_helper | 38 +++++++++++++++++-- data_from_portwine/scripts/start.sh | 2 + 5 files changed, 112 insertions(+), 8 deletions(-) diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot index 7679b26f..ab6490ff 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 05:41+0500\n" + "POT-Creation-Date: 2024-10-07 07:15+0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -224,6 +224,30 @@ msgstr "" msgid "Downloading" msgstr "" +msgid "day" +msgstr "" + +msgid "days" +msgstr "" + +msgid "hour" +msgstr "" + +msgid "and" +msgstr "" + +msgid "hours" +msgstr "" + +msgid "minute" +msgstr "" + +msgid "minutes" +msgstr "" + +msgid "Time spent" +msgstr "" + msgid "Do you really want to reinstall PortProton?\\nFor this, an internet " "connection will be required." msgstr "" diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po index 1a566e50..4c4fbfaf 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 05:31+0500\n" +"POT-Creation-Date: 2024-10-07 07:15+0500\n" "PO-Revision-Date: 2024-09-19 23:35+0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -247,6 +247,30 @@ msgstr "" msgid "Downloading" msgstr "Descargando" +msgid "day" +msgstr "" + +msgid "days" +msgstr "" + +msgid "hour" +msgstr "" + +msgid "and" +msgstr "" + +msgid "hours" +msgstr "" + +msgid "minute" +msgstr "" + +msgid "minutes" +msgstr "" + +msgid "Time spent" +msgstr "" + msgid "" "Do you really want to reinstall PortProton?\\nFor this, an internet " "connection will be required." diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po index 4c3bc7a4..09ac0ae7 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 05:31+0500\n" -"PO-Revision-Date: 2024-10-07 05:41+0500\n" +"POT-Creation-Date: 2024-10-07 07:15+0500\n" +"PO-Revision-Date: 2024-10-07 07:16+0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" @@ -248,6 +248,30 @@ msgstr "" msgid "Downloading" msgstr "Загружается" +msgid "day" +msgstr "день" + +msgid "days" +msgstr "дней" + +msgid "hour" +msgstr "час" + +msgid "and" +msgstr "и" + +msgid "hours" +msgstr "часов" + +msgid "minute" +msgstr "минута" + +msgid "minutes" +msgstr "минут" + +msgid "Time spent" +msgstr "Проведено времени" + msgid "" "Do you really want to reinstall PortProton?\\nFor this, an internet " "connection will be required." diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index c67060cf..b3bf2783 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -820,15 +820,45 @@ seconds_to_time () { local minutes=$((seconds / 60)) local hours=$((minutes / 60)) local days=$((hours / 24)) - local remaining_minutes=$((minutes % 60)) local remaining_hours=$((hours % 24)) - if [[ "$LANGUAGE" == ru ]] ; then - echo "\n$days дней, $remaining_hours часов и $remaining_minutes минут" + if [[ $days =~ ^0$ ]] ; then + local remaining_days= + elif [[ $days =~ ^1$ ]] ; then + local remaining_days="$days ${translations[day]}, " + elif [[ $days =~ ^([2-9]1|[1-9][0-9]+1)$ ]] && [[ $LANGUAGE = ru ]] ; then + local remaining_days="$days ${translations[day]}, " + elif [[ $days =~ ^(2|3|4|[2-9]2|[2-9]3|[2-9]4|[1-9][0-9]+2|[1-9][0-9]+3|[1-9][0-9]+4)$ ]] \ + && [[ $LANGUAGE = ru ]] ; then + local remaining_days="$days дня, " else - echo "\n$days days, $remaining_hours hours and $remaining_minutes minutes" + local remaining_days="$days ${translations[days]}, " fi + + if [[ $remaining_hours =~ ^0$ ]] ; then + local remaining_hours= + elif [[ $remaining_hours =~ ^1$ ]] ; then + local remaining_hours="$hours ${translations[hour]} ${translations[and]} " + elif [[ $remaining_hours =~ ^(2|3|4|22|23|24)$ ]] && [[ $LANGUAGE = ru ]] ; then + local remaining_hours="$hours часа ${translations[and]} " + elif [[ $remaining_hours =~ ^21$ ]] && [[ $LANGUAGE = ru ]] ; then + local remaining_hours="$hours час ${translations[and]} " + else + local remaining_hours="$hours ${translations[hours]} ${translations[and]} " + fi + + if [[ $remaining_minutes =~ ^1$ ]] ; then + local remaining_minutes="$remaining_minutes ${translations[minute]}" + elif [[ $remaining_minutes =~ ^[2-5]1$ ]] && [[ $LANGUAGE = ru ]] ; then + local remaining_minutes="$remaining_minutes ${translations[minute]}" + elif [[ $remaining_minutes =~ ^(2|3|4|[2-5]2|[2-5]3|[2-5]4)$ ]] && [[ $LANGUAGE = ru ]] ; then + local remaining_minutes="$remaining_minutes минуты" + else + local remaining_minutes="$remaining_minutes ${translations[minutes]}" + fi + + echo "\n${translations[Time spent]}: $remaining_days$remaining_hours$remaining_minutes" } combobox_fix () { diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 7af73a27..6110b13b 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -506,6 +506,8 @@ if [[ -f "${portwine_exe}" ]] ; then else 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)" fi export KEY_START="$RANDOM" From 8eb41a0118d749ae5e6c30a32020f4d46dc1630b Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 07:43:13 +0500 Subject: [PATCH 22/28] Fixes bugs .. --- data_from_portwine/scripts/functions_helper | 87 ++++++++++++--------- data_from_portwine/scripts/start.sh | 9 +-- 2 files changed, 51 insertions(+), 45 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index b3bf2783..bd22e569 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -779,8 +779,9 @@ debug_timer () { search_desktop_file () { # Поиск нужного .desktop файла по $portwine_exe, чтобы внести изменения в него. for desktop_file in "${PORT_WINE_PATH}"/* ; do - if [[ $desktop_file =~ .desktop ]] ; then - if [[ ! $desktop_file =~ (/PortProton|/readme) ]] ; then + desktop_file_new="${desktop_file//"${PORT_WINE_PATH}/"/}" + if [[ $desktop_file_new =~ .desktop ]] ; then + if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then while IFS= read -r line ; do if [[ $line =~ ^Exec= ]] ; then if check_flatpak ; then @@ -794,18 +795,20 @@ search_desktop_file () { if [[ $line =~ ^#Time= ]] ; then if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then TIME_CURRENT=${line//#Time=/} - if [[ ! $TIME_CURRENT =~ [0-9]+ ]] ; then - TIME_CURRENT="0" - sed -i '/^#Time=/d' "$desktop_file" - echo "#Time=0" >> "$desktop_file" - fi fi fi done < "$desktop_file" - 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" + if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then + if [[ ! $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 fi fi fi @@ -814,51 +817,57 @@ search_desktop_file () { } seconds_to_time () { - [[ -z $1 ]] && return 1 + [[ -z $1 ]] && return 0 local seconds=$1 + # Calculate days + local days=$((seconds / (60 * 60 * 24))) + local seconds=$((seconds % (60 * 60 * 24))) + + # Calculate hours + local hours=$((seconds / (60 * 60))) + local seconds=$((seconds % (60 * 60))) + + # Calculate minutes local minutes=$((seconds / 60)) - local hours=$((minutes / 60)) - local days=$((hours / 24)) - local remaining_minutes=$((minutes % 60)) - local remaining_hours=$((hours % 24)) + local seconds=$((seconds % 60)) if [[ $days =~ ^0$ ]] ; then - local remaining_days= + local days= elif [[ $days =~ ^1$ ]] ; then - local remaining_days="$days ${translations[day]}, " + local days="$days ${translations[day]}, " elif [[ $days =~ ^([2-9]1|[1-9][0-9]+1)$ ]] && [[ $LANGUAGE = ru ]] ; then - local remaining_days="$days ${translations[day]}, " - elif [[ $days =~ ^(2|3|4|[2-9]2|[2-9]3|[2-9]4|[1-9][0-9]+2|[1-9][0-9]+3|[1-9][0-9]+4)$ ]] \ + local days="$days ${translations[day]}, " + elif [[ $days =~ ^([2-4]|[2-9][2-4]|[1-9][0-9]+[2-4])$ ]] \ && [[ $LANGUAGE = ru ]] ; then - local remaining_days="$days дня, " + local days="$days дня, " else - local remaining_days="$days ${translations[days]}, " + local days="$days ${translations[days]}, " fi - if [[ $remaining_hours =~ ^0$ ]] ; then - local remaining_hours= - elif [[ $remaining_hours =~ ^1$ ]] ; then - local remaining_hours="$hours ${translations[hour]} ${translations[and]} " - elif [[ $remaining_hours =~ ^(2|3|4|22|23|24)$ ]] && [[ $LANGUAGE = ru ]] ; then - local remaining_hours="$hours часа ${translations[and]} " - elif [[ $remaining_hours =~ ^21$ ]] && [[ $LANGUAGE = ru ]] ; then - local remaining_hours="$hours час ${translations[and]} " + if [[ $hours =~ ^0$ ]] ; then + local hours= + elif [[ $hours =~ ^1$ ]] ; then + local hours="$hours ${translations[hour]} ${translations[and]} " + elif [[ $hours =~ ^([2-4]|2[2-4])$ ]] && [[ $LANGUAGE = ru ]] ; then + local hours="$hours часа ${translations[and]} " + elif [[ $hours =~ ^21$ ]] && [[ $LANGUAGE = ru ]] ; then + local hours="$hours ${translations[hour]} ${translations[and]} " else - local remaining_hours="$hours ${translations[hours]} ${translations[and]} " + local hours="$hours ${translations[hours]} ${translations[and]} " fi - if [[ $remaining_minutes =~ ^1$ ]] ; then - local remaining_minutes="$remaining_minutes ${translations[minute]}" - elif [[ $remaining_minutes =~ ^[2-5]1$ ]] && [[ $LANGUAGE = ru ]] ; then - local remaining_minutes="$remaining_minutes ${translations[minute]}" - elif [[ $remaining_minutes =~ ^(2|3|4|[2-5]2|[2-5]3|[2-5]4)$ ]] && [[ $LANGUAGE = ru ]] ; then - local remaining_minutes="$remaining_minutes минуты" + if [[ $minutes =~ ^1$ ]] ; then + local minutes="$minutes ${translations[minute]}" + elif [[ $minutes =~ ^[2-5]1$ ]] && [[ $LANGUAGE = ru ]] ; then + local minutes="$minutes ${translations[minute]}" + elif [[ $minutes =~ ^([2-4]|[2-5][2-4])$ ]] && [[ $LANGUAGE = ru ]] ; then + local minutes="$minutes минуты" else - local remaining_minutes="$remaining_minutes ${translations[minutes]}" + local minutes="$minutes ${translations[minutes]}" fi - echo "\n${translations[Time spent]}: $remaining_days$remaining_hours$remaining_minutes" + echo -e "\n${translations[Time spent]}: $days$hours$minutes" } combobox_fix () { diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 6110b13b..2d3fa0c4 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -502,12 +502,12 @@ if [[ -f "${portwine_exe}" ]] ; then fi 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)" + PW_COMMENT_DB="$PW_COMMENT_DB$(seconds_to_time "$TIME_CURRENT")" fi export KEY_START="$RANDOM" @@ -612,8 +612,6 @@ else gui_userconf fi - debug_timer --start # дропнуть и debug_timer --end ниже тоже - # Поиск .desktop файлов AMOUNT_GENERATE_BUTTONS="0" for desktop_file in "${PORT_WINE_PATH}"/* ; do @@ -806,7 +804,6 @@ else export AI_SKIP="1" fi - debug_timer --end IFS="%" "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[1]}" --form --columns="$MAIN_GUI_ROWS_EMULS" --align-buttons --scroll --homogeneous-column \ From ef9161c13a8a68d63f861855ce2cc256f1b1d3aa Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 11:16:31 +0500 Subject: [PATCH 23/28] Added if minutes =~ 0 --- data_from_portwine/locales/PortProton.pot | 5 +++- .../locales/es/LC_MESSAGES/PortProton.po | 5 +++- .../locales/ru/LC_MESSAGES/PortProton.po | 7 ++++-- data_from_portwine/scripts/functions_helper | 23 +++++++++++++------ 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot index ab6490ff..c5d56999 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 07:15+0500\n" + "POT-Creation-Date: 2024-10-07 11:18+0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -239,6 +239,9 @@ msgstr "" msgid "hours" msgstr "" +msgid "not known yet" +msgstr "" + msgid "minute" msgstr "" diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po index 4c4fbfaf..c8691e73 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 07:15+0500\n" +"POT-Creation-Date: 2024-10-07 10:51+0500\n" "PO-Revision-Date: 2024-09-19 23:35+0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -262,6 +262,9 @@ msgstr "" msgid "hours" msgstr "" +msgid "not known yet" +msgstr "" + msgid "minute" msgstr "" diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po index 09ac0ae7..99087bf0 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 07:15+0500\n" -"PO-Revision-Date: 2024-10-07 07:16+0500\n" +"POT-Creation-Date: 2024-10-07 10:51+0500\n" +"PO-Revision-Date: 2024-10-07 11:18+0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" @@ -263,6 +263,9 @@ msgstr "и" msgid "hours" msgstr "часов" +msgid "not known yet" +msgstr "пока неизвестно" + msgid "minute" msgstr "минута" diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index bd22e569..5c52a536 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -836,10 +836,10 @@ seconds_to_time () { local days= elif [[ $days =~ ^1$ ]] ; then local days="$days ${translations[day]}, " - elif [[ $days =~ ^([2-9]1|[1-9][0-9]+1)$ ]] && [[ $LANGUAGE = ru ]] ; then + 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 + && [[ $LANGUAGE == ru ]] ; then local days="$days дня, " else local days="$days ${translations[days]}, " @@ -849,19 +849,28 @@ seconds_to_time () { local hours= elif [[ $hours =~ ^1$ ]] ; then local hours="$hours ${translations[hour]} ${translations[and]} " - elif [[ $hours =~ ^([2-4]|2[2-4])$ ]] && [[ $LANGUAGE = ru ]] ; then + elif [[ $hours =~ ^([2-4]|2[2-4])$ ]] && [[ $LANGUAGE == ru ]] ; then local hours="$hours часа ${translations[and]} " - elif [[ $hours =~ ^21$ ]] && [[ $LANGUAGE = ru ]] ; then + elif [[ $hours =~ ^21$ ]] && [[ $LANGUAGE == ru ]] ; then local hours="$hours ${translations[hour]} ${translations[and]} " else local hours="$hours ${translations[hours]} ${translations[and]} " fi - if [[ $minutes =~ ^1$ ]] ; then + if [[ $minutes =~ ^0$ ]] ; then + local hours=${hours//" ${translations[and]} "/} + local minutes= + if [[ $days == "" ]] || [[ $hours == "" ]] ; then + local days=${days//","/} + fi + if [[ $days == "" ]] && [[ $hours == "" ]] ; then + local minutes="${translations[not known yet]}" + fi + elif [[ $minutes =~ ^1$ ]] ; then local minutes="$minutes ${translations[minute]}" - elif [[ $minutes =~ ^[2-5]1$ ]] && [[ $LANGUAGE = ru ]] ; then + elif [[ $minutes =~ ^[2-5]1$ ]] && [[ $LANGUAGE == ru ]] ; then local minutes="$minutes ${translations[minute]}" - elif [[ $minutes =~ ^([2-4]|[2-5][2-4])$ ]] && [[ $LANGUAGE = ru ]] ; then + elif [[ $minutes =~ ^([2-4]|[2-5][2-4])$ ]] && [[ $LANGUAGE == ru ]] ; then local minutes="$minutes минуты" else local minutes="$minutes ${translations[minutes]}" From f7a5e591b0172dd31941ab6658d531d8475640ea Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 15:59:05 +0500 Subject: [PATCH 24/28] Added SORT_WITH_TIME and fixes spellcheck --- data_from_portwine/locales/PortProton.pot | 9 +++- .../locales/es/LC_MESSAGES/PortProton.po | 10 ++++- .../locales/ru/LC_MESSAGES/PortProton.po | 14 +++++- data_from_portwine/scripts/functions_helper | 41 +++++++++++------ data_from_portwine/scripts/start.sh | 44 +++++++++++-------- 5 files changed, 82 insertions(+), 36 deletions(-) diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot index c5d56999..950a7d59 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 11:18+0500\n" + "POT-Creation-Date: 2024-10-07 15:49+0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1397,6 +1397,13 @@ msgstr "" msgid "Displays time spent in an application or game" msgstr "" +msgid "Sort shortcuts by time" +msgstr "" + +msgid "This setting sorts the shortcuts in the main menu depending on the " + "time spent in the application or game" +msgstr "" + msgid "GLOBAL SETTINGS (USER.CONF)" msgstr "" diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po index c8691e73..3a0c3860 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 10:51+0500\n" +"POT-Creation-Date: 2024-10-07 15:49+0500\n" "PO-Revision-Date: 2024-09-19 23:35+0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -1831,6 +1831,14 @@ msgstr "" msgid "Displays time spent in an application or game" msgstr "" +msgid "Sort shortcuts by time" +msgstr "" + +msgid "" +"This setting sorts the shortcuts in the main menu depending on the time " +"spent in the application or game" +msgstr "" + #, fuzzy msgid "GLOBAL SETTINGS (USER.CONF)" msgstr "AJUSTES USUARIO.CONF" diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po index 99087bf0..6dac269d 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 10:51+0500\n" -"PO-Revision-Date: 2024-10-07 11:18+0500\n" +"POT-Creation-Date: 2024-10-07 15:49+0500\n" +"PO-Revision-Date: 2024-10-07 15:52+0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" @@ -1805,6 +1805,16 @@ msgstr "Отображение времени" msgid "Displays time spent in an application or game" msgstr "Отображает общее время проведённое в приложении или игре" +msgid "Sort shortcuts by time" +msgstr "Сортировка ярлыков по времени" + +msgid "" +"This setting sorts the shortcuts in the main menu depending on the time " +"spent in the application or game" +msgstr "" +"Эта настройка сортирует ярлыки в главном меню в зависимости от времени, " +"проведенного в приложении или игре" + #, fuzzy msgid "GLOBAL SETTINGS (USER.CONF)" msgstr "ГЛОБАЛЬНЫЕ НАСТРОЙКИ (USER.CONF)" diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 5c52a536..f9113f38 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -5225,12 +5225,20 @@ gui_userconf () { GPU_VAR="disabled" fi - if [[ -n "${DESKTOPS_WITH_TIME}" ]] \ - && [[ "${DESKTOPS_WITH_TIME}" != "disabled" ]] + if [[ -n "${DESKTOP_WITH_TIME}" ]] \ + && [[ "${DESKTOP_WITH_TIME}" != "disabled" ]] then - DESKTOPS_WITH_TIME="${DESKTOPS_WITH_TIME}" + DESKTOP_WITH_TIME="enabled" else - DESKTOPS_WITH_TIME="disabled" + DESKTOP_WITH_TIME="disabled" + fi + + if [[ -n "${SORT_WITH_TIME}" ]] \ + && [[ "${SORT_WITH_TIME}" == "disabled" ]] + then + SORT_WITH_TIME="disabled" + else + SORT_WITH_TIME="enabled" fi "${pw_yad}" --plug=$KEY_USERCONF_GUI --tabnum="2" --form --columns=1 --separator="%" --homogeneous-row \ @@ -5238,7 +5246,8 @@ gui_userconf () { --field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix --disabled "$GPU_VAR" "$GET_GPU_NAMES")" \ --field="${translations[Choice wine audio driver]}!${translations[Fixes sound popling if choice alsa]} :CB" "$(combobox_fix --disabled "$SOUND_DRIVER_VAR" "alsa!oss!pulse")" \ --field="${translations[Choice gui themes]}!${translations[Allows you to select a theme for PortProton]} :CB" "$(combobox_fix "$GUI_THEME" "default!compact!classic")" \ - --field="${translations[Time display]}!${translations[Displays time spent in an application or game]} :CB" "$(combobox_fix "$DESKTOPS_WITH_TIME" "enabled!disabled")" \ + --field="${translations[Time display]}!${translations[Displays time spent in an application or game]} :CB" "$(combobox_fix "$DESKTOP_WITH_TIME" "enabled!disabled")" \ + --field="${translations[Sort shortcuts by time]}!${translations[This setting sorts the shortcuts in the main menu depending on the time spent in the application or game]} :CB" "$(combobox_fix "$SORT_WITH_TIME" "enabled!disabled")" \ 1> "${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" 2>/dev/null & "${pw_yad}" --key=$KEY_USERCONF_GUI --paned --sensitive \ @@ -5271,11 +5280,12 @@ gui_userconf () { 166) IFS='%' read -r -a PW_ADD_SETTINGS_UC <"${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" IFS="$orig_IFS" - PW_GPU_USE="${PW_ADD_SETTINGS_UC[0]}" - PW_SOUND_DRIVER_USE="${PW_ADD_SETTINGS_UC[1]}" + PW_GPU_USE=${PW_ADD_SETTINGS_UC[0]} + PW_SOUND_DRIVER_USE=${PW_ADD_SETTINGS_UC[1]} GUI_THEME="${PW_ADD_SETTINGS_UC[2]}" - DESKTOPS_WITH_TIME="${PW_ADD_SETTINGS_UC[3]}" - edit_user_conf_from_gui PW_GPU_USE PW_SOUND_DRIVER_USE GUI_THEME DESKTOPS_WITH_TIME + DESKTOP_WITH_TIME="${PW_ADD_SETTINGS_UC[3]}" + SORT_WITH_TIME="${PW_ADD_SETTINGS_UC[4]}" + edit_user_conf_from_gui PW_GPU_USE PW_SOUND_DRIVER_USE GUI_THEME DESKTOP_WITH_TIME SORT_WITH_TIME restart_pp ;; esac @@ -5349,10 +5359,11 @@ portwine_create_shortcut () { [[ -z "${PW_SHORTCUT_STEAM}" ]] && PW_SHORTCUT_STEAM="FALSE" if [[ -z "${PORTPROTON_NAME}" ]] ; then - export name_desktop="$(basename "$portwine_exe")" + name_desktop="$(basename "$portwine_exe")" else - export name_desktop="${PORTPROTON_NAME}" + name_desktop="${PORTPROTON_NAME}" fi + export name_desktop [[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}" @@ -5503,8 +5514,12 @@ pw_auto_create_shortcut () { continue fi done - [[ -z "$LINKS" ]] && return 0 - SORTED_LINKS=($(echo ${LINKS[@]} | tr ' ' '\n' | sort -u)) + [[ -z "${LINKS[0]}" ]] && return 0 + SORTED_LINKS=() + while IFS= read -r line ; do + SORTED_LINKS+=("$line"); + done < <(echo ${LINKS[@]} | tr ' ' '\n' | sort -u) + IFS="$orig_IFS" for link_file in "${SORTED_LINKS[@]//@_@/ }" ; do if command -v exiftool &>/dev/null ; then diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 2d3fa0c4..13ef446b 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -497,7 +497,7 @@ if [[ -f "${portwine_exe}" ]] ; then PW_SHORTCUT="${translations[DELETE SHORTCUT]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Delete shortcut for select file...]}:98" fi - if [[ $DESKTOPS_WITH_TIME == enabled ]] ; then + if [[ $DESKTOP_WITH_TIME == enabled ]] ; then search_desktop_file fi if [[ -z "${PW_COMMENT_DB}" ]] ; then @@ -638,7 +638,11 @@ else # Чтобы новый ярлык показало первым при первом запуске, потом уже по времени if [[ $WITH_TIME != 1 ]] ; then echo "#Time=0" >> "$desktop_file" - PW_AMOUNT_NO_TIME+=($AMOUNT_GENERATE_BUTTONS) + if [[ $SORT_WITH_TIME == enabled ]] ; then + PW_AMOUNT_NO_TIME+=($AMOUNT_GENERATE_BUTTONS) + else + PW_AMOUNT_WITH_TIME+=($AMOUNT_GENERATE_BUTTONS) + fi else if [[ ! ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} =~ [0-9]+ ]] ; then sed -i '/^#Time=/d' "$desktop_file" @@ -655,26 +659,28 @@ else # Переопределение элементов в массивах в зависимости от PW_GAME_TIME, от большего значения к меньшему. # 10 миллисекунд на 40 .desktop файлов, работает быстро - for i in "${!PW_GAME_TIME[@]}" ; do - for j in "${!PW_GAME_TIME[@]}" ; 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]} - tmp_4=${PW_ICON_PATH[$i]} + if [[ $SORT_WITH_TIME == enabled ]] ; then + for i in "${!PW_GAME_TIME[@]}" ; do + for j in "${!PW_GAME_TIME[@]}" ; 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]} + tmp_4=${PW_ICON_PATH[$i]} - PW_GAME_TIME[i]=${PW_GAME_TIME[$j]} - PW_ALL_DF[i]=${PW_ALL_DF[$j]} - PW_NAME_D_ICON[i]=${PW_NAME_D_ICON[$j]} - PW_ICON_PATH[i]=${PW_ICON_PATH[$j]} + PW_GAME_TIME[i]=${PW_GAME_TIME[$j]} + PW_ALL_DF[i]=${PW_ALL_DF[$j]} + PW_NAME_D_ICON[i]=${PW_NAME_D_ICON[$j]} + PW_ICON_PATH[i]=${PW_ICON_PATH[$j]} - PW_GAME_TIME[j]=$tmp_0 - PW_ALL_DF[j]=$tmp_1 - PW_NAME_D_ICON[j]=$tmp_2 - PW_ICON_PATH[j]=$tmp_4 - fi + PW_GAME_TIME[j]=$tmp_0 + PW_ALL_DF[j]=$tmp_1 + PW_NAME_D_ICON[j]=$tmp_2 + PW_ICON_PATH[j]=$tmp_4 + fi + done done - done + fi # Генерация .desktop баттанов для главного меню IFS=$'\n' From f70ccc402c05d73aa847c3fc4bae83f1128d4781 Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 16:05:45 +0500 Subject: [PATCH 25/28] Update themes and scripts --- data_from_portwine/scripts/functions_helper | 36 ++++++++++----------- data_from_portwine/scripts/start.sh | 16 ++++----- data_from_portwine/themes/compact.pptheme | 2 +- data_from_portwine/themes/default.pptheme | 2 +- 4 files changed, 25 insertions(+), 31 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index f9113f38..8aced369 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -776,10 +776,10 @@ debug_timer () { fi } +# Поиск нужного .desktop файла по $portwine_exe search_desktop_file () { - # Поиск нужного .desktop файла по $portwine_exe, чтобы внести изменения в него. - for desktop_file in "${PORT_WINE_PATH}"/* ; do - desktop_file_new="${desktop_file//"${PORT_WINE_PATH}/"/}" + for desktop_file in "$PORT_WINE_PATH"/* ; do + desktop_file_new="${desktop_file//"$PORT_WINE_PATH/"/}" if [[ $desktop_file_new =~ .desktop ]] ; then if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then while IFS= read -r line ; do @@ -787,7 +787,7 @@ search_desktop_file () { if check_flatpak ; then EXEC_DESKTOP=${line//Exec=flatpak run ru.linux_gaming.PortProton /} else - EXEC_DESKTOP=${line//Exec=env \"${PORT_SCRIPTS_PATH}\/start.sh\" /} + EXEC_DESKTOP=${line//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /} fi EXEC_DESKTOP_NEW="${EXEC_DESKTOP//\"/}" fi @@ -816,19 +816,17 @@ search_desktop_file () { IFS="$orig_IFS" } +# Конвертация секунд в дни, часы, минуты seconds_to_time () { [[ -z $1 ]] && return 0 local seconds=$1 - # Calculate days local days=$((seconds / (60 * 60 * 24))) local seconds=$((seconds % (60 * 60 * 24))) - # Calculate hours local hours=$((seconds / (60 * 60))) local seconds=$((seconds % (60 * 60))) - # Calculate minutes local minutes=$((seconds / 60)) local seconds=$((seconds % 60)) @@ -889,27 +887,27 @@ combobox_fix () { echo "disabled" return 0 fi - name1="$2" - name2="$3" + local name1="$2" + local name2="$3" elif [[ "$1" == "--empty" ]] ; then if [[ -z "$3" ]] ; then echo "" return 0 fi - name1="$2" - name2="$3" + local name1="$2" + local name2="$3" else - name1="$1" + local name1="$1" if [[ -z "$2" ]] ; then echo "${name1}" return 0 fi - name2="$2" + local name2="$2" fi - name3="${name2//\!${name1}\!/\!}" - name3="!${name3//${name1}\!/\!}" - name3="${name3//\!\!/\!}" - name4="${name3//*\!/}" + local name3="${name2//\!${name1}\!/\!}" + local name3="!${name3//${name1}\!/\!}" + local name3="${name3//\!\!/\!}" + local name4="${name3//*\!/}" if [[ ${name1} == "${name4}" ]] || [[ ${name1} == "\\${name4}" ]] then name3="${name3%\!"${name1}"}" fi @@ -5280,8 +5278,8 @@ gui_userconf () { 166) IFS='%' read -r -a PW_ADD_SETTINGS_UC <"${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" IFS="$orig_IFS" - PW_GPU_USE=${PW_ADD_SETTINGS_UC[0]} - PW_SOUND_DRIVER_USE=${PW_ADD_SETTINGS_UC[1]} + PW_GPU_USE="${PW_ADD_SETTINGS_UC[0]}" + PW_SOUND_DRIVER_USE="${PW_ADD_SETTINGS_UC[1]}" GUI_THEME="${PW_ADD_SETTINGS_UC[2]}" DESKTOP_WITH_TIME="${PW_ADD_SETTINGS_UC[3]}" SORT_WITH_TIME="${PW_ADD_SETTINGS_UC[4]}" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 13ef446b..045eec2c 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -497,9 +497,7 @@ if [[ -f "${portwine_exe}" ]] ; then PW_SHORTCUT="${translations[DELETE SHORTCUT]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Delete shortcut for select file...]}:98" fi - if [[ $DESKTOP_WITH_TIME == enabled ]] ; then - search_desktop_file - fi + [[ $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")" @@ -590,9 +588,7 @@ if [[ -f "${portwine_exe}" ]] ; then fi case $PW_YAD_SET in 128) - if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then - unset PW_YAD_FORM_TAB - fi + [[ "$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') print_info "Restarting..." restart_pp @@ -603,7 +599,7 @@ if [[ -f "${portwine_exe}" ]] ; then esac pw_yad_set_form pw_yad_form_vulkan - elif [[ -f "${PORTWINE_DB_FILE}" ]] ; then + elif [[ -f "$PORTWINE_DB_FILE" ]] ; then portwine_launch fi else @@ -614,8 +610,8 @@ else # Поиск .desktop файлов AMOUNT_GENERATE_BUTTONS="0" - for desktop_file in "${PORT_WINE_PATH}"/* ; do - desktop_file_new="${desktop_file//"${PORT_WINE_PATH}/"/}" + for desktop_file in "$PORT_WINE_PATH"/* ; do + desktop_file_new="${desktop_file//"$PORT_WINE_PATH/"/}" if [[ $desktop_file_new =~ .desktop ]] ; then if [[ ! $desktop_file_new =~ (PortProton|readme) ]] ; then while IFS= read -r line ; do @@ -623,7 +619,7 @@ else if check_flatpak ; then PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line//Exec=flatpak run ru.linux_gaming.PortProton /} else - PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line//Exec=env \"${PORT_SCRIPTS_PATH}\/start.sh\" /} + PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /} fi fi if [[ $line =~ ^Icon= ]] ; then diff --git a/data_from_portwine/themes/compact.pptheme b/data_from_portwine/themes/compact.pptheme index 30a1a606..a6996c41 100755 --- a/data_from_portwine/themes/compact.pptheme +++ b/data_from_portwine/themes/compact.pptheme @@ -23,7 +23,7 @@ export BUTTON_SIZE=32 # 24, 28, 32, 36, 40 export TAB_SIZE=32 # 24, 28, 32, 36, 40 -export PW_MAIN_SIZE_W=500 +export PW_MAIN_SIZE_W=1000 export PW_MAIN_SIZE_H=350 export PW_START_SIZE_W=500 diff --git a/data_from_portwine/themes/default.pptheme b/data_from_portwine/themes/default.pptheme index d22ca3b9..07964bbb 100755 --- a/data_from_portwine/themes/default.pptheme +++ b/data_from_portwine/themes/default.pptheme @@ -31,7 +31,7 @@ export BUTTON_SIZE=28 # 24, 28, 32, 36, 40 export TAB_SIZE=32 # 24, 28, 32, 36, 40 # размер главного меню -export PW_MAIN_SIZE_W=500 +export PW_MAIN_SIZE_W=1000 export PW_MAIN_SIZE_H=330 # размер меню запуска и положения табов From 11dff46137def08a441996af8000b6b95c87fb30 Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 19:56:39 +0500 Subject: [PATCH 26/28] Dropped PW_NO_RESTART_PPDB=1 --- data_from_portwine/scripts/functions_helper | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 8aced369..da2a69bf 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -5478,16 +5478,12 @@ portwine_create_shortcut () { if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then print_info "Restarting PP..." - if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then - unset PW_YAD_FORM_TAB - fi + [[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB restart_pp fi elif [[ "$PW_YAD_OUT" == "2" ]] ; then print_info "Restarting PP..." - if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then - unset PW_YAD_FORM_TAB - fi + [[ "${PW_GUI_START}" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB restart_pp fi } @@ -5566,7 +5562,6 @@ 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 From 38e880d3afc94ff02223eb61a9c23e64b6949db6 Mon Sep 17 00:00:00 2001 From: Htylol Date: Mon, 7 Oct 2024 20:10:23 +0500 Subject: [PATCH 27/28] 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 950a7d59..3fbb167d 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 3a0c3860..bf9f7384 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 6dac269d..2a24f6e8 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 da2a69bf..35bdc77f 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 045eec2c..e4869c20 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 From 54f3bb08af8750444f481155178d71c25614eeea Mon Sep 17 00:00:00 2001 From: Htylol Date: Thu, 10 Oct 2024 14:42:41 +0500 Subject: [PATCH 28/28] updates for tray --- data_from_portwine/scripts/functions_helper | 40 +++++++------------- data_from_portwine/scripts/start.sh | 4 +- data_from_portwine/themes/tray/tray_gui_pp | Bin 155248 -> 155248 bytes 3 files changed, 15 insertions(+), 29 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 35bdc77f..10f81810 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -785,7 +785,7 @@ search_desktop_file () { count=0 for desktop_file in "$PORT_WINE_PATH"/* ; do 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 while IFS= read -r line ; do if [[ $line =~ ^Exec= ]] ; then @@ -1414,7 +1414,7 @@ pw_exit_tray () { export -f pw_exit_tray stop_portwine () { - [[ "$int_xneur" == "1" ]] && xneur & + [[ "$int_xneur" == "1" ]] && xneur & if [[ "$PW_USE_US_LAYOUT" == "1" ]] \ && ! check_wayland_session \ @@ -1448,20 +1448,15 @@ stop_portwine () { pw_stop_progress_bar try_remove_file "${PORT_SCRIPTS_PATH}/0" try_remove_file "${PORT_SCRIPTS_PATH}/1" - kill_portwine && + kill_portwine try_remove_dir "${PW_WINELIB}/var" find "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/" -maxdepth 1 -type f -name "*.tmp" -delete pw_exit_tray pw_auto_create_shortcut add_in_stop_portwine - # То что новый трей ругается на debug_timer и search_desktop_file, так и должно быть. debug_timer --end -s "PW_TIME_IN_GAME" - - # В году 31536000 секунд. - # Bash у меня ещё работает с таким числом 999999999999999999999999999999999999999999999999 PW_TIME_IN_GAME=$(( PW_TIME_IN_GAME / 1000 )) # в секундах - search_desktop_file case "$1" in @@ -2733,7 +2728,7 @@ start_portwine () { if check_gamescope_session ; then export PW_GAMEMODERUN_SLR="" elif [[ "$PW_USE_GAMEMODE" = "1" ]] \ - && [[ -n "$DBUS_SESSION_BUS_ADDRESS" ]] + && [[ -n "$DBUS_SESSION_BUS_ADDRESS" ]] then if command -v gamemoded &>/dev/null ; then export GAMEMODERUN=1 @@ -3154,7 +3149,7 @@ start_portwine () { if [[ -n "$CP_DXVK_FILES" ]] ; then print_info "Try create symlink DXVK files..." for wine_dxvk_dll in $CP_DXVK_FILES ; do - if [[ -f "${PATH_TO_DXVK_FILES}/x64/${wine_dxvk_dll}.dll" ]] ; then + if [[ -f "${PATH_TO_DXVK_FILES}/x64/${wine_dxvk_dll}.dll" ]] ; then try_force_link_file "${PATH_TO_DXVK_FILES}/x32/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_dxvk_dll}.dll" try_force_link_file "${PATH_TO_DXVK_FILES}/x64/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_dxvk_dll}.dll" var_winedlloverride_update "${wine_dxvk_dll}=n" @@ -4837,7 +4832,7 @@ gui_mangohud () { export PW_MANGOHUD FPS_LIMIT edit_db_from_gui MANGOHUD_CONFIG PW_MANGOHUD FPS_LIMIT - if [[ "${YAD_MANGOHUD_STATUS}" == "184" ]] ; then + if [[ "${YAD_MANGOHUD_STATUS}" == "184" ]] ; then PW_MANGOHUD="1" pw_init_runtime pw_mangohud_check @@ -5517,8 +5512,8 @@ portwine_create_shortcut () { 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 + [[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB + [[ -z $LINKS ]] && restart_pp fi } @@ -5535,19 +5530,12 @@ pw_auto_create_shortcut () { unset LINKS for link_file in "${PORT_WINE_PATH}"/data/prefixes/*/drive_c/users/*/Desktop/*.lnk do - if ! echo "$link_file" | grep "\*.lnk" &>/dev/null ; then - link_file=$(readlink -f "${link_file}") - LINKS+=("${link_file// /@_@}") - else - continue - fi + link_file=$(readlink -f "${link_file}") + LINKS+=(${link_file// /@_@}) done + [[ -z "${LINKS[0]}" ]] && return 0 - SORTED_LINKS=() - while IFS= read -r line ; do - SORTED_LINKS+=("$line") - done < <(echo ${LINKS[@]} | tr ' ' '\n' | sort -u) - IFS="$orig_IFS" + read -r -a SORTED_LINKS < <(echo ${LINKS[@]} | tr ' ' '\n' | sort -u | tr '\n' ' ') for link_file in "${SORTED_LINKS[@]//@_@/ }" ; do if command -v exiftool &>/dev/null ; then @@ -5587,10 +5575,8 @@ pw_auto_create_shortcut () { link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp") fi - try_remove_file "$link_file" - if ! exe_path="$(realpath "${link_path}" 2>/dev/null)" ; then - print_warning "Removed broken link for: $link_name" + print_warning "Link broken for: $link_name" else print_info "Created link for: $link_name" PORTPROTON_NAME="$link_name" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index e4869c20..7e5bef12 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -326,7 +326,7 @@ export SKIP_CHECK_UPDATES="1" [[ "$MISSING_DESKTOP_FILE" == "1" ]] && portwine_missing_shortcut -if [[ $(basename "${portwine_exe}") =~ .ppack$ ]] ; then +if [[ $(basename "${portwine_exe}") =~ .[Pp][Pp][Aa][Cc][Kk]$ ]] ; then unset PW_SANDBOX_HOME_PATH pw_init_runtime if check_flatpak @@ -618,7 +618,7 @@ else AMOUNT_GENERATE_BUTTONS="0" for desktop_file in "$PORT_WINE_PATH"/* ; do 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 while IFS= read -r line ; do if [[ $line =~ ^Exec= ]] ; then diff --git a/data_from_portwine/themes/tray/tray_gui_pp b/data_from_portwine/themes/tray/tray_gui_pp index 42bfd923d3a9dce032a4b85dac50f919d444128a..4a1525fe73eeaa5f7dbdde6e31fca2102c095dc2 100755 GIT binary patch delta 7860 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 RtLM5ttGaT`3$`9D{vQgeF>C+; delta 7834 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 X$;y`CM@d!}`aY|=e!`=++q(T5Ej2Z;