Compare commits
36 Commits
0483902b17
...
ef83c60711
Author | SHA1 | Date | |
---|---|---|---|
|
ef83c60711 | ||
|
6fa65cb925 | ||
|
e7745dc524 | ||
|
6df237dbf4 | ||
|
e23dd5485b | ||
|
3364792668 | ||
|
2d40a16d13 | ||
|
1fdb35e231 | ||
|
52a8f1ea01 | ||
|
8d9ae5a79f | ||
|
e9cdc85a41 | ||
|
d08147c52a | ||
|
205424f938 | ||
|
80c3f97482 | ||
|
5e06bf6761 | ||
|
db696351ff | ||
|
07175825f4 | ||
|
64b70f0137 | ||
|
383807a6b7 | ||
|
7fc4ea3a91 | ||
|
aa66606a59 | ||
f29808f4ce | |||
|
37bd14d8eb | ||
|
0f58886d72 | ||
1cb7fb5009 | |||
87e5d712f7 | |||
42eb2a99d5 | |||
625bc35ca4 | |||
7cb3be3d08 | |||
|
358cdea9d5 | ||
33061138f4
|
|||
259b6907d7 | |||
87bf672ea0 | |||
b78d173631 | |||
1b7dcf3c1a | |||
90f0515c70
|
@@ -2,6 +2,17 @@ You can help us in the development of the project on the website: https://linux-
|
||||
----------------------------------------
|
||||
Changelog:
|
||||
|
||||
###Scripts version 2368### / Date: 27.10.2024 / Download update size: 4 megabytes
|
||||
* added automatic installation of games (thanks to Chal55rus):
|
||||
* Goose Goose Duck
|
||||
* Miniworld
|
||||
* Toontown Rewritten
|
||||
* added disabling sleep mode during the game if gamemode is not used (thanks to Boria138)
|
||||
* fixes and optimization of the interface in the Prefix Manager (thanks to Htylol)
|
||||
* added the ability to change all shortcuts from the PortProton interface (thanks to Htylol)
|
||||
* fixed reset of the time spent in the game counter when moving the game to another directory, or deleting the shortcut (thanks to Htylol)
|
||||
* improved function for downloading covers when adding a game to the STEAM library (thanks to Boria138)
|
||||
|
||||
###Scripts version 2367### / Date: 25.10.2024 / Download update size: 4 megabytes
|
||||
* fixed the use of gamemode in the native version of PortProton
|
||||
* continued improvement of the functionality for creating labels and comments (thanks to Htylol)
|
||||
|
@@ -2,6 +2,17 @@
|
||||
-----------------------------------------
|
||||
История изменений:
|
||||
|
||||
###Scripts version 2368### / Дата: 27.10.2024 / Размер скачиваемого обновления: 4 мегабайта
|
||||
* добавлены автоустановки игр (спасибо Chal55rus):
|
||||
* Goose Goose Duck
|
||||
* Miniworld
|
||||
* Toontown Rewritten
|
||||
* добавлено отключение спящего режима в процессе игры, если не используется gamemode (спасибо Boria138)
|
||||
* исправления и оптимизации работы интерфейса в Менеджере префиксов (спасибо Htylol)
|
||||
* добавлена возможность изменения всех ярлыков из интерфейса PortProton (спасибо Htylol)
|
||||
* исправлен сброс счетчика времени проведенного в игре при перемещении игры в другой каталог, или удалёния ярлыка (спасибо Htylol)
|
||||
* улучшена функция скачивания обложек при добавлении игры в библиотеку STEAM (спасибо Boria138)
|
||||
|
||||
###Scripts version 2367### / Дата: 25.10.2024 / Размер скачиваемого обновления: 4 мегабайта
|
||||
* исправлено использование gamemode в нативной версии PortProton
|
||||
* продолжено улучшение функционала создания ярлыков и комментариев (спасибо Htylol)
|
||||
|
BIN
data_from_portwine/img/GGDLauncher.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
data_from_portwine/img/Goose_Goose_Duck.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
data_from_portwine/img/Goose_Goose_Duck_48.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB |
BIN
data_from_portwine/img/gui/doomsday.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
data_from_portwine/img/gui/goosegooseduck.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
data_from_portwine/img/gui/miniworld.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
data_from_portwine/img/gui/toontownrewritten.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
@@ -7,7 +7,7 @@
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-10-24 12:43+0500\n"
|
||||
"POT-Creation-Date: 2024-10-26 06:41+0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -59,10 +59,13 @@ msgstr ""
|
||||
msgid "Create shortcut for select file..."
|
||||
msgstr ""
|
||||
|
||||
msgid "DELETE SHORTCUT"
|
||||
msgid "CHANGE SHORTCUT"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete shortcut for select file..."
|
||||
msgid "Change shortcut for select file..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Launching"
|
||||
msgstr ""
|
||||
|
||||
msgid "Base settings"
|
||||
@@ -227,9 +230,6 @@ msgstr ""
|
||||
msgid "Downloading"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launching"
|
||||
msgstr ""
|
||||
|
||||
msgid "day"
|
||||
msgstr ""
|
||||
|
||||
@@ -1426,6 +1426,9 @@ msgstr ""
|
||||
msgid "The shortcut will be created in the PortProton directory."
|
||||
msgstr ""
|
||||
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add shortcut to MENU -> GAMES"
|
||||
msgstr ""
|
||||
|
||||
@@ -1435,19 +1438,18 @@ msgstr ""
|
||||
msgid "Add shortcut to STEAM library"
|
||||
msgstr ""
|
||||
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
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?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Restarting STEAM... Please wait."
|
||||
msgstr ""
|
||||
|
||||
msgid "The shortcut will be changed in the PortProton directory."
|
||||
msgstr ""
|
||||
|
||||
msgid "REMOVE SHORTCUT"
|
||||
msgstr ""
|
||||
|
||||
msgid "Could not find the file:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1455,6 +1457,9 @@ msgid "ATTENTION:\\nIf you forgot to mount the disk with the running "
|
||||
"application, click CANCEL!"
|
||||
msgstr ""
|
||||
|
||||
msgid "DELETE SHORTCUT"
|
||||
msgstr ""
|
||||
|
||||
msgid "Starting prefix manager:"
|
||||
msgstr ""
|
||||
|
||||
|
@@ -8,15 +8,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-10-24 13:48+0500\n"
|
||||
"PO-Revision-Date: 2024-10-24 13:51+0500\n"
|
||||
"POT-Creation-Date: 2024-10-26 06:41+0500\n"
|
||||
"PO-Revision-Date: 2024-10-26 13:58+0500\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: es_ES\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.4.4\n"
|
||||
|
||||
msgid ""
|
||||
"A running PortProton session was detected.\\nDo you want to end the previous "
|
||||
@@ -64,11 +64,14 @@ msgstr "CREAR ACCESO DIRECTO"
|
||||
msgid "Create shortcut for select file..."
|
||||
msgstr "Crear un acceso directo para el archivo seleccionado..."
|
||||
|
||||
msgid "DELETE SHORTCUT"
|
||||
msgstr "ELIMINAR ACCESO DIRECTO"
|
||||
msgid "CHANGE SHORTCUT"
|
||||
msgstr "CAMBIAR ACCESO DIRECTO"
|
||||
|
||||
msgid "Delete shortcut for select file..."
|
||||
msgstr "Eliminar el acceso directo del archivo seleccionado..."
|
||||
msgid "Change shortcut for select file..."
|
||||
msgstr "Cambiar un acceso directo para el archivo seleccionado..."
|
||||
|
||||
msgid "Launching"
|
||||
msgstr "Lanzamiento"
|
||||
|
||||
msgid "Base settings"
|
||||
msgstr "Configuración básica"
|
||||
@@ -247,9 +250,6 @@ msgstr ""
|
||||
msgid "Downloading"
|
||||
msgstr "Descargando"
|
||||
|
||||
msgid "Launching"
|
||||
msgstr "Lanzamiento"
|
||||
|
||||
msgid "day"
|
||||
msgstr "día"
|
||||
|
||||
@@ -1858,6 +1858,9 @@ msgstr "¿Realmente deseas restablecer la configuración de"
|
||||
msgid "The shortcut will be created in the PortProton directory."
|
||||
msgstr "El acceso directo se creará en el directorio de PortProton."
|
||||
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgid "Add shortcut to MENU -> GAMES"
|
||||
msgstr "Agregar acceso directo a MENU -> JUEGOS"
|
||||
|
||||
@@ -1867,16 +1870,6 @@ msgstr "Agregar acceso directo al escritorio"
|
||||
msgid "Add shortcut to STEAM library"
|
||||
msgstr "Agregar acceso directo a la biblioteca de STEAM"
|
||||
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgid ""
|
||||
"A higher number of duplicate desktop files were found for this file."
|
||||
"\\nShould I delete the extra ones or not?"
|
||||
msgstr ""
|
||||
"Se encontraron un mayor número de archivos de escritorio duplicados para "
|
||||
"este archivo.\\n¿Debería eliminar los adicionales o no?"
|
||||
|
||||
msgid "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?"
|
||||
msgstr ""
|
||||
"Para agregar el acceso directo a STEAM, es necesario reiniciar.\\n\\¿Quieres "
|
||||
@@ -1885,6 +1878,12 @@ msgstr ""
|
||||
msgid "Restarting STEAM... Please wait."
|
||||
msgstr "Restarting STEAM... Please wait."
|
||||
|
||||
msgid "The shortcut will be changed in the PortProton directory."
|
||||
msgstr "El acceso directo se cambiará en el directorio de PortProton."
|
||||
|
||||
msgid "REMOVE SHORTCUT"
|
||||
msgstr "ELIMINAR ACCESO DIRECTO"
|
||||
|
||||
msgid "Could not find the file:"
|
||||
msgstr "No se pudo encontrar el archivo:"
|
||||
|
||||
@@ -1896,6 +1895,9 @@ msgstr ""
|
||||
"Si olvidaste montar el disco con la aplicación en ejecución, ¡haz clic en "
|
||||
"CANCELAR!"
|
||||
|
||||
msgid "DELETE SHORTCUT"
|
||||
msgstr "ELIMINAR ACCESO DIRECTO"
|
||||
|
||||
msgid "Starting prefix manager:"
|
||||
msgstr "Iniciando el administrador de prefijos:"
|
||||
|
||||
@@ -2173,6 +2175,16 @@ msgstr ""
|
||||
msgid "Please wait. downloading covers for"
|
||||
msgstr "Por favor, espera. Descargando portadas para"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A higher number of duplicate desktop files were found for this file."
|
||||
#~ "\\nShould I delete the extra ones or not?"
|
||||
#~ msgstr ""
|
||||
#~ "Se encontraron un mayor número de archivos de escritorio duplicados para "
|
||||
#~ "este archivo.\\n¿Debería eliminar los adicionales o no?"
|
||||
|
||||
#~ msgid "Delete shortcut for select file..."
|
||||
#~ msgstr "Eliminar el acceso directo del archivo seleccionado..."
|
||||
|
||||
#~ msgid "Forced activation of vertical sync"
|
||||
#~ msgstr "Activación forzada de la sincronización vertical"
|
||||
|
||||
|
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-10-24 12:43+0500\n"
|
||||
"PO-Revision-Date: 2024-10-24 12:45+0500\n"
|
||||
"POT-Creation-Date: 2024-10-26 06:41+0500\n"
|
||||
"PO-Revision-Date: 2024-10-26 06:43+0500\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: ru_RU\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"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"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.4.4\n"
|
||||
|
||||
msgid ""
|
||||
"A running PortProton session was detected.\\nDo you want to end the previous "
|
||||
@@ -64,11 +64,14 @@ msgstr "СОЗДАТЬ ЯРЛЫК"
|
||||
msgid "Create shortcut for select file..."
|
||||
msgstr "Создать ярлык для выбранного файла..."
|
||||
|
||||
msgid "DELETE SHORTCUT"
|
||||
msgstr "УДАЛИТЬ ЯРЛЫК"
|
||||
msgid "CHANGE SHORTCUT"
|
||||
msgstr "ИЗМЕНИТЬ ЯРЛЫК"
|
||||
|
||||
msgid "Delete shortcut for select file..."
|
||||
msgstr "Удалить ярлык для выбранного файла..."
|
||||
msgid "Change shortcut for select file..."
|
||||
msgstr "Изменить ярлык для выбранного файла..."
|
||||
|
||||
msgid "Launching"
|
||||
msgstr "Запуск"
|
||||
|
||||
msgid "Base settings"
|
||||
msgstr "Основные настройки"
|
||||
@@ -249,9 +252,6 @@ msgstr ""
|
||||
msgid "Downloading"
|
||||
msgstr "Загружается"
|
||||
|
||||
msgid "Launching"
|
||||
msgstr "Запуск"
|
||||
|
||||
msgid "day"
|
||||
msgstr "день"
|
||||
|
||||
@@ -1836,6 +1836,9 @@ msgstr "Вы действительно хотите сбросить настр
|
||||
msgid "The shortcut will be created in the PortProton directory."
|
||||
msgstr "Ярлык будет создан в каталоге PortProton."
|
||||
|
||||
msgid "Name"
|
||||
msgstr "Имя"
|
||||
|
||||
msgid "Add shortcut to MENU -> GAMES"
|
||||
msgstr "Добавить ярлык в МЕНЮ -> ИГРЫ"
|
||||
|
||||
@@ -1845,14 +1848,6 @@ msgstr "Добавить ярлык на рабочий стол"
|
||||
msgid "Add shortcut to STEAM library"
|
||||
msgstr "Добавить ярлык в библиотеку STEAM"
|
||||
|
||||
msgid "Name"
|
||||
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 "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?"
|
||||
msgstr ""
|
||||
"Для добавления ярлыка в STEAM требуется перезапуск.\\n\\nПерезапустить STEAM "
|
||||
@@ -1861,6 +1856,12 @@ msgstr ""
|
||||
msgid "Restarting STEAM... Please wait."
|
||||
msgstr "Перезапускаем STEAM... Пожалуйста, подождите."
|
||||
|
||||
msgid "The shortcut will be changed in the PortProton directory."
|
||||
msgstr "Ярлык будет изменён в каталоге PortProton."
|
||||
|
||||
msgid "REMOVE SHORTCUT"
|
||||
msgstr "УДАЛИТЬ ЯРЛЫК"
|
||||
|
||||
msgid "Could not find the file:"
|
||||
msgstr "Не удалось найти файл:"
|
||||
|
||||
@@ -1871,6 +1872,9 @@ msgstr ""
|
||||
"ВНИМАНИЕ:\\nЕсли вы забыли примонтировать диск с запускаемым приложением, "
|
||||
"нажмите ОТМЕНИТЬ!"
|
||||
|
||||
msgid "DELETE SHORTCUT"
|
||||
msgstr "УДАЛИТЬ ЯРЛЫК"
|
||||
|
||||
msgid "Starting prefix manager:"
|
||||
msgstr "Запуск менеджера префиксов:"
|
||||
|
||||
@@ -2157,6 +2161,14 @@ msgstr "SteamGridDB не отвечает, принудительно отклю
|
||||
msgid "Please wait. downloading covers for"
|
||||
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 "Delete shortcut for select file..."
|
||||
#~ msgstr "Удалить ярлык для выбранного файла..."
|
||||
|
||||
#~ msgid "Forced activation of vertical sync"
|
||||
#~ msgstr "Принудительное включение вертикальной синхронизации"
|
||||
|
||||
|
@@ -150,7 +150,7 @@ function downloadArtFromSteamGridDB {
|
||||
[[ -n "$SEARCHHUMOR" ]] && SGDB_ENDPOINT_STR+="&humor=${SEARCHHUMOR}"
|
||||
[[ -n "$SEARCHEPILEPSY" ]] && SGDB_ENDPOINT_STR+="&epilepsy=${SEARCHEPILEPSY}"
|
||||
|
||||
|
||||
RESPONSE=$(curl -H "Authorization: Bearer $SGDBAPIKEY" -s "$SGDB_ENDPOINT_STR" 2> >(grep -v "SSL_INIT"))
|
||||
if ! jq -e '.success' <<< "$RESPONSE" > /dev/null; then
|
||||
echo "The server response wasn't 'success' for this batch of requested games."
|
||||
return
|
||||
@@ -194,7 +194,7 @@ function downloadArtFromSteamGridDB {
|
||||
fi
|
||||
|
||||
if [[ "$STARTDL" -eq 1 ]] ; then
|
||||
curl -f -# -A 'Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)' -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' -L "$DLSRC" -o "$DLDST"
|
||||
curl -f -# -A 'Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)' -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' -L "$DLSRC" -o "$DLDST" 2>&1
|
||||
fi
|
||||
else
|
||||
echo "No grid found to download for '$SEARCHID' - maybe loosen filters?"
|
||||
@@ -280,10 +280,11 @@ function commandlineGetSteamGridDBArtwork {
|
||||
SGDBSEARCHENDPOINT_HERO="${BASESTEAMGRIDDBAPI}/heroes/${SGDBENDPOINTTYPE}"
|
||||
SGDBSEARCHENDPOINT_LOGO="${BASESTEAMGRIDDBAPI}/logos/${SGDBENDPOINTTYPE}"
|
||||
SGDBSEARCHENDPOINT_BOXART="${BASESTEAMGRIDDBAPI}/grids/${SGDBENDPOINTTYPE}" # Grid endpoint is used for Boxart and Tenfoot, which SteamGridDB counts as vertical/horizontal grids respectively
|
||||
SGDB_ENDPOINT_STR="${SGDBSEARCHENDPOINT_HERO}/$(echo "$GSGDBA_APPID" | awk '{print $1}' | paste -s -d, -)?"
|
||||
SGDB_ENDPOINT_STR_TEST="${SGDBSEARCHENDPOINT_HERO}/$(echo "$GSGDBA_APPID" | awk '{print $1}' | paste -s -d, -)?"
|
||||
|
||||
|
||||
set -o pipefail
|
||||
RESPONSE=$(curl -H "Authorization: Bearer $SGDBAPIKEY" -s "$SGDB_ENDPOINT_STR" 2> >(grep -v "SSL_INIT"))
|
||||
TEST_RESPONSE=$(curl -H "Authorization: Bearer $SGDBAPIKEY" -s "$SGDB_ENDPOINT_STR_TEST" 2> >(grep -v "SSL_INIT"))
|
||||
if [[ "${PIPESTATUS[0]}" != 0 ]] && [[ "$DOWNLOAD_STEAM_GRID" != 0 ]]; then
|
||||
pw_notify_send -i info \
|
||||
"${translations[SteamGridDB is not responding, forcing cover download to be disabled]}"
|
||||
@@ -291,18 +292,20 @@ function commandlineGetSteamGridDBArtwork {
|
||||
export DOWNLOAD_STEAM_GRID="0"
|
||||
return
|
||||
fi
|
||||
if [[ ! -z "$GSGDBA_FOUNDGAMEID" ]] ; then
|
||||
pw_start_progress_bar_block "${translations[Please wait. downloading covers for]} $NOSTAPPNAME"
|
||||
# Download Hero, Logo, Boxart, Tenfoot from SteamGridDB from given endpoint using given AppID
|
||||
# On SteamGridDB tenfoot called horizontal Steam grid, so fetch it by passing specific dimensions matching this -- Users can override this, but default is what SteamGridDB expects for the tenfoot sizes
|
||||
|
||||
# Download Hero, Logo, Boxart, Tenfoot from SteamGridDB from given endpoint using given AppID
|
||||
# On SteamGridDB tenfoot called horizontal Steam grid, so fetch it by passing specific dimensions matching this -- Users can override this, but default is what SteamGridDB expects for the tenfoot sizes
|
||||
if [[ ! -z "$GSGDBA_FOUNDGAMEID" ]] ; then
|
||||
pw_start_progress_bar_block "${translations[Please wait. downloading covers for]} $NOSTAPPNAME"
|
||||
|
||||
downloadArtFromSteamGridDB "$GSGDBA_APPID" "$SGDBSEARCHENDPOINT_HERO" "${GSGDBA_FILENAME}_hero" "$SGDBHEROSTYLES" "$SGDBHERODIMS" "$SGDBHEROTYPES" "$SGDBHERONSFW" "$SGDBHEROHUMOR" "$SGDBHEROEPILEPSY" "$GSGDBA_HASFILE" "$GSGDBA_APPLYARTWORK"
|
||||
# Logo doesn't have dimensions, so it's left intentionally blank
|
||||
downloadArtFromSteamGridDB "$GSGDBA_APPID" "$SGDBSEARCHENDPOINT_LOGO" "${GSGDBA_FILENAME}_logo" "$SGDBLOGOSTYLES" "" "$SGDBLOGOTYPES" "$SGDBLOGONSFW" "$SGDBLOGOHUMOR" "$SGDBLOGOEPILEPSY" "$GSGDBA_HASFILE" "$GSGDBA_APPLYARTWORK"
|
||||
downloadArtFromSteamGridDB "$GSGDBA_APPID" "$SGDBSEARCHENDPOINT_BOXART" "${GSGDBA_FILENAME}p" "$SGDBBOXARTSTYLES" "$SGDBBOXARTDIMS" "$SGDBBOXARTTYPES" "$SGDBBOXARTNSFW" "$SGDBBOXARTHUMOR" "$SGDBBOXARTEPILEPSY" "$GSGDBA_HASFILE" "$GSGDBA_APPLYARTWORK"
|
||||
downloadArtFromSteamGridDB "$GSGDBA_APPID" "$SGDBSEARCHENDPOINT_BOXART" "${GSGDBA_FILENAME}" "$SGDBTENFOOTSTYLES" "$SGDBTENFOOTDIMS" "$SGDBTENFOOTTYPES" "$SGDBTENFOOTNSFW" "$SGDBTENFOOTHUMOR" "$SGDBTENFOOTEPILEPSY" "$GSGDBA_HASFILE" "$GSGDBA_APPLYARTWORK"
|
||||
|
||||
pw_stop_progress_bar
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
## Fetch artwork from SteamGridDB
|
||||
|
@@ -248,9 +248,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
|
||||
[[ ! -d $PW_CACHE_LANG_PATH ]] && create_new_dir "$PW_CACHE_LANG_PATH"
|
||||
cat << EOF > "${PW_CACHE_LANG_PATH}/$LANGUAGE"
|
||||
#!/usr/bin/env bash
|
||||
TRANSLATIONS_VER=$scripts_install_ver
|
||||
@@ -769,10 +767,10 @@ background_pid () {
|
||||
case $arg1 in
|
||||
--start)
|
||||
eval "$arg2 &"
|
||||
PID=$!
|
||||
local PID=$!
|
||||
export bg_pid"${arg3}"="$PID" ;;
|
||||
--end)
|
||||
PID=$(get_bg_pid bg_pid"${arg3}")
|
||||
local PID=$(get_bg_pid bg_pid"${arg3}")
|
||||
[[ -z $PID ]] && return 1
|
||||
wait "$PID" 2>/dev/null && return 0 ;;
|
||||
esac
|
||||
@@ -792,7 +790,6 @@ unpack () {
|
||||
silent) local silent=true ;;
|
||||
esac
|
||||
|
||||
|
||||
# If gamescope session is active, use PW_TERM for unpack
|
||||
if check_gamescope_session ; then
|
||||
$PW_TERM "echo ; echo ; echo \"Unpacking file: $1. Please wait...\" ; $command \"$1\" -C \"$2\""
|
||||
@@ -849,80 +846,74 @@ debug_timer () {
|
||||
fi
|
||||
}
|
||||
|
||||
# Поиск нужного .desktop файла по $portwine_exe
|
||||
# Поиск нужного .desktop файла по $portwine_exe (для показа в комментариях нужного времени)
|
||||
# Параллельное создание базы по времени после завершения приложения
|
||||
search_desktop_file () {
|
||||
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
|
||||
count=0
|
||||
local desktop_file desktop_file_new EXEC_DESKTOP line1 line2 TIME_TOTAL
|
||||
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
|
||||
while IFS= read -r line1 ; do
|
||||
if [[ $line1 =~ ^Exec= ]] ; then
|
||||
if check_flatpak ; then
|
||||
EXEC_DESKTOP=${line//Exec=flatpak run ru.linux_gaming.PortProton /}
|
||||
EXEC_DESKTOP=${line1//Exec=flatpak run ru.linux_gaming.PortProton /}
|
||||
else
|
||||
EXEC_DESKTOP=${line//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /}
|
||||
EXEC_DESKTOP=${line1//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /}
|
||||
fi
|
||||
fi
|
||||
[[ $line =~ ^#Time= ]] && TIME_CURRENT_PROXY=${line//#Time=/}
|
||||
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 [[ -n $TIME_CURRENT_PROXY ]] ; then
|
||||
TIME_CURRENT=$TIME_CURRENT_PROXY
|
||||
TIME_CURRENT_ARRAY+=($TIME_CURRENT)
|
||||
# Если существует несколько .desktop файлов на один и тот же .exe файл,
|
||||
# то среди них время берётся из того .desktop файла, в котором проведено дольше времени
|
||||
# и данное время будет потом записываться во все .desktop файлы у которых общий .exe файл
|
||||
if [[ -n ${TIME_CURRENT_ARRAY[1]} ]] ; then
|
||||
for i in "${!TIME_CURRENT_ARRAY[@]}" ; do
|
||||
for j in "${!TIME_CURRENT_ARRAY[@]}" ; do
|
||||
if (( ${TIME_CURRENT_ARRAY[$i]} > ${TIME_CURRENT_ARRAY[$j]} )) ; then
|
||||
tmp=${TIME_CURRENT_ARRAY[$i]}
|
||||
TIME_CURRENT_ARRAY[i]=${TIME_CURRENT_ARRAY[$j]}
|
||||
TIME_CURRENT_ARRAY[j]=$tmp
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
TIME_CURRENT="${TIME_CURRENT_ARRAY[0]}"
|
||||
# Для битых #Time=
|
||||
if [[ ! $TIME_CURRENT =~ [0-9]+ ]] \
|
||||
|| (( TIME_CURRENT >= 999999999 )) ; then
|
||||
TIME_CURRENT="0"
|
||||
fi
|
||||
while IFS=" " read -r -a line2 ; do
|
||||
if [[ ${line2[1]} == "$ENTRY_POINT" ]] ; then
|
||||
break
|
||||
fi
|
||||
DESKTOP_FILES_ARRAY["$count"]="$desktop_file"
|
||||
(( count++ ))
|
||||
done < "$PORT_WINE_TMP_PATH/statistics"
|
||||
if [[ $portwine_exe == "${EXEC_DESKTOP//\"/}" ]] ; then
|
||||
DESKTOP_CORRECT_FILE="$desktop_file"
|
||||
fi
|
||||
unset TIME_CURRENT_PROXY
|
||||
fi
|
||||
fi
|
||||
done
|
||||
IFS="$orig_IFS"
|
||||
|
||||
[[ -z $TIME_CURRENT ]] && TIME_CURRENT=0
|
||||
if [[ -n ${line2[2]} ]]
|
||||
then TIME_CURRENT=${line2[2]}
|
||||
else TIME_CURRENT=0
|
||||
fi
|
||||
export TIME_CURRENT
|
||||
|
||||
# Проверка новых десктоп файлов, чтобы их можно было сортировать первыми при первом создании в главном меню
|
||||
if [[ $PW_NEW_DESKTOP == 1 ]] && [[ ${line2[3]} != NEW_DESKTOP ]] ; then
|
||||
if [[ -n ${line2[1]} ]] ; then
|
||||
sed -i "s|$ENTRY_POINT $TIME_CURRENT OLD_DESKTOP|$ENTRY_POINT $TIME_CURRENT NEW_DESKTOP|" "$PORT_WINE_TMP_PATH/statistics"
|
||||
else
|
||||
echo "${portwine_exe// /#@_@#} $ENTRY_POINT $TIME_CURRENT NEW_DESKTOP" >> "$PORT_WINE_TMP_PATH/statistics"
|
||||
fi
|
||||
fi
|
||||
unset PW_NEW_DESKTOP
|
||||
# Когда приложение было запущено и завершено
|
||||
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
|
||||
if [[ -n ${line2[1]} ]] ; then
|
||||
# Когда есть предыдущее время
|
||||
sed -i "s|$ENTRY_POINT $TIME_CURRENT|$ENTRY_POINT $TIME_TOTAL|" "$PORT_WINE_TMP_PATH/statistics"
|
||||
else
|
||||
# Когда только запустили приложение первый раз
|
||||
echo "${portwine_exe// /#@_@#} $ENTRY_POINT $TIME_TOTAL OLD_DESKTOP" >> "$PORT_WINE_TMP_PATH/statistics"
|
||||
fi
|
||||
# Здесь добавляются новые линии для статистики по аналогии, к примеру ${line2[4]}
|
||||
# L4 важен, чтобы не было путаницы из-за sed, то что используется \(.*\), для ${line2[5]} это будет L5 и т.д.
|
||||
if [[ -z ${line2[4]} ]] ; then
|
||||
line2[4]=1
|
||||
sed -i "s|$ENTRY_POINT \(.*\)|$ENTRY_POINT \1 L4-${line2[4]}|" "$PORT_WINE_TMP_PATH/statistics"
|
||||
else
|
||||
line2[4]=${line2[4]//L4-/}
|
||||
NUMBER_OF_STARTS=$(( line2[4] + 1 ))
|
||||
sed -i "s|$ENTRY_POINT \(.*\) L4-${line2[4]}|$ENTRY_POINT \1 L4-$NUMBER_OF_STARTS|" "$PORT_WINE_TMP_PATH/statistics"
|
||||
fi
|
||||
fi
|
||||
# Ремонтирует путь на новый, если вдруг путь до .exe файла битый или изменился, но .exe файл он опознал
|
||||
if [[ -n ${line2[1]} ]] && [[ ${line2[0]} != "${portwine_exe// /#@_@#}" ]] ; then
|
||||
[[ -z $TIME_TOTAL ]] && TIME_TOTAL=$TIME_CURRENT
|
||||
sed -i "s|${line2[0]} $ENTRY_POINT $TIME_CURRENT|${portwine_exe// /#@_@#} $ENTRY_POINT $TIME_TOTAL|" "$PORT_WINE_TMP_PATH/statistics"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -938,9 +929,9 @@ create_name_desktop () {
|
||||
elif [[ -n $name_desktop ]] ; then
|
||||
DESKTOP_NAME_FILE="$name_desktop"
|
||||
unset name_desktop
|
||||
elif [[ -n ${DESKTOP_FILES_ARRAY[0]} ]] \
|
||||
&& [[ -z ${DESKTOP_FILES_ARRAY[1]} ]] ; then
|
||||
DESKTOP_NAME_FILE="${DESKTOP_FILES_ARRAY[0]//"$PORT_WINE_PATH/"/}"
|
||||
elif [[ -n $DESKTOP_CORRECT_FILE ]] ; then
|
||||
DESKTOP_NAME_FILE="${DESKTOP_CORRECT_FILE//"$PORT_WINE_PATH/"/}"
|
||||
unset DESKTOP_CORRECT_FILE
|
||||
DESKTOP_NAME_FILE="${DESKTOP_NAME_FILE//.desktop/}"
|
||||
fi
|
||||
|
||||
@@ -2483,6 +2474,7 @@ pw_create_gui_png () {
|
||||
fi
|
||||
if [[ -z "$PORTPROTON_NAME" ]] \
|
||||
|| [[ -z "$FILE_DESCRIPTION" ]] \
|
||||
|| [[ -z "$ENTRY_POINT" ]] \
|
||||
|| [[ "$PW_NO_RESTART_PPDB" == "1" ]]
|
||||
then
|
||||
if [[ -n "${PORTWINE_CREATE_SHORTCUT_NAME}" ]] ; then
|
||||
@@ -2492,6 +2484,7 @@ pw_create_gui_png () {
|
||||
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")
|
||||
ENTRY_POINT=$(sed -n 's/^Entry Point\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
|
||||
else
|
||||
print_error "exiftool - broken!"
|
||||
fi
|
||||
@@ -2500,6 +2493,7 @@ pw_create_gui_png () {
|
||||
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")
|
||||
ENTRY_POINT=$(sed -n 's/^Entry Point\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
|
||||
fi
|
||||
|
||||
if [[ "$PW_PRODUCTNAME" =~ (Launcher|RU) ]]
|
||||
@@ -2508,7 +2502,7 @@ pw_create_gui_png () {
|
||||
fi
|
||||
|
||||
if [[ -n "$PW_PRODUCTNAME" ]] \
|
||||
&& [[ "$PW_PRODUCTNAME" != Bootstrap* ]]
|
||||
&& [[ ! "$PW_PRODUCTNAME" =~ Bootstrap ]]
|
||||
then
|
||||
PORTPROTON_NAME="$PW_PRODUCTNAME"
|
||||
else
|
||||
@@ -2518,7 +2512,7 @@ pw_create_gui_png () {
|
||||
|
||||
PORTPROTON_NAME="$(echo "${PORTPROTON_NAME}" | sed "s/\`//g" | sed "s/\"//g" | sed "s/'//g" | sed "s/\!//g")"
|
||||
export PORTPROTON_NAME
|
||||
edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION
|
||||
edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION ENTRY_POINT
|
||||
fi
|
||||
|
||||
resize_png "$portwine_exe" "${PORTPROTON_NAME}" "128"
|
||||
@@ -2925,7 +2919,7 @@ start_portwine () {
|
||||
elif [[ "$PW_USE_GAMEMODE" = "1" ]] \
|
||||
&& [[ -n "$DBUS_SESSION_BUS_ADDRESS" ]]
|
||||
then
|
||||
if command -v systemctl \
|
||||
if command -v systemctl &>/dev/null \
|
||||
&& (systemctl is-active --quiet ananicy.service \
|
||||
|| systemctl is-active --quiet ananicy-cpp.service)
|
||||
then
|
||||
@@ -2973,6 +2967,13 @@ start_portwine () {
|
||||
export GAMEMODERUN=0
|
||||
export PW_GAMEMODERUN_SLR=""
|
||||
fi
|
||||
|
||||
if command -v systemd-inhibit &>/dev/null \
|
||||
&& [[ "$GAMEMODERUN" != "1" ]]
|
||||
then
|
||||
PW_INHIBIT_SLR="systemd-inhibit --mode=block --who=ru.linux_gaming.PortProton --why=${PW_NAME_DESKTOP_PROXY// /_}"
|
||||
print_info "Screensaver will be inhibit"
|
||||
fi
|
||||
pw_other_fixes
|
||||
|
||||
# enabled BattleEye_Runtime and EasyAntiCheat_Runtime
|
||||
@@ -3766,13 +3767,13 @@ pw_run () {
|
||||
if [[ -n "${PATH_TO_GAME}" ]] \
|
||||
&& [[ -d "${PATH_TO_GAME}" ]]
|
||||
then
|
||||
cd "${PATH_TO_GAME}" || fatal
|
||||
cd "${PATH_TO_GAME}" || :
|
||||
elif [[ -f "$portwine_exe" ]]
|
||||
then
|
||||
PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )"
|
||||
cd "${PATH_TO_GAME}" || fatal
|
||||
cd "${PATH_TO_GAME}" || :
|
||||
else
|
||||
cd "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" || fatal
|
||||
cd "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" || :
|
||||
fi
|
||||
PW_LOG_TO_FILE="${PORT_WINE_PATH}/PortProton.log"
|
||||
PW_LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}"
|
||||
@@ -3793,6 +3794,7 @@ pw_run () {
|
||||
print_info "Log from RUNTIME and WINE:"
|
||||
${PW_RUN_GAMESCOPE} \
|
||||
${PW_POWERPROFILECTL_SLR} \
|
||||
${PW_INHIBIT_SLR}\
|
||||
${pw_runtime} \
|
||||
LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \
|
||||
LD_PRELOAD="${PW_LD_PRELOAD}" \
|
||||
@@ -3811,6 +3813,7 @@ pw_run () {
|
||||
echo "Log WINE:" > "${PW_LOG_TO_FILE}"
|
||||
${PW_RUN_GAMESCOPE} \
|
||||
${PW_POWERPROFILECTL_SLR} \
|
||||
${PW_INHIBIT_SLR}\
|
||||
${pw_runtime} \
|
||||
LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \
|
||||
LD_PRELOAD="${PW_LD_PRELOAD}" \
|
||||
@@ -3846,6 +3849,7 @@ pw_run () {
|
||||
${PW_POWERPROFILECTL_SLR} \
|
||||
${PW_MANGOHUD_SLR} \
|
||||
${PW_DISPLAY} \
|
||||
${PW_INHIBIT_SLR}\
|
||||
"${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}"
|
||||
wait_wineserver
|
||||
else
|
||||
@@ -3864,6 +3868,7 @@ pw_run () {
|
||||
${PW_POWERPROFILECTL_SLR} \
|
||||
${PW_MANGOHUD_SLR} \
|
||||
${PW_DISPLAY} \
|
||||
${PW_INHIBIT_SLR}\
|
||||
"${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]}
|
||||
wait_wineserver
|
||||
fi
|
||||
@@ -3964,7 +3969,7 @@ pw_winereg () {
|
||||
}
|
||||
|
||||
pw_start_cont_xterm () {
|
||||
cd "$HOME" || fatal
|
||||
cd "$HOME" || :
|
||||
unset PW_SANDBOX_HOME_PATH
|
||||
pw_init_runtime
|
||||
${pw_runtime} \
|
||||
@@ -4153,27 +4158,17 @@ pw_start_progress_bar_install_game () {
|
||||
}
|
||||
|
||||
pw_stop_progress_bar () {
|
||||
sleep 0.1
|
||||
for PW_KILL_YAD_PID in "$PW_YAD_PID_PROGRESS_BAR_BLOCK" "$PW_YAD_PID_PROGRESS_BAR_CS" \
|
||||
"$PW_YAD_PID_PFX_COVER_UI" "$PW_YAD_PID_PROGRESS_BAR_COVER"
|
||||
do
|
||||
kill -s SIGUSR1 "$PW_KILL_YAD_PID" &>/dev/null
|
||||
done
|
||||
unset PW_YAD_PID_PROGRESS_BAR_BLOCK PW_YAD_PID_PROGRESS_BAR_CS \
|
||||
PW_YAD_PID_PFX_COVER_UI PW_YAD_PID_PROGRESS_BAR_COVER
|
||||
return 0
|
||||
[[ -n $PW_YAD_PID_PROGRESS_BAR_BLOCK ]] && kill -s SIGUSR1 "$PW_YAD_PID_PROGRESS_BAR_BLOCK" &>/dev/null
|
||||
[[ -n $PW_YAD_PID_PROGRESS_BAR_CS ]] && kill -s SIGUSR1 "$PW_YAD_PID_PROGRESS_BAR_CS" &>/dev/null
|
||||
[[ -n $PW_YAD_PID_PFX_COVER_UI ]] && kill -s SIGUSR1 "$PW_YAD_PID_PFX_COVER_UI" &>/dev/null
|
||||
[[ -n $PW_YAD_PID_PROGRESS_BAR_COVER ]] && kill -s SIGUSR1 "$PW_YAD_PID_PROGRESS_BAR_COVER" &>/dev/null
|
||||
unset PW_YAD_PID_PROGRESS_BAR_BLOCK PW_YAD_PID_PROGRESS_BAR_CS
|
||||
unset PW_YAD_PID_PFX_COVER_UI PW_YAD_PID_PROGRESS_BAR_COVER
|
||||
}
|
||||
export -f pw_stop_progress_bar
|
||||
|
||||
pw_stop_progress_bar_cover () {
|
||||
kill -s KILL "$PW_YAD_PID_PROGRESS_BAR_COVER" &>/dev/null
|
||||
return 0
|
||||
}
|
||||
export -f pw_stop_progress_bar_cover
|
||||
|
||||
pw_stop_progress_bar_cover_block () {
|
||||
kill -s KILL "$PW_YAD_PID_PROGRESS_BAR_COVER_BLOCK" &>/dev/null
|
||||
return 0
|
||||
}
|
||||
export -f pw_stop_progress_bar_cover_block
|
||||
|
||||
@@ -5600,25 +5595,22 @@ portwine_create_shortcut () {
|
||||
--button="${translations[CANCEL]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":2 \
|
||||
--button="${translations[CREATE SHORTCUT]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0 2>/dev/null)
|
||||
PW_YAD_OUT=$?
|
||||
portwine_output_yad_shortcut
|
||||
}
|
||||
|
||||
portwine_output_yad_shortcut () {
|
||||
if [[ "$PW_YAD_OUT" == "0" ]] ; then
|
||||
name_desktop=$(echo "$OUTPUT" | awk -F'|' '{print $1}' | sed "s/\`//g" | sed "s/\"//g" | sed "s/'//g" | sed "s/\!//g")
|
||||
PW_SHORTCUT_MENU=$(echo "$OUTPUT" | awk -F'|' '{print $2}')
|
||||
PW_SHORTCUT_DESKTOP=$(echo "$OUTPUT" | awk -F'|' '{print $3}')
|
||||
PW_SHORTCUT_STEAM=$(echo "$OUTPUT" | awk -F'|' '{print $4}')
|
||||
|
||||
edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM
|
||||
|
||||
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
|
||||
fi
|
||||
else
|
||||
try_remove_file "${PORT_WINE_PATH}/${name_desktop}.desktop"
|
||||
if [[ $PORTWINE_CHANGE_SHORTCUT != 1 ]] ; then
|
||||
edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM
|
||||
fi
|
||||
|
||||
portwine_delete_shortcut
|
||||
|
||||
[[ -z $name_desktop ]] && create_name_desktop && export name_desktop="$PW_NAME_DESKTOP_PROXY"
|
||||
|
||||
echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop"
|
||||
@@ -5663,14 +5655,17 @@ portwine_create_shortcut () {
|
||||
fi
|
||||
chmod u+x "${STEAM_SCRIPTS}/${name_desktop}.sh"
|
||||
export SCVDF="shortcuts.vdf"
|
||||
for STUIDPATH in "${HOME}"/.local/share/Steam/userdata/*/ ; do
|
||||
create_new_dir "${STUIDPATH}/config/"
|
||||
create_new_dir "${STUIDPATH}/config/grid"
|
||||
export SCPATH="${STUIDPATH}/config/$SCVDF"
|
||||
export SGGRIDDIR="${STUIDPATH}/config/grid"
|
||||
# shellcheck source=/dev/null
|
||||
source "${PORT_SCRIPTS_PATH}/add_in_steam.sh"
|
||||
for STUIDPATH in "${HOME}"/.local/share/Steam/userdata/*/; do
|
||||
if [[ -d "$STUIDPATH" ]]; then
|
||||
create_new_dir "${STUIDPATH}config/"
|
||||
create_new_dir "${STUIDPATH}config/grid"
|
||||
export SCPATH="${STUIDPATH}config/$SCVDF"
|
||||
export SGGRIDDIR="${STUIDPATH}config/grid"
|
||||
# shellcheck source=/dev/null
|
||||
source "${PORT_SCRIPTS_PATH}/add_in_steam.sh"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && pgrep -i steam &>/dev/null ; then
|
||||
if yad_question "${translations[For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?]}" ; then
|
||||
pw_start_progress_bar_block "${translations[Restarting STEAM... Please wait.]}"
|
||||
@@ -5687,15 +5682,14 @@ 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..."
|
||||
[[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB
|
||||
restart_pp
|
||||
fi
|
||||
elif [[ "$PW_YAD_OUT" == "2" ]] ; then
|
||||
elif [[ "$PW_YAD_OUT" =~ (^1$|^2$|^252$) ]] ; then
|
||||
print_info "Restarting PP..."
|
||||
[[ -n $KEY_MENU ]] && unset portwine_exe
|
||||
[[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB
|
||||
@@ -5770,27 +5764,79 @@ pw_auto_create_shortcut () {
|
||||
}
|
||||
export -f pw_auto_create_shortcut
|
||||
|
||||
portwine_delete_shortcut () {
|
||||
# GUI CHANGE SHORTCUT
|
||||
portwine_change_shortcut () {
|
||||
export GDK_BACKEND="x11"
|
||||
|
||||
portwine_search_shortcut
|
||||
if [[ -n $PW_DELETE_MENU ]]
|
||||
then PW_SHORTCUT_MENU="TRUE"
|
||||
else PW_SHORTCUT_MENU="FALSE"
|
||||
fi
|
||||
if [[ -n ${PW_DELETE_SHORTCUT_DESKTOP[0]} ]]
|
||||
then PW_SHORTCUT_DESKTOP="TRUE"
|
||||
else PW_SHORTCUT_DESKTOP="FALSE"
|
||||
fi
|
||||
PW_SHORTCUT_STEAM="FALSE"
|
||||
|
||||
unset name_desktop
|
||||
create_name_desktop
|
||||
export name_desktop="$PW_NAME_DESKTOP_PROXY"
|
||||
|
||||
[[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}"
|
||||
|
||||
OUTPUT=$("${pw_yad}" --title="${translations[Choices]}" --form \
|
||||
--gui-type="settings-shortcut" \
|
||||
--gui-type-box="${NOTEBOOK_GUI_TYPE_BOX}" --gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" \
|
||||
--gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" --gui-type-images="${NOTEBOOK_GUI_TYPE_IMAGE}" \
|
||||
--window-icon "$PW_GUI_ICON_PATH/portproton.svg" \
|
||||
--image "${PORT_WINE_PATH}/data/img/${name_desktop_png}.png" \
|
||||
--text-align="center" --text "${translations[The shortcut will be changed in the PortProton directory.]}" \
|
||||
--field="${translations[Name]}" "${name_desktop}" \
|
||||
--field=" ${translations[Add shortcut to MENU -> GAMES]}":CHK "$PW_SHORTCUT_MENU" \
|
||||
--field=" ${translations[Add shortcut to Desktop]}":CHK "$PW_SHORTCUT_DESKTOP" \
|
||||
--field=" ${translations[Add shortcut to STEAM library]}":CHK "$PW_SHORTCUT_STEAM" \
|
||||
--button="${translations[REMOVE SHORTCUT]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":1 \
|
||||
--button="${translations[CHANGE SHORTCUT]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0 2>/dev/null)
|
||||
PW_YAD_OUT=$?
|
||||
PORTWINE_CHANGE_SHORTCUT=1
|
||||
if [[ $PW_YAD_OUT == 1 ]] ; then
|
||||
[[ "$PW_GUI_START" == "NOTEBOOK" ]] && unset PW_YAD_FORM_TAB
|
||||
portwine_delete_shortcut
|
||||
restart_pp
|
||||
fi
|
||||
portwine_output_yad_shortcut
|
||||
}
|
||||
|
||||
portwine_search_shortcut () {
|
||||
unset PW_DELETE_SHORTCUT_MENU PW_DELETE_SHORTCUT_DESKTOP
|
||||
PW_DELETE_MENU="$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop 2>/dev/null)"
|
||||
PW_DELETE_SHORTCUT+=(${PW_DELETE_MENU// /@_@})
|
||||
PW_DELETE_SHORTCUT_MENU+=(${PW_DELETE_MENU// /@_@})
|
||||
|
||||
PW_DELETE_PP="$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop 2>/dev/null)"
|
||||
PW_DELETE_SHORTCUT+=(${PW_DELETE_PP// /@_@})
|
||||
PW_DELETE_SHORTCUT_MENU+=(${PW_DELETE_PP// /@_@})
|
||||
|
||||
if [[ -d "${HOME}/Desktop" ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop 2>/dev/null)"
|
||||
PW_DELETE_SHORTCUT+=(${PW_DELETE_DESKTOP// /@_@})
|
||||
PW_DELETE_SHORTCUT_DESKTOP+=(${PW_DELETE_DESKTOP// /@_@})
|
||||
fi
|
||||
if [[ -d "${HOME}/Рабочий стол" ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop 2>/dev/null)"
|
||||
PW_DELETE_SHORTCUT+=(${PW_DELETE_DESKTOP// /@_@})
|
||||
PW_DELETE_SHORTCUT_DESKTOP+=(${PW_DELETE_DESKTOP// /@_@})
|
||||
fi
|
||||
if [[ $(xdg-user-dir DESKTOP) ]] ; then
|
||||
PW_DELETE_DESKTOP="$(grep -il "${portwine_exe}" "$(xdg-user-dir DESKTOP)"/*.desktop 2>/dev/null)"
|
||||
PW_DELETE_SHORTCUT+=(${PW_DELETE_DESKTOP// /@_@})
|
||||
PW_DELETE_SHORTCUT_DESKTOP+=(${PW_DELETE_DESKTOP// /@_@})
|
||||
fi
|
||||
}
|
||||
|
||||
for delete_shortcut in ${PW_DELETE_SHORTCUT[@]} ; do
|
||||
portwine_delete_shortcut () {
|
||||
if [[ $PORTWINE_CHANGE_SHORTCUT != 1 ]] ; then
|
||||
portwine_search_shortcut
|
||||
fi
|
||||
unset PORTWINE_CHANGE_SHORTCUT
|
||||
|
||||
for delete_shortcut in ${PW_DELETE_SHORTCUT_MENU[@]} ${PW_DELETE_SHORTCUT_DESKTOP[@]} ; do
|
||||
rm -f "${delete_shortcut//@_@/ }"
|
||||
done
|
||||
}
|
||||
@@ -5896,10 +5942,6 @@ pw_prefix_manager () {
|
||||
try_remove_file "${PW_TMPFS_PATH}/settings_list_tmp"
|
||||
|
||||
case "$YAD_STATUS" in
|
||||
1|252)
|
||||
print_info "Nothing to do. Restarting PortProton..."
|
||||
stop_portwine --restart
|
||||
;;
|
||||
0)
|
||||
WT_FORCE=""
|
||||
;;
|
||||
@@ -6089,7 +6131,7 @@ portwine_start_debug () {
|
||||
|
||||
portwine_launch &
|
||||
sleep 3
|
||||
pw_stop_progress_bar_cover
|
||||
pw_stop_progress_bar
|
||||
local PW_TIMER=0
|
||||
while read -r line || [[ -n $(pgrep -a yad | grep "yad_gui_pp --text-info --tail --button="STOP"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0 --title="DEBUG"" | awk '{print $1}') ]] ; do
|
||||
sleep 0.005
|
||||
@@ -6119,7 +6161,7 @@ portwine_start_debug () {
|
||||
}
|
||||
|
||||
pw_create_prefix_backup () {
|
||||
cd "$HOME"
|
||||
cd "$HOME" || :
|
||||
PW_PREFIX_TO_BACKUP=$("${pw_yad}" --file --directory --width=800 --height=500 \
|
||||
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "${translations[BACKUP PREFIX TO...]}" \
|
||||
--button="${translations[CANCEL]}"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":1 \
|
||||
|
27
data_from_portwine/scripts/pw_autoinstall/PW_DOOMSDAY
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
# Author: chal55rus
|
||||
# type: games
|
||||
# name: Doomsday
|
||||
# image: doomsday
|
||||
# info_en:
|
||||
# info_ru:
|
||||
########################################################################
|
||||
export PW_PREFIX_NAME="DOOMSDAY"
|
||||
export LAUNCH_PARAMETERS=("/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-")
|
||||
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/dls_installer_1.0.30_1729944485-3778620.exe"
|
||||
export PORTWINE_CREATE_SHORTCUT_NAME="Doomsday"
|
||||
|
||||
start_portwine
|
||||
if try_download "https://statics-global.igg.com/game_package/dls/11200199071/2024/08/28/dls_installer_1.0.30.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
|
||||
then
|
||||
pw_start_progress_bar_install_game "Doomsday."
|
||||
pw_kill_autostart Launcher.exe &
|
||||
pw_run "${PW_AUTOINSTALL_EXE}"
|
||||
portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Doomsday/DoomsdayLastSurvivors.exe"
|
||||
try_remove_file "${PW_AUTOINSTALL_EXE}"
|
||||
try_remove_file "${portwine_exe}.ppdb"
|
||||
kill_portwine
|
||||
pw_stop_progress_bar
|
||||
portwine_create_shortcut
|
||||
fi
|
||||
stop_portwine
|
27
data_from_portwine/scripts/pw_autoinstall/PW_GOOSE_GOOSE_DUCK
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
# Author: chal55rus
|
||||
# type: games
|
||||
# name: Goose Goose Duck
|
||||
# image: goosegooseduck
|
||||
# info_en:
|
||||
# info_ru:
|
||||
########################################################################
|
||||
VERSION="3.11.00"
|
||||
export PW_PREFIX_NAME="GOOSE_GOOSE_DUCK"
|
||||
export LAUNCH_PARAMETERS=("/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-")
|
||||
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/Goose Goose Duck Installer $VERSION release.exe"
|
||||
export PORTWINE_CREATE_SHORTCUT_NAME="Goose Goose Duck"
|
||||
|
||||
start_portwine
|
||||
if try_download "https://firebasestorage.googleapis.com/v0/b/gaggle-staging.appspot.com/o/Builds%2FGGD%2FGoose%20Goose%20Duck%20Installer%20${VERSION}%20release.exe?alt=media&token=e6c29f8f-bfd8-4592-a740-821aa4cebe00" "${PW_AUTOINSTALL_EXE}" no_mirror
|
||||
then
|
||||
pw_start_progress_bar_install_game "Goose Goose Duck."
|
||||
pw_run "${PW_AUTOINSTALL_EXE}"
|
||||
portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Goose Goose Duck/GGDLauncher.exe"
|
||||
try_remove_file "${PW_AUTOINSTALL_EXE}"
|
||||
try_remove_file "${portwine_exe}.ppdb"
|
||||
kill_portwine
|
||||
pw_stop_progress_bar
|
||||
portwine_create_shortcut
|
||||
fi
|
||||
stop_portwine
|
27
data_from_portwine/scripts/pw_autoinstall/PW_MINI_WORLD
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
# Author: chal55rus
|
||||
# type: games
|
||||
# name: Mini World
|
||||
# image: miniworld
|
||||
# info_en:
|
||||
# info_ru:
|
||||
########################################################################
|
||||
URL_VER=$(curl https://www.miniworldgame.com/ | awk -F"/app_install/" '{print $2}' | awk -F"universal" '{print $1}')
|
||||
|
||||
export PW_PREFIX_NAME="MINI_WORLD"
|
||||
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/miniworld_universal.exe"
|
||||
export PORTWINE_CREATE_SHORTCUT_NAME="Mini World"
|
||||
|
||||
start_portwine
|
||||
if try_download "https://mwu-api.miniworldgame.com/app_install/${URL_VER//[[:space:]]/}universal" "${PW_AUTOINSTALL_EXE}" no_mirror
|
||||
then
|
||||
pw_start_progress_bar_install_game "Mini World."
|
||||
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/users/steamuser/AppData/Roaming/miniworldOverseasgame"
|
||||
portwine_exe="$WINEPREFIX/drive_c/users/steamuser/AppData/Roaming/miniworldOverseasgame/MicroMiniNew.exe"
|
||||
try_remove_file "${PW_AUTOINSTALL_EXE}"
|
||||
try_remove_file "${portwine_exe}.ppdb"
|
||||
kill_portwine
|
||||
pw_stop_progress_bar
|
||||
portwine_create_shortcut
|
||||
fi
|
||||
stop_portwine
|
32
data_from_portwine/scripts/pw_autoinstall/PW_TOONTOWN_REWRITTEN
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
# Author: chal55rus
|
||||
# type: games
|
||||
# name: Toontown Rewritten (ENG)
|
||||
# image: toontownrewritten
|
||||
# info_en:
|
||||
# info_ru:
|
||||
########################################################################
|
||||
URL_VER=$(curl https://www.toontownrewritten.com/play \
|
||||
| awk -F"https://cdn.toontownrewritten.com/launcher/windows/TTRInstaller-" '{print $2}' \
|
||||
| awk -F".exe" '{print $1}' | grep "v1" | head -n1)
|
||||
|
||||
export PW_PREFIX_NAME="TOONTOWN_REWRITTEN"
|
||||
export LAUNCH_PARAMETERS=("/S")
|
||||
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/TTRInstaller-$URL_VER.exe"
|
||||
export PORTWINE_CREATE_SHORTCUT_NAME="Toontown Rewritten"
|
||||
|
||||
start_portwine
|
||||
if try_download "https://cdn.toontownrewritten.com/launcher/windows/TTRInstaller-$URL_VER.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
|
||||
then
|
||||
pw_start_progress_bar_install_game "Toontown Rewritten."
|
||||
pw_kill_autostart Launcher.exe &
|
||||
pw_run "${PW_AUTOINSTALL_EXE}"
|
||||
portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Toontown Rewritten/Launcher.exe"
|
||||
pw_create_unique_exe "Toontown_Launcher"
|
||||
try_remove_file "${PW_AUTOINSTALL_EXE}"
|
||||
try_remove_file "${portwine_exe}.ppdb"
|
||||
kill_portwine
|
||||
pw_stop_progress_bar
|
||||
portwine_create_shortcut
|
||||
fi
|
||||
stop_portwine
|
@@ -3,6 +3,10 @@
|
||||
# Development assistants: Cefeiko; Dezert1r; Taz_mania; Anton_Famillianov; gavr; RidBowt; chal55rus; UserDiscord; Boria138; Vano; Akai; Htylol
|
||||
# shellcheck disable=SC2140,SC2119,SC2206,SC2068
|
||||
########################################################################
|
||||
export url_site="https://linux-gaming.ru/portproton/"
|
||||
export url_cloud="https://cloud.linux-gaming.ru/portproton"
|
||||
export url_git="https://git.linux-gaming.ru/CastroFidel/PortWINE"
|
||||
########################################################################
|
||||
echo '
|
||||
█░░ █ █▄░█ █░█ ▀▄▀ ▄▄ █▀▀ ▄▀█ █▀▄▀█ █ █▄░█ █▀▀ ░ █▀█ █░█
|
||||
█▄▄ █ █░▀█ █▄█ █░█ ░░ █▄█ █▀█ █░▀░█ █ █░▀█ █▄█ ▄ █▀▄ █▄█
|
||||
@@ -157,9 +161,6 @@ export pw_yad="${PW_GUI_THEMES_PATH}/gui/yad_gui_pp"
|
||||
|
||||
change_locale
|
||||
|
||||
export urlg="https://linux-gaming.ru/portproton/"
|
||||
export url_cloud="https://cloud.linux-gaming.ru/portproton"
|
||||
export url_git="https://git.linux-gaming.ru/CastroFidel/PortWINE"
|
||||
export PW_WINELIB="${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}"
|
||||
try_remove_dir "${PW_WINELIB}/var"
|
||||
install_ver="$(<"${PORT_WINE_TMP_PATH}/PortProton_ver")"
|
||||
@@ -176,21 +177,20 @@ check_variables PW_LOG "0"
|
||||
try_remove_file "${PW_TMPFS_PATH}/update_pfx_log"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
source "${USER_CONF}"
|
||||
source "$USER_CONF"
|
||||
|
||||
if [[ ! -f "${PW_CACHE_LANG_PATH}/$LANGUAGE" ]] ; then
|
||||
create_translations
|
||||
fi
|
||||
[[ ! -f "$PORT_WINE_TMP_PATH/statistics" ]] && touch "$PORT_WINE_TMP_PATH/statistics"
|
||||
[[ ! -f "$PW_CACHE_LANG_PATH/$LANGUAGE" ]] && create_translations
|
||||
|
||||
unset translations
|
||||
# shellcheck source=/dev/null
|
||||
source "${PW_CACHE_LANG_PATH}/$LANGUAGE"
|
||||
source "$PW_CACHE_LANG_PATH/$LANGUAGE"
|
||||
|
||||
if [[ $TRANSLATIONS_VER != "$scripts_install_ver" ]] ; then
|
||||
try_remove_dir "${PW_CACHE_LANG_PATH}"
|
||||
try_remove_dir "$PW_CACHE_LANG_PATH"
|
||||
create_translations
|
||||
# shellcheck source=/dev/null
|
||||
source "${PW_CACHE_LANG_PATH}/$LANGUAGE"
|
||||
source "$PW_CACHE_LANG_PATH/$LANGUAGE"
|
||||
fi
|
||||
|
||||
# check PortProton theme
|
||||
@@ -491,10 +491,10 @@ if [[ -f "${portwine_exe}" ]] ; then
|
||||
fi
|
||||
if [[ "${PW_GUI_DISABLED_CS}" != 1 ]] ; then
|
||||
pw_create_gui_png
|
||||
if ! grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop &>/dev/null ; then
|
||||
if ! grep -il "${portwine_exe}" "$PORT_WINE_PATH"/*.desktop &>/dev/null ; then
|
||||
PW_SHORTCUT="${translations[CREATE SHORTCUT]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Create shortcut for select file...]}:100"
|
||||
else
|
||||
PW_SHORTCUT="${translations[DELETE SHORTCUT]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Delete shortcut for select file...]}:98"
|
||||
PW_SHORTCUT="${translations[CHANGE SHORTCUT]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Change shortcut for select file...]}:98"
|
||||
fi
|
||||
|
||||
create_name_desktop
|
||||
@@ -608,57 +608,51 @@ else
|
||||
gui_userconf
|
||||
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
|
||||
unset PW_NAME_D_ICON PW_ICON_PATH PW_GAME_TIME PW_ALL_DF PW_AMOUNT_NEW_DESKTOP
|
||||
unset PW_DESKTOP_FILES_REGEX PW_AMOUNT_OLD_DESKTOP PW_DESKTOP_FILES
|
||||
# Поиск .desktop файлов
|
||||
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 =~ (PortProton|readme) ]] ; then
|
||||
while IFS= read -r line ; do
|
||||
if [[ $line =~ ^Exec= ]] ; then
|
||||
while IFS= read -r line1 ; do
|
||||
if [[ $line1 =~ ^Exec= ]] ; then
|
||||
if check_flatpak ; then
|
||||
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line//Exec=flatpak run ru.linux_gaming.PortProton /}
|
||||
PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]=${line1//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"]=${line1//Exec=env \"$PORT_SCRIPTS_PATH\/start.sh\" /}
|
||||
fi
|
||||
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
|
||||
[[ $line1 =~ ^Icon= ]] && PW_ICON_PATH["$AMOUNT_GENERATE_BUTTONS"]=${line1//Icon=/}
|
||||
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"
|
||||
# Для конвертации существующих .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 /}
|
||||
sed -i "s|Exec=flatpak run ru.linux_gaming.PortProton|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|" "$desktop_file"
|
||||
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\" /}
|
||||
sed -i "s|Exec=env \"$PORT_SCRIPTS_PATH/start.sh\"|Exec=flatpak run ru.linux_gaming.PortProton|" "$desktop_file"
|
||||
fi
|
||||
while IFS=" " read -r -a line2 ; do
|
||||
if [[ \"${line2[0]//#@_@#/ }\" == "${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]}" ]] ; then
|
||||
PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=${line2[2]}
|
||||
break
|
||||
else
|
||||
PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=0
|
||||
fi
|
||||
done < "$PORT_WINE_TMP_PATH/statistics"
|
||||
if [[ $SORT_WITH_TIME == enabled ]] && [[ ${line2[3]} == NEW_DESKTOP ]] ; then
|
||||
sed -i "s/${line2[1]} ${line2[2]} NEW_DESKTOP/${line2[1]} ${line2[2]} OLD_DESKTOP/" "$PORT_WINE_TMP_PATH/statistics"
|
||||
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 /}
|
||||
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=
|
||||
if [[ ! ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} =~ [0-9]+ ]] \
|
||||
|| (( ${PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]} >= 999999999 )) \
|
||||
|| [[ $NEED_FIXES_DESKTOP == 1 ]]
|
||||
then
|
||||
portwine_exe=${PW_NAME_D_ICON["$AMOUNT_GENERATE_BUTTONS"]//\"/}
|
||||
search_desktop_file
|
||||
unset portwine_exe NEED_FIXES_DESKTOP
|
||||
PW_GAME_TIME["$AMOUNT_GENERATE_BUTTONS"]=$TIME_CURRENT
|
||||
fi
|
||||
(( AMOUNT_GENERATE_BUTTONS++ ))
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Переопределение элементов в массивах в зависимости от PW_GAME_TIME, от большего значения к меньшему.
|
||||
# 10 миллисекунд на 40 .desktop файлов, работает быстро
|
||||
if [[ $SORT_WITH_TIME == enabled ]] && [[ -n ${PW_GAME_TIME[1]} ]] ; then
|
||||
@@ -683,7 +677,6 @@ else
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
# Генерация .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\"%"
|
||||
@@ -756,6 +749,7 @@ 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 &
|
||||
|
||||
unset AI_TYPE AI_NAME AI_IMAGE AI_INFO AI_FILE_ARRAY AI_TRUE_FILE AI_FILE_UNSORTED AI_FILE_SORTED AI_FILE_ENG
|
||||
if [[ $AI_SKIP != 1 ]] ; then
|
||||
# AI_TOP_GAMES используется для сортировки автоинсталлов (работает на эмуляторы тоже)
|
||||
AI_AMOUNT_GAMES="0" && AI_AMOUNT_EMULS="0" && AI_AMOUNT_ARRAY="0"
|
||||
@@ -777,7 +771,11 @@ else
|
||||
if [[ $AI_TOP_GAMES =~ ${AI_FILE_CHECK//=*/} ]] ; then
|
||||
AI_TRUE_FILE+=($AI_FILE_CHECK)
|
||||
else
|
||||
AI_FILE_UNSORTED+=($AI_AMOUNT_ARRAY)
|
||||
if [[ ${AI_NAME["$AI_AMOUNT_ARRAY"]} =~ \(ENG\) ]] ; then
|
||||
AI_FILE_ENG+=($AI_AMOUNT_ARRAY)
|
||||
else
|
||||
AI_FILE_UNSORTED+=($AI_AMOUNT_ARRAY)
|
||||
fi
|
||||
fi
|
||||
(( AI_AMOUNT_ARRAY++ ))
|
||||
done
|
||||
@@ -790,7 +788,7 @@ else
|
||||
done
|
||||
|
||||
IFS=$'\n'
|
||||
for ai in "${AI_FILE_SORTED[@]}" "${AI_FILE_UNSORTED[@]}" ; do
|
||||
for ai in "${AI_FILE_SORTED[@]}" "${AI_FILE_UNSORTED[@]}" "${AI_FILE_ENG[@]}" ; 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]}\"%"
|
||||
@@ -903,7 +901,7 @@ case "$PW_YAD_SET" in
|
||||
esac
|
||||
|
||||
case "$PW_YAD_SET" in
|
||||
98) portwine_delete_shortcut ;;
|
||||
98) portwine_change_shortcut ;;
|
||||
100) portwine_create_shortcut ;;
|
||||
DEBUG|102) portwine_start_debug ;;
|
||||
106) portwine_launch ;;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Castro-Fidel (linux-gaming.ru)
|
||||
#SCRIPTS_NEXT_VERSION=2367
|
||||
#SCRIPTS_NEXT_VERSION=2368
|
||||
#SCRIPTS_STABLE_VERSION=2360
|
||||
########################################################################
|
||||
export AI_TOP_GAMES="PW_LGC PW_VKPLAY PW_EPIC PW_BATTLE_NET PW_WORLD_OF_SEA_BATTLE PW_RUSSIAN_FISHING PW_HO_YO_PLAY PW_FARLIGHT84 PW_WARFRAME PW_WGC PW_UBISOFT"
|
||||
@@ -15,7 +15,7 @@ export PW_RT_MOUNT_RO=("")
|
||||
export PW_RT_MOUNT_RW=("/media" "/mnt" "/run/media/${USER}" "${PORT_WINE_PATH}")
|
||||
#export PW_SANDBOX_HOME_PATH="${PORT_WINE_PATH}"
|
||||
export PW_NO_ESYNC="0"
|
||||
export PW_USE_GAMEMODE="1"
|
||||
export PW_USE_GAMEMODE="0"
|
||||
export PW_FORCE_USE_VSYNC="2"
|
||||
export PW_USE_TERMINAL="0"
|
||||
export PW_WINDOWS_VER="10"
|
||||
|