Commit 28071624 authored by Mikhail Tergoev's avatar Mikhail Tergoev

Merge branch 'update-name_desktop' of github.com:Htylol/PortWINE into Htylol-update-name_desktop

parents a1c42176 bd2f9fb1
...@@ -44,6 +44,10 @@ msgstr "" ...@@ -44,6 +44,10 @@ msgstr ""
msgid "Newest DXVK, VKD3D, D8VK (Vulkan v1.3+)" msgid "Newest DXVK, VKD3D, D8VK (Vulkan v1.3+)"
msgstr "" msgstr ""
msgid "A higher number of duplicate desktop files were found for this file."
"\\nShould I delete the extra ones or not?"
msgstr ""
msgid "Gallium Nine (DirectX 9 for MESA)" msgid "Gallium Nine (DirectX 9 for MESA)"
msgstr "" msgstr ""
......
...@@ -1878,6 +1878,11 @@ msgstr "Agregar acceso directo a la biblioteca de STEAM" ...@@ -1878,6 +1878,11 @@ msgstr "Agregar acceso directo a la biblioteca de STEAM"
msgid "Name" msgid "Name"
msgstr "Nombre" msgstr "Nombre"
msgid ""
"A higher number of duplicate desktop files were found for this file."
"\\nShould I delete the extra ones or not?"
msgstr ""
msgid "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?" msgid "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?"
msgstr "" msgstr ""
"Para agregar el acceso directo a STEAM, es necesario reiniciar.\\n\\¿Quieres " "Para agregar el acceso directo a STEAM, es necesario reiniciar.\\n\\¿Quieres "
......
...@@ -61,6 +61,13 @@ msgstr "Скачать другие версии wine" ...@@ -61,6 +61,13 @@ msgstr "Скачать другие версии wine"
msgid "CREATE SHORTCUT" msgid "CREATE SHORTCUT"
msgstr "СОЗДАТЬ ЯРЛЫК" msgstr "СОЗДАТЬ ЯРЛЫК"
msgid ""
"A higher number of duplicate desktop files were found for this file."
"\\nShould I delete the extra ones or not?"
msgstr ""
"Для этого файла было обнаружено большее количество дубликатов\\nфайлов "
"рабочего стола. Удалить лишние или нет?"
msgid "Create shortcut for select file..." msgid "Create shortcut for select file..."
msgstr "Создать ярлык для выбранного файла..." msgstr "Создать ярлык для выбранного файла..."
......
...@@ -38,6 +38,18 @@ print_wrapped () { ...@@ -38,6 +38,18 @@ print_wrapped () {
} }
export -f print_wrapped export -f print_wrapped
make_abbreviation () {
local words new_word i
words=($1)
# Создаем новое слово, состоящее из начальных букв слов
new_word="${words[0]:0:1}"
for ((i=1 ; i<${#words[@]} ; i++)) ; do
new_word+="${words[$i]:0:1}"
done
echo "$new_word"
}
export -f make_abbreviation
check_variables () { [[ -z ${!1} ]] && export $1="$2" ;} check_variables () { [[ -z ${!1} ]] && export $1="$2" ;}
add_to_var () { add_to_var () {
...@@ -818,7 +830,7 @@ debug_timer () { ...@@ -818,7 +830,7 @@ debug_timer () {
# Поиск нужного .desktop файла по $portwine_exe # Поиск нужного .desktop файла по $portwine_exe
search_desktop_file () { search_desktop_file () {
local count desktop_file desktop_file_new EXEC_DESKTOP EXEC_DESKTOP_NEW TIME_TOTAL i j df local count desktop_file desktop_file_new EXEC_DESKTOP TIME_CURRENT_PROXY EXEC_DESKTOP_NEW TIME_TOTAL i j df
unset TIME_CURRENT_ARRAY DESKTOP_FILES_ARRAY unset TIME_CURRENT_ARRAY DESKTOP_FILES_ARRAY
count=0 count=0
for desktop_file in "$PORT_WINE_PATH"/* ; do for desktop_file in "$PORT_WINE_PATH"/* ; do
...@@ -832,50 +844,53 @@ search_desktop_file () { ...@@ -832,50 +844,53 @@ search_desktop_file () {
else else
EXEC_DESKTOP=${line//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /} EXEC_DESKTOP=${line//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /}
fi fi
EXEC_DESKTOP_NEW=${EXEC_DESKTOP//\"/}
fi
if [[ $line =~ ^#Time= ]] && [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then
TIME_CURRENT=${line//#Time=/}
fi fi
[[ $line =~ ^#Time= ]] && TIME_CURRENT_PROXY=${line//#Time=/}
done < "$desktop_file" done < "$desktop_file"
# Для конвертации существующих .desktop файлов flatpak в натив и наоборот
if [[ $EXEC_DESKTOP =~ ^"Exec=flatpak run ru.linux_gaming.PortProton " ]] ; then
sed -i "s|Exec=flatpak run ru.linux_gaming.PortProton|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|" "$desktop_file"
elif [[ $EXEC_DESKTOP =~ ^"Exec=env \"$PORT_SCRIPTS_PATH/start.sh\" " ]] ; then
sed -i "s|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|Exec=flatpak run ru.linux_gaming.PortProton|" "$desktop_file"
fi
EXEC_DESKTOP_NEW=${EXEC_DESKTOP//\"/}
if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then if [[ $portwine_exe == "$EXEC_DESKTOP_NEW" ]] ; then
# Когда новый .desktop файл if [[ -n $TIME_CURRENT_PROXY ]] ; then
if [[ $TIME_CURRENT == "" ]] ; then TIME_CURRENT=$TIME_CURRENT_PROXY
echo "#NEW_DESKTOP" >> "$desktop_file" TIME_CURRENT_ARRAY+=($TIME_CURRENT)
TIME_CURRENT="0" # Если существует несколько .desktop файлов на один и тот же .exe файл,
# Для битых #Time= # то среди них время берётся из того .desktop файла, в котором проведено дольше времени
else # и данное время будет потом записываться во все .desktop файлы у которых общий .exe файл
if [[ -n ${TIME_CURRENT_ARRAY[1]} ]] ; then
for i in "${!TIME_CURRENT_ARRAY[@]}" ; do
for j in "${!TIME_CURRENT_ARRAY[@]}" ; do
if (( ${TIME_CURRENT_ARRAY[$i]} > ${TIME_CURRENT_ARRAY[$j]} )) ; then
tmp=${TIME_CURRENT_ARRAY[$i]}
TIME_CURRENT_ARRAY[i]=${TIME_CURRENT_ARRAY[$j]}
TIME_CURRENT_ARRAY[j]=$tmp
fi
done
done
fi
TIME_CURRENT="${TIME_CURRENT_ARRAY[0]}"
# Для битых #Time=
if [[ ! $TIME_CURRENT =~ [0-9]+ ]] \ if [[ ! $TIME_CURRENT =~ [0-9]+ ]] \
|| (( $TIME_CURRENT >= 999999999 )) ; then || (( TIME_CURRENT >= 999999999 )) ; then
TIME_CURRENT="0" TIME_CURRENT="0"
fi fi
fi fi
TIME_CURRENT_ARRAY+=($TIME_CURRENT)
unset TIME_CURRENT
DESKTOP_FILES_ARRAY["$count"]="$desktop_file" DESKTOP_FILES_ARRAY["$count"]="$desktop_file"
(( count++ )) (( count++ ))
fi fi
unset TIME_CURRENT_PROXY
fi fi
fi fi
done done
IFS="$orig_IFS" IFS="$orig_IFS"
# Если существуют .desktop файлы на один и тот же .exe файл, то среди них выбирается [[ -z $TIME_CURRENT ]] && TIME_CURRENT=0
# текущее время берётся из того .desktop файла, в котором проведено больше времени export TIME_CURRENT
# и запись этого большего времени будет потом записываться во все .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 if [[ -n $PW_TIME_IN_GAME ]] ; then
TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME )) TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME ))
for df in "${DESKTOP_FILES_ARRAY[@]}" ; do for df in "${DESKTOP_FILES_ARRAY[@]}" ; do
...@@ -890,8 +905,76 @@ search_desktop_file () { ...@@ -890,8 +905,76 @@ search_desktop_file () {
fi fi
} }
create_pw_comment () {
search_desktop_file
unset DESKTOP_NAME_FILE PW_SHORTCUT_PROXY
if [[ -n ${DESKTOP_FILES_ARRAY[0]} ]] ; then
for df in "${DESKTOP_FILES_ARRAY[@]}" ; do
df="${df//"$PORT_WINE_PATH/"/}"
DESKTOP_NAME_FILE="${df//.desktop/}"
done
fi
if [[ -z "${PW_COMMENT_DB}" ]] ; then
[[ $FILE_DESCRIPTION != "" ]] && FILE_DESCRIPTION_ABBR=$(make_abbreviation "$FILE_DESCRIPTION")
[[ $PORTPROTON_NAME != "" ]] && PORTPROTON_NAME_ABBR=$(make_abbreviation "$PORTPROTON_NAME")
if [[ -n $DESKTOP_NAME_FILE ]] && [[ $DESKTOP_NAME_FILE != "" ]] ; then
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$DESKTOP_NAME_FILE" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
PW_SHORTCUT_PROXY="$DESKTOP_NAME_FILE"
elif [[ ${PORTPROTON_NAME^^} =~ ${PORTWINE_DB^^} ]] && [[ ${PORTPROTON_NAME^^} != "${PORTWINE_DB^^}" ]] ; then
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$PORTPROTON_NAME" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
PW_SHORTCUT_PROXY="$PORTPROTON_NAME"
elif (( ${#PORTPROTON_NAME_ABBR} > 2 )) && [[ ${PORTPROTON_NAME_ABBR^^} =~ ${PORTWINE_DB^^} ]] ; then
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$PORTPROTON_NAME" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
PW_SHORTCUT_PROXY="$PORTPROTON_NAME"
elif [[ ${FILE_DESCRIPTION^^} =~ ${PORTWINE_DB^^} ]] && [[ ${FILE_DESCRIPTION^^} != "${PORTWINE_DB^^}" ]] ; then
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$FILE_DESCRIPTION" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
PW_SHORTCUT_PROXY="$FILE_DESCRIPTION"
elif (( ${#FILE_DESCRIPTION_ABBR} > 2 )) && [[ ${FILE_DESCRIPTION_ABBR^^} =~ ${PORTWINE_DB^^} ]] ; then
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$FILE_DESCRIPTION" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
PW_SHORTCUT_PROXY="$FILE_DESCRIPTION"
else
unset PORTWINE_DB_PROXY PORTWINE_DB_NEW
PORTWINE_DB="${PORTWINE_DB//_/ }"
if [[ ${PORTWINE_DB:0:1} =~ [a-z] ]] ; then
PORTWINE_DB_UPPER="${PORTWINE_DB^^}"
PORTWINE_DB="${PORTWINE_DB_UPPER:0:1}${PORTWINE_DB:1}"
fi
if (( ${#PORTWINE_DB} > 3 )) ; then
for ((i=0 ; i<${#PORTWINE_DB} ; i++)) ; do
if [[ ${PORTWINE_DB:i:2} =~ ([a-z][A-Z]|[a-z][0-9]) ]] \
&& [[ ! ${PORTWINE_DB:i:3} =~ ([a-z][A-Z]" "|[a-z][0-9]" ") ]] ; then
PORTWINE_DB_PROXY+="${PORTWINE_DB:i:1} "
elif [[ ${PORTWINE_DB:i:3} =~ [0-9][0-9][a-zA-Z] ]] ; then
PORTWINE_DB_PROXY+="${PORTWINE_DB:i:2} "
((i++))
else
PORTWINE_DB_PROXY+="${PORTWINE_DB:i:1}"
fi
done
for ((i=0 ; i<${#PORTWINE_DB_PROXY} ; i++)) ; do
if [[ ${PORTWINE_DB_PROXY:i:2} =~ " "[a-z] ]] ; then
PORTWINE_DB_UPPER="${PORTWINE_DB_PROXY:i:2}"
PORTWINE_DB_NEW+="${PORTWINE_DB_UPPER^^}"
((i++))
else
PORTWINE_DB_NEW+="${PORTWINE_DB_PROXY:i:1}"
fi
done
else
PORTWINE_DB_NEW="$PORTWINE_DB"
fi
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$PORTWINE_DB_NEW" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
PW_SHORTCUT_PROXY="$PORTWINE_DB_NEW"
fi
else
PW_COMMENT_DB="$PW_COMMENT_DB$(seconds_to_time "$TIME_CURRENT")"
PW_SHORTCUT_PROXY="$DESKTOP_NAME_FILE"
fi
}
# Конвертация секунд в дни, часы, минуты # Конвертация секунд в дни, часы, минуты
seconds_to_time () { seconds_to_time () {
[[ ! $DESKTOP_WITH_TIME == enabled ]] && return 0
[[ -z $1 ]] && return 0 [[ -z $1 ]] && return 0
local seconds days hours minutes local seconds days hours minutes
seconds=$1 seconds=$1
...@@ -2333,25 +2416,25 @@ pw_create_gui_png () { ...@@ -2333,25 +2416,25 @@ pw_create_gui_png () {
export name_desktop_png="bat" export name_desktop_png="bat"
return 0 return 0
fi fi
if [[ -z "$PORTPROTON_NAME" ]] \ if [[ -z "$PORTPROTON_NAME" ]] \
|| [[ -z "$FILE_DESCRIPTION" ]] \
|| [[ "$PW_NO_RESTART_PPDB" == "1" ]] || [[ "$PW_NO_RESTART_PPDB" == "1" ]]
then then
if [[ -n "${PORTWINE_CREATE_SHORTCUT_NAME}" ]] ; then if [[ -n "${PORTWINE_CREATE_SHORTCUT_NAME}" ]] ; then
PORTPROTON_NAME="${PORTWINE_CREATE_SHORTCUT_NAME}" PORTPROTON_NAME="${PORTWINE_CREATE_SHORTCUT_NAME}"
else else
if command -v exiftool &>/dev/null ; then if command -v exiftool &>/dev/null ; then
if ! PW_PRODUCTNAME=$(timeout 3 exiftool -ProductName "${portwine_exe}" 2>/dev/null | sed -n 's/^Product Name\s*:\s*//p') ; then if timeout 3 exiftool "$portwine_exe" &> "${PW_TMPFS_PATH}/exiftool.tmp" ; then
PW_PRODUCTNAME=$(sed -n 's/^Product Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
FILE_DESCRIPTION=$(sed -n 's/^File Description\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
else
print_error "exiftool - broken!" print_error "exiftool - broken!"
if [[ -n "$PW_DEBUG" ]] ; then
debug_timer --start
timeout 5 exiftool -ProductName "${portwine_exe}"
debug_timer --end "exiftool"
fi
fi fi
else else
print_warning "use portable exiftool" print_warning "use portable exiftool"
PW_PRODUCTNAME=$(env PERL5LIB="${PW_PLUGINS_PATH}/portable/lib/perl5" "${PW_PLUGINS_PATH}/portable/bin/exiftool" -ProductName "${portwine_exe}" | sed -n 's/^Product Name\s*:\s*//p') env PERL5LIB="${PW_PLUGINS_PATH}/portable/lib/perl5" "${PW_PLUGINS_PATH}/portable/bin/exiftool" "$portwine_exe" &> "${PW_TMPFS_PATH}/exiftool.tmp"
PW_PRODUCTNAME=$(sed -n 's/^Product Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
FILE_DESCRIPTION=$(sed -n 's/^File Description\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
fi fi
if [[ "$PW_PRODUCTNAME" =~ (Launcher|RU) ]] if [[ "$PW_PRODUCTNAME" =~ (Launcher|RU) ]]
...@@ -2370,7 +2453,7 @@ pw_create_gui_png () { ...@@ -2370,7 +2453,7 @@ pw_create_gui_png () {
PORTPROTON_NAME="$(echo "${PORTPROTON_NAME}" | sed "s/\`//g" | sed "s/\"//g" | sed "s/'//g" | sed "s/\!//g")" PORTPROTON_NAME="$(echo "${PORTPROTON_NAME}" | sed "s/\`//g" | sed "s/\"//g" | sed "s/'//g" | sed "s/\!//g")"
export PORTPROTON_NAME export PORTPROTON_NAME
edit_db_from_gui PORTPROTON_NAME edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION
fi fi
resize_png "$portwine_exe" "${PORTPROTON_NAME}" "128" resize_png "$portwine_exe" "${PORTPROTON_NAME}" "128"
...@@ -5422,11 +5505,6 @@ resize_png () { ...@@ -5422,11 +5505,6 @@ resize_png () {
&& [[ "$ALPINE_FP" != "1" ]] && [[ "$ALPINE_FP" != "1" ]]
then then
print_error "exe-thumbnailer - broken!" print_error "exe-thumbnailer - broken!"
if [[ -n "$PW_DEBUG" ]] ; then
debug_timer --start
timeout 5 exe-thumbnailer --force-resize -s "$RESIZE_TO" "$(readlink -f "${RESIZE_FILE}")" "${PORT_WINE_PATH}/data/img/${RESIZE_NAME_PNG}.png"
debug_timer --end "exe-thumbnailer"
fi
fi fi
else else
print_warning "use portable exe-thumbnailer" print_warning "use portable exe-thumbnailer"
...@@ -5451,12 +5529,7 @@ portwine_create_shortcut () { ...@@ -5451,12 +5529,7 @@ portwine_create_shortcut () {
[[ -z "${PW_SHORTCUT_DESKTOP}" ]] && PW_SHORTCUT_DESKTOP="TRUE" [[ -z "${PW_SHORTCUT_DESKTOP}" ]] && PW_SHORTCUT_DESKTOP="TRUE"
[[ -z "${PW_SHORTCUT_STEAM}" ]] && PW_SHORTCUT_STEAM="FALSE" [[ -z "${PW_SHORTCUT_STEAM}" ]] && PW_SHORTCUT_STEAM="FALSE"
if [[ -z "${PORTPROTON_NAME}" ]] ; then [[ -z $PW_SHORTCUT_PROXY ]] && create_pw_comment && export name_desktop="$PW_SHORTCUT_PROXY"
name_desktop="$(basename "$portwine_exe")"
else
name_desktop="${PORTPROTON_NAME}"
fi
export name_desktop
[[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}" [[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}"
...@@ -5504,7 +5577,16 @@ portwine_create_shortcut () { ...@@ -5504,7 +5577,16 @@ portwine_create_shortcut () {
edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM
try_remove_file "${PORT_WINE_PATH}/${name_desktop}.desktop" if [[ -n ${DESKTOP_FILES_ARRAY[0]} ]] && [[ $name_desktop != $DESKTOP_NAME_FILE ]] || [[ -n ${DESKTOP_FILES_ARRAY[1]} ]] ; then
if yad_question "${translations[A higher number of duplicate desktop files were found for this file.\\nShould I delete the extra ones or not?]}" ; then
for rm in "${DESKTOP_FILES_ARRAY[@]}" ; do
rm -f "$rm"
done
[[ $name_desktop == "" ]] && create_pw_comment && export name_desktop="$PW_SHORTCUT_PROXY"
fi
else
try_remove_file "${PORT_WINE_PATH}/${name_desktop}.desktop"
fi
echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop" echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop"
echo "Name=${name_desktop}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" echo "Name=${name_desktop}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
...@@ -5571,6 +5653,9 @@ portwine_create_shortcut () { ...@@ -5571,6 +5653,9 @@ portwine_create_shortcut () {
unset PW_SKIP_RESTART_STEAM unset PW_SKIP_RESTART_STEAM
fi fi
# Когда новый .desktop файл
echo "#NEW_DESKTOP" >> "$PORT_WINE_PATH/$name_desktop.desktop"
if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then
print_info "Restarting PP..." print_info "Restarting PP..."
[[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB [[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB
...@@ -5620,11 +5705,6 @@ pw_auto_create_shortcut () { ...@@ -5620,11 +5705,6 @@ pw_auto_create_shortcut () {
link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp") link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
else else
print_error "exiftool - broken!" print_error "exiftool - broken!"
if [[ -n "$PW_DEBUG" ]] ; then
debug_timer --start
timeout 5 exiftool "$link_file"
debug_timer --end "exiftool"
fi
fi fi
else else
print_warning "use portable exiftool" print_warning "use portable exiftool"
......
...@@ -96,9 +96,7 @@ unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_T ...@@ -96,9 +96,7 @@ unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_T
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_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 MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR 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_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START PW_AUTOINSTALL_EXE NOSTSTDIR RADV_DEBUG PW_NO_AUTO_CREATE_SHORTCUT
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 PW_TERM PW_EXEC_FROM_DESKTOP
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" export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}* rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}*
...@@ -502,16 +500,7 @@ if [[ -f "${portwine_exe}" ]] ; then ...@@ -502,16 +500,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" PW_SHORTCUT="${translations[DELETE SHORTCUT]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Delete shortcut for select file...]}:98"
fi fi
[[ $DESKTOP_WITH_TIME == enabled ]] && search_desktop_file create_pw_comment
if [[ -z "${PW_COMMENT_DB}" ]] ; then
if [[ -n "${PORTPROTON_NAME}" ]] ; then
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "${PORTPROTON_NAME}" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
else
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "${PORTWINE_DB}" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
fi
else
PW_COMMENT_DB="$PW_COMMENT_DB$(seconds_to_time "$TIME_CURRENT")"
fi
export KEY_START="$RANDOM" export KEY_START="$RANDOM"
if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then if [[ "${PW_GUI_START}" == "NOTEBOOK" ]] ; then
...@@ -617,6 +606,8 @@ else ...@@ -617,6 +606,8 @@ else
gui_userconf gui_userconf
fi fi
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_DESKTOP_FILES_REGEX
# Поиск .desktop файлов # Поиск .desktop файлов
AMOUNT_GENERATE_BUTTONS="0" AMOUNT_GENERATE_BUTTONS="0"
for desktop_file in "$PORT_WINE_PATH"/* ; do for desktop_file in "$PORT_WINE_PATH"/* ; do
...@@ -636,20 +627,30 @@ else ...@@ -636,20 +627,30 @@ else
[[ $line =~ ^#NEW_DESKTOP ]] && NEW_DESKTOP=1 [[ $line =~ ^#NEW_DESKTOP ]] && NEW_DESKTOP=1
done < "$desktop_file" done < "$desktop_file"
PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="$desktop_file_new" PW_ALL_DF["$AMOUNT_GENERATE_BUTTONS"]="$desktop_file_new"
if [[ $NEW_DESKTOP == 1 ]] && [[ $SORT_WITH_TIME == enabled ]] ; then if [[ $SORT_WITH_TIME == enabled ]] && [[ $NEW_DESKTOP == 1 ]] ; then
unset NEW_DESKTOP unset NEW_DESKTOP
sed -i '/^#NEW_DESKTOP/d' "$desktop_file" sed -i '/^#NEW_DESKTOP/d' "$desktop_file"
PW_AMOUNT_NEW_DESKTOP+=($AMOUNT_GENERATE_BUTTONS) PW_AMOUNT_NEW_DESKTOP+=($AMOUNT_GENERATE_BUTTONS)
else else
PW_AMOUNT_OLD_DESKTOP+=($AMOUNT_GENERATE_BUTTONS) PW_AMOUNT_OLD_DESKTOP+=($AMOUNT_GENERATE_BUTTONS)
fi 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 /}
NEED_FIXES_DESKTOP=1
elif [[ ${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]} =~ ^"Exec=env \"$PORT_SCRIPTS_PATH/start.sh\" " ]] ; then
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /}
NEED_FIXES_DESKTOP=1
fi
# Для фикса битых #Time= # Для фикса битых #Time=
if [[ ! ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} =~ [0-9]+ ]] \ if [[ ! ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} =~ [0-9]+ ]] \
|| (( ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} >= 999999999 )) ; then || (( ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} >= 999999999 )) \
|| [[ $NEED_FIXES_DESKTOP == 1 ]]
then
portwine_exe=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//\"/} portwine_exe=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//\"/}
search_desktop_file search_desktop_file
unset portwine_exe unset portwine_exe NEED_FIXES_DESKTOP
PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=${TIME_CURRENT_ARRAY[0]} PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=$TIME_CURRENT
fi fi
(( AMOUNT_GENERATE_BUTTONS++ )) (( AMOUNT_GENERATE_BUTTONS++ ))
fi fi
...@@ -658,11 +659,10 @@ else ...@@ -658,11 +659,10 @@ else
# Переопределение элементов в массивах в зависимости от PW_GAME_TIME, от большего значения к меньшему. # Переопределение элементов в массивах в зависимости от PW_GAME_TIME, от большего значения к меньшему.
# 10 миллисекунд на 40 .desktop файлов, работает быстро # 10 миллисекунд на 40 .desktop файлов, работает быстро
if [[ $SORT_WITH_TIME == enabled ]] ; then if [[ $SORT_WITH_TIME == enabled ]] && [[ -n ${PW_GAME_TIME[1]} ]] ; then
for i in "${!PW_GAME_TIME[@]}" ; do for i in "${PW_AMOUNT_OLD_DESKTOP[@]}" ; do
for j in "${!PW_GAME_TIME[@]}" ; do for j in "${PW_AMOUNT_OLD_DESKTOP[@]}" ; do
if (( ${PW_GAME_TIME[$i]} > ${PW_GAME_TIME[$j]} )) \ if (( ${PW_GAME_TIME[$i]} > ${PW_GAME_TIME[$j]} )) ; then
&& [[ ! ${PW_AMOUNT_NEW_DESKTOP[*]} =~ $j ]] ; then
tmp_0=${PW_GAME_TIME[$i]} tmp_0=${PW_GAME_TIME[$i]}
tmp_1=${PW_ALL_DF[$i]} tmp_1=${PW_ALL_DF[$i]}
tmp_2=${PW_NAME_D_ICON[$i]} tmp_2=${PW_NAME_D_ICON[$i]}
...@@ -685,7 +685,7 @@ else ...@@ -685,7 +685,7 @@ else
# Генерация .desktop баттанов для главного меню # Генерация .desktop баттанов для главного меню
IFS=$'\n' 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\"%" PW_GENERATE_BUTTONS="--field= ${translations[Create shortcut...]}!${PW_GUI_ICON_PATH}/find_48.svg!:FBTNR%@bash -c \"button_click --normal pw_find_exe\"%"
for dp in ${PW_AMOUNT_NEW_DESKTOP[@]} ${PW_AMOUNT_OLD_DESKTOP[@]} ; do for dp in "${PW_AMOUNT_NEW_DESKTOP[@]}" "${PW_AMOUNT_OLD_DESKTOP[@]}" ; do
PW_NAME_D_ICON_48="${PW_ICON_PATH[dp]%.png}_48" PW_NAME_D_ICON_48="${PW_ICON_PATH[dp]%.png}_48"
PW_NAME_D_ICON_128="${PW_ICON_PATH[dp]%.png}" PW_NAME_D_ICON_128="${PW_ICON_PATH[dp]%.png}"
PW_NAME_D_ICON_NEW="${PW_NAME_D_ICON[dp]//\"/}" PW_NAME_D_ICON_NEW="${PW_NAME_D_ICON[dp]//\"/}"
...@@ -725,7 +725,6 @@ else ...@@ -725,7 +725,6 @@ else
--gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" \ --gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" \
--align-buttons --scroll --separator=" " ${PW_GENERATE_BUTTONS} 2>/dev/null & --align-buttons --scroll --separator=" " ${PW_GENERATE_BUTTONS} 2>/dev/null &
IFS="$orig_IFS" IFS="$orig_IFS"
unset PW_GENERATE_BUTTONS
"${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[3]}" --form --columns=3 --align-buttons --separator=";" --homogeneous-column \ "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[3]}" --form --columns=3 --align-buttons --separator=";" --homogeneous-column \
--gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" \ --gui-type-layout="${MAIN_MENU_GUI_TYPE_LAYOUT}" \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment