forked from CastroFidel/PortWINE
Fixes
This commit is contained in:
@ -850,8 +850,9 @@ debug_timer () {
|
||||
# Поиск нужного .desktop файла по $portwine_exe (для показа в комментариях нужного времени)
|
||||
# Параллельное создание базы по времени после завершения приложения
|
||||
search_desktop_file () {
|
||||
local desktop_file desktop_file_new EXEC_DESKTOP EXEC_DESKTOP_NEW TIME_TOTAL line1 line2 ENTRY_POINT_FIND
|
||||
unset TIME_CURRENT
|
||||
local desktop_file desktop_file_new EXEC_DESKTOP EXEC_DESKTOP_NEW TIME_TOTAL count line1 line2 ENTRY_POINT_FIND
|
||||
unset TIME_CURRENT 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
|
||||
@ -866,44 +867,53 @@ search_desktop_file () {
|
||||
fi
|
||||
done < "$desktop_file"
|
||||
while IFS=" " read -r -a line2 ; do
|
||||
if [[ ${line2[0]} == ${portwine_exe// /#@_@#} ]] ; then
|
||||
if [[ ${line2[0]} == "${portwine_exe// /#@_@#}" ]] ; then
|
||||
TIME_CURRENT=${line2[2]}
|
||||
fi
|
||||
if [[ ${line2[1]} =~ ^$ENTRY_POINT ]] ; then
|
||||
ENTRY_POINT_FIND=$ENTRY_POINT
|
||||
if [[ ${line2[1]} == "$ENTRY_POINT" ]] ; then
|
||||
ENTRY_POINT_FIND=1
|
||||
break
|
||||
fi
|
||||
done < "$PW_DATABASE_PATH/times_current"
|
||||
EXEC_DESKTOP_NEW=${EXEC_DESKTOP//\"/}
|
||||
if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then
|
||||
DESKTOP_SEARCH_FILE=$desktop_file
|
||||
break
|
||||
if [[ $portwine_exe == "${EXEC_DESKTOP//\"/}" ]] ; then
|
||||
DESKTOP_FILES_ARRAY["$count"]="$desktop_file"
|
||||
(( count++ ))
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
IFS="$orig_IFS"
|
||||
if [[ $PW_NEW_DESKTOP == 1 ]] && [[ -z ${line2[3]} ]] ; then
|
||||
if [[ -n $TIME_CURRENT ]] ; then
|
||||
sed -i "s|${line2[1]} ${line2[2]}|${line2[1]} ${line2[2]} NEW_DESKTOP|g" "$PW_DATABASE_PATH/times_current"
|
||||
else
|
||||
TIME_CURRENT=0
|
||||
echo "${portwine_exe// /#@_@#} $ENTRY_POINT $TIME_CURRENT NEW_DESKTOP" >> "$PW_DATABASE_PATH/times_current"
|
||||
fi
|
||||
fi
|
||||
unset PW_NEW_DESKTOP
|
||||
if [[ -n $PW_TIME_IN_GAME ]] ; then
|
||||
if [[ -n $TIME_CURRENT ]] ; then
|
||||
TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME ))
|
||||
sed -i "s|${portwine_exe// /#@_@#} $ENTRY_POINT $TIME_CURRENT|${portwine_exe// /#@_@#} $ENTRY_POINT $TIME_TOTAL|g" "$PW_DATABASE_PATH/times_current"
|
||||
sed -i "s|${line2[1]} ${line2[2]}|${line2[1]} $TIME_TOTAL|g" "$PW_DATABASE_PATH/times_current"
|
||||
else
|
||||
TIME_TOTAL=$(( 0 + PW_TIME_IN_GAME ))
|
||||
TIME_CURRENT=0
|
||||
TIME_TOTAL=$(( $TIME_CURRENT + PW_TIME_IN_GAME ))
|
||||
echo "${portwine_exe// /#@_@#} $ENTRY_POINT $TIME_TOTAL" >> "$PW_DATABASE_PATH/times_current"
|
||||
fi
|
||||
else
|
||||
if [[ -n $ENTRY_POINT_FIND ]] ; then
|
||||
TIME_CURRENT=${line2[2]}
|
||||
if [[ $ENTRY_POINT_FIND == 1 ]] ; then
|
||||
[[ -z $TIME_CURRENT ]] && TIME_CURRENT=0
|
||||
if [[ -n $PW_TIME_IN_GAME ]]
|
||||
then TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME ))
|
||||
else TIME_TOTAL=$TIME_CURRENT
|
||||
fi
|
||||
sed -i "s|${line2[0]} ${line2[1]} ${line2[2]}|${portwine_exe// /#@_@#} $ENTRY_POINT_FIND $TIME_TOTAL|g" "$PW_DATABASE_PATH/times_current"
|
||||
sed -i "s|${line2[0]} ${line2[1]} ${line2[2]}|${portwine_exe// /#@_@#} ${line2[1]} $TIME_TOTAL|g" "$PW_DATABASE_PATH/times_current"
|
||||
else
|
||||
TIME_CURRENT=0
|
||||
fi
|
||||
fi
|
||||
export TIME_CURRENT DESKTOP_SEARCH_FILE
|
||||
export TIME_CURRENT
|
||||
}
|
||||
|
||||
create_name_desktop () {
|
||||
@ -918,8 +928,9 @@ create_name_desktop () {
|
||||
elif [[ -n $name_desktop ]] ; then
|
||||
DESKTOP_NAME_FILE="$name_desktop"
|
||||
unset name_desktop
|
||||
elif [[ -n $DESKTOP_SEARCH_FILE ]] ; then
|
||||
DESKTOP_NAME_FILE="${DESKTOP_SEARCH_FILE//"$PORT_WINE_PATH/"/}"
|
||||
elif [[ -n ${DESKTOP_FILES_ARRAY[0]} ]] \
|
||||
&& [[ -z ${DESKTOP_FILES_ARRAY[1]} ]] ; then
|
||||
DESKTOP_NAME_FILE="${DESKTOP_FILES_ARRAY[0]//"$PORT_WINE_PATH/"/}"
|
||||
DESKTOP_NAME_FILE="${DESKTOP_NAME_FILE//.desktop/}"
|
||||
fi
|
||||
|
||||
@ -5591,8 +5602,10 @@ portwine_create_shortcut () {
|
||||
|
||||
edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM
|
||||
|
||||
if [[ -n $DESKTOP_SEARCH_FILE && $name_desktop != "$DESKTOP_NAME_FILE" ]] ; then
|
||||
rm -f "$DESKTOP_SEARCH_FILE"
|
||||
if [[ -n ${DESKTOP_FILES_ARRAY[0]} && $name_desktop != "$DESKTOP_NAME_FILE" ]] || [[ -n ${DESKTOP_FILES_ARRAY[1]} ]] ; then
|
||||
for rm in "${DESKTOP_FILES_ARRAY[@]}" ; do
|
||||
rm -f "$rm"
|
||||
done
|
||||
else
|
||||
try_remove_file "${PORT_WINE_PATH}/${name_desktop}.desktop"
|
||||
fi
|
||||
@ -5665,8 +5678,7 @@ portwine_create_shortcut () {
|
||||
unset PW_SKIP_RESTART_STEAM
|
||||
fi
|
||||
|
||||
# Когда новый .desktop файл
|
||||
echo "#NEW_DESKTOP" >> "$PORT_WINE_PATH/$name_desktop.desktop"
|
||||
export PW_NEW_DESKTOP="1"
|
||||
|
||||
if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then
|
||||
print_info "Restarting PP..."
|
||||
|
@ -626,16 +626,8 @@ else
|
||||
fi
|
||||
fi
|
||||
[[ $line1 =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]=${line1//Icon=/}
|
||||
[[ $line1 =~ ^#NEW_DESKTOP ]] && NEW_DESKTOP=1
|
||||
done < "$desktop_file"
|
||||
PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="$desktop_file_new"
|
||||
if [[ $SORT_WITH_TIME == enabled ]] && [[ $NEW_DESKTOP == 1 ]] ; then
|
||||
unset NEW_DESKTOP
|
||||
sed -i '/^#NEW_DESKTOP/d' "$desktop_file"
|
||||
PW_AMOUNT_NEW_DESKTOP+=($AMOUNT_GENERATE_BUTTONS)
|
||||
else
|
||||
PW_AMOUNT_OLD_DESKTOP+=($AMOUNT_GENERATE_BUTTONS)
|
||||
fi
|
||||
# Для конвертации существующих .desktop файлов flatpak в натив и наоборот
|
||||
if [[ ${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]} =~ ^"Exec=flatpak run ru.linux_gaming.PortProton " ]] ; then
|
||||
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//Exec=flatpak run ru.linux_gaming.PortProton /}
|
||||
@ -644,15 +636,22 @@ else
|
||||
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /}
|
||||
sed -i "s|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|Exec=flatpak run ru.linux_gaming.PortProton|" "$desktop_file"
|
||||
fi
|
||||
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//\"/}
|
||||
while IFS=" " read -r -a line2 ; do
|
||||
if [[ ${line2[0]//#@_@#/ } == ${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]} ]] ; then
|
||||
if [[ \"${line2[0]//#@_@#/ }\" == "${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]}" ]] ; then
|
||||
[[ ${line2[3]} == NEW_DESKTOP ]] && NEW_DESKTOP=1
|
||||
PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=${line2[2]}
|
||||
break
|
||||
else
|
||||
PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=0
|
||||
fi
|
||||
done < "$PW_DATABASE_PATH/times_current"
|
||||
if [[ $SORT_WITH_TIME == enabled ]] && [[ $NEW_DESKTOP == 1 ]] ; then
|
||||
unset NEW_DESKTOP
|
||||
sed -i "s/${line2[1]} ${line2[2]} ${line2[3]}/${line2[1]} ${line2[2]}/" "$PW_DATABASE_PATH/times_current"
|
||||
PW_AMOUNT_NEW_DESKTOP+=($AMOUNT_GENERATE_BUTTONS)
|
||||
else
|
||||
PW_AMOUNT_OLD_DESKTOP+=($AMOUNT_GENERATE_BUTTONS)
|
||||
fi
|
||||
(( AMOUNT_GENERATE_BUTTONS++ ))
|
||||
fi
|
||||
fi
|
||||
@ -687,8 +686,9 @@ else
|
||||
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}"
|
||||
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"
|
||||
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="${PW_ALL_DF[$dp]}"
|
||||
PW_DESKTOP_FILES_SHOW="$PW_DESKTOP_FILES"
|
||||
|
Reference in New Issue
Block a user