Compare commits

..

No commits in common. "devel" and "devel" have entirely different histories.
devel ... devel

32 changed files with 235 additions and 597 deletions

@ -2,60 +2,6 @@ You can help us in the development of the project on the website: https://linux-
---------------------------------------- ----------------------------------------
Changelog: Changelog:
###Scripts version 2416### / Date: 17.05.2025 / Download update size: 4 megabytes
* fixed translation generation (thanks to Htylol)
* added the ability to download Sarek Proton (thanks to Boria138)
* when using third-party versions of PROTON, DXVK and VKD3D are used, which are supplied with them (thanks to Htylol)
###Scripts version 2415### / Date: 07.05.2025 / Download update size: 4 megabytes
* fixed installation of libraries added to the settings when starting the game
###Scripts version 2414### / Date: 07.05.2025 / Download update size: 184 megabytes
* updated WINE_LG to version "10-7"
* removed the fix for entering the game "Genshin Impact" (no longer required)
* updated the installation of GOG Launcher (thanks to Vekt0R)
* added detection of NVIDIA RTX 50XX video cards (thanks to Boria138)
* added a setting for binding the game to the cores of one NUMA node, for example, on Intel Xeon (thanks to Boria138)
* added scripts for installing windows emulators Azahar, bsnes, melonDS (thanks to if984)
* updated scripts for installing Crossout, PPSSPP, RetroArch, ePSXe, FCEUX (thanks to if984)
###Scripts version 2413### / Date: 19.04.2025 / Download update size: 4 megabytes
* fixed the start of the game "World of Sea Battle"
* fixed errors related to libraries "ICU* .DLL"
###Scripts version 2412### / Date: 14.04.2025 / Download update size: 4 megabytes
* temporary fixes of the entrance to the game "Genshin Impact" (auto shutdown and connection to the network before launching the game - does not work in Flatpak)
###Scripts version 2411### / stable / Date: 11.04.2025 / Download update size: 280 megabytes
* cumulative update to the stable version of PortProton scripts
###Scripts version 2410### / Date: 11.04.2025 / Download update size: 4 megabytes
* fixed installation/update for "Epic Games Launcher"
* fixed disabling of extra frame for "HoYoPlay" and "Crossout" launchers
###Scripts version 2409### / Date: 08.04.2025 / Download update size: 380 megabytes
* updated WINE_LG to version "10-5"
* updated container library package: libs_v53
- pressure-vessel 0.20250122.0
- steam-runtime-sniper 3.0.20250210.116596
* improved fix for new wine versions by Kron4ek (need to delete and re-download the required wine version)
* additional improvements to the tray function (thanks to Htylol)
* added a unified condition for better detection of installation files instead of Setup.ppdb (thanks to Htylol)
* removed the global settings button from the menu when starting the game
###Scripts version 2408### / Date: 08.04.2025 / Download update size: 4 megabytes
* fixed the work of new versions of Wine from Kron4ek
* fixed settings file for the game "Kingdom Come: Deliverance II"
###Scripts version 2407### / Date: 07.04.2025 / Download update size: 250 megabytes
* PROTON_LG updated to version "9-27"
* updated versions:
- DXVK_GIT "2.6-65" (together with dxvk-nvapi)
- VKD3D_GIT "1.1-4511" (together with vkd3d-shader)
* STEAM_APP_ID from ppdb is used to determine SteamAppId, if it is missing, then steam_appid (and similar) is searched for in the game directory (thanks to alex2844)
* interface translation functions are improved (thanks to Htylol)
* tray operation is fixed for systems using "dash" (thanks to Boria138)
###Scripts version 2406### / stable / Date: 22.03.2025 / Download update size: 4 megabytes ###Scripts version 2406### / stable / Date: 22.03.2025 / Download update size: 4 megabytes
* cumulative update to the stable version of PortProton scripts * cumulative update to the stable version of PortProton scripts

@ -2,60 +2,6 @@
----------------------------------------- -----------------------------------------
История изменений: История изменений:
###Scripts version 2416### / Дата: 17.05.2025 / Размер скачиваемого обновления: 4 мегабайта
* исправлена генерация переводов (спасибо Htylol)
* добавлена возможность скачивания Sarek Proton (спасибо Boria138)
* при использовании сторонних версий PROTON используется DXVK и VKD3D, которые поставляются вместе с ними (спасибо Htylol)
###Scripts version 2415### / Дата: 07.05.2025 / Размер скачиваемого обновления: 4 мегабайта
* исправлена установка библиотек добавленных в настройки при запуске игры
###Scripts version 2414### / Дата: 07.05.2025 / Размер скачиваемого обновления: 184 мегабайта
* обновлен WINE_LG до версии "10-7"
* удален фикс входа в игру "Genshin Impact" (более не требуется)
* обновлена установка GOG Launcher (спасибо Vekt0R)
* добавлено определение видеокарт NVIDIA RTX 50XX (спасибо Boria138)
* добавлена настройка привязки игры к ядрам одного NUMA-узла например на Intel Xeon (спасибо Boria138)
* добавлены скрипты для установки windows эмуляторов Azahar, bsnes, melonDS (спасибо if984)
* обновлены скрипты для установки Crossout, PPSSPP, RetroArch, ePSXe, FCEUX (спасибо if984)
###Scripts version 2413### / Дата: 19.04.2025 / Размер скачиваемого обновления: 4 мегабайта
* исправлен запуск игры "World of Sea Battle"
* исправлены ошибки связанные с библиотеками "icu*.dll"
###Scripts version 2412### / Дата: 14.04.2025 / Размер скачиваемого обновления: 4 мегабайта
* временный фикс входа в игру "Genshin Impact" (автоотключение и подключение к сети перед запуском игры - не работает во flatpak)
###Scripts version 2411### / stable / Дата: 11.04.2025 / Размер скачиваемого обновления: 380 мегабайт
* кумулятивное обновление стабильной версии скриптов PortProton
###Scripts version 2410### / Дата: 11.04.2025 / Размер скачиваемого обновления: 4 мегабайта
* исправлена установка/обновление "Epic Games Launcher"
* исправлено отключение лишней рамки для лончеров "HoYoPlay" и "Crossout"
###Scripts version 2409### / Дата: 08.04.2025 / Размер скачиваемого обновления: 380 мегабайт
* обновлен WINE_LG до версии "10-5"
* обновлен пакет библиотек контейнера: libs_v53
- pressure-vessel 0.20250122.0
- steam-runtime-sniper 3.0.20250210.116596
* доработано исправление работы новых версий wine от Kron4ek (необходимо удалить и заново перекачать нужную версию wine)
* дополнительные улучшения функции трея (спасибо Htylol)
* за место Setup.ppdb добавлено унифицированное условие для лучшего определения установочных файлов (спасибо Htylol)
* удалена кнопка глобальных настроек из меню при запуске игры
###Scripts version 2408### / Дата: 08.04.2025 / Размер скачиваемого обновления: 4 мегабайта
* исправлена работа новых версий wine от Kron4ek
* исправлен файл настроек для игры "Kingdom Come: Deliverance II"
###Scripts version 2407### / Дата: 07.04.2025 / Размер скачиваемого обновления: 250 мегабайт
* обновлен PROTON_LG до версии "9-27"
* обновлены версии:
- DXVK_GIT "2.6-65" (совместно с dxvk-nvapi)
- VKD3D_GIT "1.1-4511" (совместно vkd3d-shader)
* для определения SteamAppId используется STEAM_APP_ID из ppdb, если отсутствует - то ищется steam_appid (и подобные) в директории с игрой (спасибо alex2844)
* улучшены функции перевода интерфейса (спасибо Htylol)
* исправлена работа трея для систем использующих "dash" (спасибо Boria138)
###Scripts version 2406### / stable / Дата: 22.03.2025 / Размер скачиваемого обновления: 4 мегабайта ###Scripts version 2406### / stable / Дата: 22.03.2025 / Размер скачиваемого обновления: 4 мегабайта
* кумулятивное обновление стабильной версии скриптов PortProton * кумулятивное обновление стабильной версии скриптов PortProton
@ -74,8 +20,8 @@
###Scripts version 2402### / Дата: 13.03.2025 / Размер скачиваемого обновления: 15 мегабайт ###Scripts version 2402### / Дата: 13.03.2025 / Размер скачиваемого обновления: 15 мегабайт
* исправление меню глобальных настроек (user.conf) (спасибо Htylol) * исправление меню глобальных настроек (user.conf) (спасибо Htylol)
* обновлены версии: * обновлены версии:
- DXVK_GIT "2.5.3-299" (совместно с dxvk-nvapi) * DXVK_GIT "2.5.3-299" (совместно с dxvk-nvapi)
- VKD3D_GIT "1.1-4478" (совместно vkd3d-shader) * VKD3D_GIT "1.1-4478" (совместно vkd3d-shader)
###Scripts version 2401### / Дата: 07.03.2025 / Размер скачиваемого обновления: 4 мегабайта ###Scripts version 2401### / Дата: 07.03.2025 / Размер скачиваемого обновления: 4 мегабайта
* HOTFIX: переключения веток DEVEL - STABLE от Htylol * HOTFIX: переключения веток DEVEL - STABLE от Htylol

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 685 B

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

@ -7,13 +7,13 @@
msgid "" msgid ""
msgstr "Project-Id-Version: PACKAGE VERSION\n" msgstr "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-09 02:05+0500\n" "POT-Creation-Date: 2025-03-20 21:49+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n" "Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
msgid "A running PortProton session was detected.\\nDo you want to end the " msgid "A running PortProton session was detected.\\nDo you want to end the "
@ -100,6 +100,12 @@ msgstr ""
msgid "Edit database file for" msgid "Edit database file for"
msgstr "" msgstr ""
msgid "Global settings"
msgstr ""
msgid "Settings for user.conf"
msgstr ""
msgid "Open directory" msgid "Open directory"
msgstr "" msgstr ""
@ -316,6 +322,9 @@ msgstr ""
msgid "UPDATING NOW" msgid "UPDATING NOW"
msgstr "" msgstr ""
msgid "EXIT"
msgstr ""
msgid "Searching for .exe files... Please wait." msgid "Searching for .exe files... Please wait."
msgstr "" msgstr ""
@ -345,9 +354,6 @@ msgid "d3dadapter9.so.1.0.0 - Not found in the system.\\nInstall the "
"missing package: <b>d3dadapter9</b>" "missing package: <b>d3dadapter9</b>"
msgstr "" msgstr ""
msgid "EXIT"
msgstr ""
msgid "You will need to check internet connection,and\\npress Repeat for " msgid "You will need to check internet connection,and\\npress Repeat for "
"repeat download" "repeat download"
msgstr "" msgstr ""
@ -534,10 +540,6 @@ msgid "Instead of DXVK, use WineD3D vulkan (Damavand). Experimental "
"function." "function."
msgstr "" msgstr ""
msgid "Use dxvk and vkd3d which are bundled with wine or proton. (Does not "
"work with PROTON_LG and WINE_LG)"
msgstr ""
msgid "Disable asynchronous calls for VULKAN and DXVK modes" msgid "Disable asynchronous calls for VULKAN and DXVK modes"
msgstr "" msgstr ""
@ -636,15 +638,6 @@ msgstr ""
msgid "Choosing which implementation of vulkan will be used to run the game" msgid "Choosing which implementation of vulkan will be used to run the game"
msgstr "" msgstr ""
msgid "NUMA node for CPU affinity"
msgstr ""
msgid "In multicore systems, CPUs are split into NUMA nodes, each with its "
"own local memory and cores.\n"
"Binding a game to a single node reduces memoryaccess latency and "
"limits costly coretocore switches.)"
msgstr ""
msgid "EDIT DB" msgid "EDIT DB"
msgstr "" msgstr ""
@ -1307,13 +1300,6 @@ msgstr ""
msgid "Change settings gamescope for" msgid "Change settings gamescope for"
msgstr "" msgstr ""
msgid "Gamescope is not detected on the system, to install it, run the "
"command in the terminal"
msgstr ""
msgid "Can be selected and copied"
msgstr ""
msgid "<b>Gamescope is not detected on the system, please contact the " msgid "<b>Gamescope is not detected on the system, please contact the "
"manufacturer of your distribution\\nor search the Internet for " "manufacturer of your distribution\\nor search the Internet for "
"information on how to install gamescope on your system.</b>" "information on how to install gamescope on your system.</b>"

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-09 02:05+0500\n" "POT-Creation-Date: 2025-03-20 21:49+0300\n"
"PO-Revision-Date: 2024-11-13 08:18+0500\n" "PO-Revision-Date: 2024-11-13 08:18+0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -111,6 +111,12 @@ msgstr "Configuración básica"
msgid "Edit database file for" msgid "Edit database file for"
msgstr "Editar archivo de base de datos para" msgstr "Editar archivo de base de datos para"
msgid "Global settings"
msgstr "Configuraciones globales"
msgid "Settings for user.conf"
msgstr "Configuración user.conf"
msgid "Open directory" msgid "Open directory"
msgstr "Abrir directorio" msgstr "Abrir directorio"
@ -348,6 +354,9 @@ msgstr "VUELVA MÁS TARDE"
msgid "UPDATING NOW" msgid "UPDATING NOW"
msgstr "ACTUALIZANDO AHORA" msgstr "ACTUALIZANDO AHORA"
msgid "EXIT"
msgstr "SALIR"
msgid "Searching for .exe files... Please wait." msgid "Searching for .exe files... Please wait."
msgstr "Buscando archivos .exe... Por favor, espera." msgstr "Buscando archivos .exe... Por favor, espera."
@ -382,9 +391,6 @@ msgstr ""
"d3dadapter9.so.1.0.0 - No encontrado en el sistema.\n" "d3dadapter9.so.1.0.0 - No encontrado en el sistema.\n"
"Instala el paquete faltante:<b>d3dadapter9</b>" "Instala el paquete faltante:<b>d3dadapter9</b>"
msgid "EXIT"
msgstr "SALIR"
msgid "" msgid ""
"You will need to check internet connection,and\\npress Repeat for repeat " "You will need to check internet connection,and\\npress Repeat for repeat "
"download" "download"
@ -642,13 +648,6 @@ msgstr ""
msgid "Instead of DXVK, use WineD3D vulkan (Damavand). Experimental function." msgid "Instead of DXVK, use WineD3D vulkan (Damavand). Experimental function."
msgstr "WineD3D Vulkan (Damavand experimental)" msgstr "WineD3D Vulkan (Damavand experimental)"
msgid ""
"Use dxvk and vkd3d which are bundled with wine or proton. (Does not work "
"with PROTON_LG and WINE_LG)"
msgstr ""
"Utilice dxvk y vkd3d que vienen incluidos con wine o proton. (No funciona "
"con PROTON_LG y WINE_LG)"
msgid "Disable asynchronous calls for VULKAN and DXVK modes" msgid "Disable asynchronous calls for VULKAN and DXVK modes"
msgstr "Desactivar llamadas asíncronas para los modos VULKAN y DXVK" msgstr "Desactivar llamadas asíncronas para los modos VULKAN y DXVK"
@ -792,16 +791,6 @@ msgstr ""
msgid "Choosing which implementation of vulkan will be used to run the game" msgid "Choosing which implementation of vulkan will be used to run the game"
msgstr "" msgstr ""
msgid "NUMA node for CPU affinity"
msgstr ""
msgid ""
"In multicore systems, CPUs are split into NUMA nodes, each with its own "
"local memory and cores.\n"
"Binding a game to a single node reduces memoryaccess latency and limits "
"costly coretocore switches.)"
msgstr ""
msgid "EDIT DB" msgid "EDIT DB"
msgstr "CONFIGURACIÓN" msgstr "CONFIGURACIÓN"
@ -1700,14 +1689,6 @@ msgstr ""
msgid "Change settings gamescope for" msgid "Change settings gamescope for"
msgstr "Cambiar ajustes gamescope para" msgstr "Cambiar ajustes gamescope para"
msgid ""
"Gamescope is not detected on the system, to install it, run the command in "
"the terminal"
msgstr ""
msgid "Can be selected and copied"
msgstr ""
msgid "" msgid ""
"<b>Gamescope is not detected on the system, please contact the manufacturer " "<b>Gamescope is not detected on the system, please contact the manufacturer "
"of your distribution\\nor search the Internet for information on how to " "of your distribution\\nor search the Internet for information on how to "
@ -2177,12 +2158,6 @@ msgstr "UNIRSE"
msgid "THIRD PARTY LIBRARIES" msgid "THIRD PARTY LIBRARIES"
msgstr "BIBLIOTECAS DE TERCEROS" msgstr "BIBLIOTECAS DE TERCEROS"
#~ msgid "Global settings"
#~ msgstr "Configuraciones globales"
#~ msgid "Settings for user.conf"
#~ msgstr "Configuración user.conf"
#~ msgid "" #~ msgid ""
#~ "This program comes with absolutely no warranty.\n" #~ "This program comes with absolutely no warranty.\n"
#~ "See the License for details." #~ "See the License for details."
@ -2208,8 +2183,8 @@ msgstr "BIBLIOTECAS DE TERCEROS"
#~ msgid "" #~ msgid ""
#~ "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?" #~ "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?"
#~ msgstr "" #~ msgstr ""
#~ "Para agregar el acceso directo a STEAM, es necesario reiniciar." #~ "Para agregar el acceso directo a STEAM, es necesario reiniciar.\\n"
#~ "\\n\\¿Quieres reiniciar STEAM ahora?" #~ "\\¿Quieres reiniciar STEAM ahora?"
#~ msgid "Restarting STEAM... Please wait." #~ msgid "Restarting STEAM... Please wait."
#~ msgstr "Restarting STEAM... Please wait." #~ msgstr "Restarting STEAM... Please wait."

@ -7,17 +7,17 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-09 02:05+0500\n" "POT-Creation-Date: 2025-03-20 21:49+0300\n"
"PO-Revision-Date: 2025-04-21 21:59+0500\n" "PO-Revision-Date: 2025-03-20 21:50+0300\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: ru_RU\n" "Language: ru_RU\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Poedit 3.6\n" "X-Generator: Poedit 3.5\n"
msgid "" msgid ""
"A running PortProton session was detected.\\nDo you want to end the previous " "A running PortProton session was detected.\\nDo you want to end the previous "
@ -119,6 +119,12 @@ msgstr "Основные настройки"
msgid "Edit database file for" msgid "Edit database file for"
msgstr "Редактировать файл настроек для" msgstr "Редактировать файл настроек для"
msgid "Global settings"
msgstr "Глобальные настройки"
msgid "Settings for user.conf"
msgstr "Настройки для user.conf"
msgid "Open directory" msgid "Open directory"
msgstr "Открыть папку" msgstr "Открыть папку"
@ -359,6 +365,9 @@ msgstr "НАПОМНИТЬ ПОЗЖЕ"
msgid "UPDATING NOW" msgid "UPDATING NOW"
msgstr "ОБНОВИТЬ СЕЙЧАС" msgstr "ОБНОВИТЬ СЕЙЧАС"
msgid "EXIT"
msgstr "ВЫХОД"
msgid "Searching for .exe files... Please wait." msgid "Searching for .exe files... Please wait."
msgstr "Поиск .exe файлов... Пожалуйста, подождите." msgstr "Поиск .exe файлов... Пожалуйста, подождите."
@ -392,9 +401,6 @@ msgstr ""
"d3dadapter9.so.1.0.0 - Не найден в системе.\\nУстановите недостающий пакет: " "d3dadapter9.so.1.0.0 - Не найден в системе.\\nУстановите недостающий пакет: "
"<b>d3dadapter9</b>" "<b>d3dadapter9</b>"
msgid "EXIT"
msgstr "ВЫХОД"
msgid "" msgid ""
"You will need to check internet connection,and\\npress Repeat for repeat " "You will need to check internet connection,and\\npress Repeat for repeat "
"download" "download"
@ -663,13 +669,6 @@ msgstr ""
"Вместо DXVK используется WineD3D vulkan (Дамаванд). Экспериментальная " "Вместо DXVK используется WineD3D vulkan (Дамаванд). Экспериментальная "
"функция." "функция."
msgid ""
"Use dxvk and vkd3d which are bundled with wine or proton. (Does not work "
"with PROTON_LG and WINE_LG)"
msgstr ""
"Использовать dxvk и vkd3d, которые поставляются в комплекте с wine или "
"proton. (Не работает с PROTON_LG и WINE_LG)"
msgid "Disable asynchronous calls for VULKAN and DXVK modes" msgid "Disable asynchronous calls for VULKAN and DXVK modes"
msgstr "Отключить асинхронные вызовы для режимов VULKAN и DXVK" msgstr "Отключить асинхронные вызовы для режимов VULKAN и DXVK"
@ -815,18 +814,6 @@ msgstr "Выбор Vulkan драйвера для AMD"
msgid "Choosing which implementation of vulkan will be used to run the game" msgid "Choosing which implementation of vulkan will be used to run the game"
msgstr "Выбор драйвера Vulkan для запуска игры" msgstr "Выбор драйвера Vulkan для запуска игры"
msgid "NUMA node for CPU affinity"
msgstr "Узел NUMA для привязки к процессору"
msgid ""
"In multicore systems, CPUs are split into NUMA nodes, each with its own "
"local memory and cores.\n"
"Binding a game to a single node reduces memoryaccess latency and limits "
"costly coretocore switches.)"
msgstr ""
"Каждый NUMA-узел имеет собственную память и ядра. Привязка игры к одному "
"узлу снижает задержку и повышает производительность"
msgid "EDIT DB" msgid "EDIT DB"
msgstr "НАСТРОЙКИ" msgstr "НАСТРОЙКИ"
@ -1690,15 +1677,6 @@ msgstr ""
msgid "Change settings gamescope for" msgid "Change settings gamescope for"
msgstr "Изменить настройки Gamescope для" msgstr "Изменить настройки Gamescope для"
msgid ""
"Gamescope is not detected on the system, to install it, run the command in "
"the terminal"
msgstr ""
#, fuzzy
msgid "Can be selected and copied"
msgstr "(можно выделить и скопировать)"
msgid "" msgid ""
"<b>Gamescope is not detected on the system, please contact the manufacturer " "<b>Gamescope is not detected on the system, please contact the manufacturer "
"of your distribution\\nor search the Internet for information on how to " "of your distribution\\nor search the Internet for information on how to "
@ -2159,12 +2137,6 @@ msgstr "ПРИСОЕДЕНИТЬСЯ"
msgid "THIRD PARTY LIBRARIES" msgid "THIRD PARTY LIBRARIES"
msgstr "БИБЛИОТЕКИ" msgstr "БИБЛИОТЕКИ"
#~ msgid "Global settings"
#~ msgstr "Глобальные настройки"
#~ msgid "Settings for user.conf"
#~ msgstr "Настройки для user.conf"
#~ msgid "" #~ msgid ""
#~ "This program comes with absolutely no warranty.\n" #~ "This program comes with absolutely no warranty.\n"
#~ "See the License for details." #~ "See the License for details."
@ -2381,6 +2353,9 @@ msgstr "БИБЛИОТЕКИ"
#~ msgid "MIT License" #~ msgid "MIT License"
#~ msgstr "Лицензия Массачусетского технологического института (MIT License)" #~ msgstr "Лицензия Массачусетского технологического института (MIT License)"
#~ msgid "(Can be selected and copied)"
#~ msgstr "(можно выделить и скопировать)"
#~ msgid "Copyright" #~ msgid "Copyright"
#~ msgstr "Авторские права" #~ msgstr "Авторские права"

@ -51,12 +51,17 @@ getAppExe() {
getAppTarget() { getAppTarget() {
exe=$(getAppExe "$1") exe=$(getAppExe "$1")
[[ -n "${exe}" ]] && parseSteamTargetExe "${exe}" if [[ -n "${exe}" ]]; then
if [[ "${exe}" =~ .sh$ ]]; then
parseSteamTargetExe "${exe}"
else
echo "${exe}";
fi
fi
} }
getSteamGameId() { getSteamGameId() {
# printf "%u\n" $(($1 << 32 | 0x02000000)) printf "%u\n" $(($1 << 32 | 0x02000000))
printf "%u\n" $(($1 * 4294967296 + 0x02000000))
} }
getAppId() { getAppId() {
@ -68,46 +73,28 @@ getSteamId() {
local cache_file="${PORT_WINE_TMP_PATH:-/tmp}/steamid_cache.json" local cache_file="${PORT_WINE_TMP_PATH:-/tmp}/steamid_cache.json"
local applist_cache_file="${PORT_WINE_TMP_PATH:-/tmp}/steamapplist_cache.json" local applist_cache_file="${PORT_WINE_TMP_PATH:-/tmp}/steamapplist_cache.json"
[[ -n "${1:-}" ]] && NOSTAPPNAME="$1" [[ -n "${1:-}" ]] && NOSTAPPNAME="$1"
[[ -z "${NOSTAPPNAME}" ]] && return 1
if [[ -z "${SteamIds:-}" ]] && [[ -f "${cache_file}" ]]; then if [[ -z "${SteamIds:-}" ]] && [[ -f "${cache_file}" ]]; then
SteamIds=$(<"${cache_file}") SteamIds=$(<"${cache_file}")
fi fi
if [[ -n "${1:-}" ]] && [[ -n "${SteamIds:-}" ]] && jq -e --arg key "${NOSTAPPNAME}" 'has($key)' <<< "${SteamIds}" > /dev/null; then if [[ -n "${SteamIds:-}" ]] && jq -e --arg key "${NOSTAPPNAME}" 'has($key)' <<< "${SteamIds}" > /dev/null; then
SteamAppId=$(jq -r --arg key "${NOSTAPPNAME}" '.[$key]' <<< "${SteamIds}") SteamAppId=$(jq -r --arg key "${NOSTAPPNAME}" '.[$key]' <<< "${SteamIds}")
else else
if [[ -n "${2:-}" ]]; then if [[ -n "${1:-}" ]] && [[ "${USE_STEAMGRIDDB:-1}" == "1" ]]; then
NOSTAPPPATH="$2" getSteamGridDBId "${NOSTAPPNAME}" > /dev/null
[[ -f "${NOSTAPPPATH}.ppdb" ]] && source "${NOSTAPPPATH}.ppdb"
fi fi
[[ -n "${STEAM_APP_ID:-}" ]] && SteamAppId="${STEAM_APP_ID}" if [[ ${SteamGridDBTypeSteam} == true ]]; then
if [[ -z "${SteamAppId:-}" ]] && [[ -n "${NOSTAPPPATH:-}" ]]; then SRES=$(curl -Ls --connect-timeout 5 -m 10 -e "https://www.steamgriddb.com/game/${SteamGridDBId}" "https://www.steamgriddb.com/api/public/game/${SteamGridDBId}")
local paths=("steam_appid.txt" "steam_emu.ini" "steam_api.ini" "steam_api64.ini") if jq -e ".success == true" <<< "${SRES}" > /dev/null 2>&1; then
local conditions=$(printf " -o -name %q" "${paths[@]}") SteamAppId="$(jq -r '.data.platforms.steam.id' <<< "${SRES}")"
local file=$(find "$(dirname "${NOSTAPPPATH}")" -type f \( ${conditions# -o} \) -print -quit 2>/dev/null)
if [[ -n "${file}" ]]; then
if [[ "${file}" == *"steam_appid.txt" ]]; then
SteamAppId=$(cat "${file}" | tr -d '\r\n')
else
SteamAppId=$(grep -i "^AppId=" "${file}" | cut -d'=' -f2 | head -1 | tr -d '\r\n')
fi
fi fi
fi elif [[ "${USE_STEAMGRIDDB:-1}" == "0" ]]; then
if [[ -z "${SteamAppId:-}" ]]; then if [[ ! -f "${applist_cache_file}" ]] || [[ $(find "${applist_cache_file}" -mmin +1440) ]]; then
[[ "${USE_STEAMGRIDDB:-1}" == "1" ]] && getSteamGridDBId "${NOSTAPPNAME}" > /dev/null applist_data=$(curl -s --connect-timeout 5 "https://api.steampowered.com/ISteamApps/GetAppList/v2/")
if [[ ${SteamGridDBTypeSteam} == true ]]; then [[ -n "${applist_data}" ]] && echo "${applist_data}" > "${applist_cache_file}"
SRES=$(curl -Ls --connect-timeout 5 -m 10 -e "https://www.steamgriddb.com/game/${SteamGridDBId}" "https://www.steamgriddb.com/api/public/game/${SteamGridDBId}") else
if jq -e ".success == true" <<< "${SRES}" > /dev/null 2>&1; then applist_data=$(<"${applist_cache_file}")
SteamAppId="$(jq -r '.data.platforms.steam.id' <<< "${SRES}")"
fi
elif [[ "${USE_STEAMGRIDDB:-1}" == "0" ]]; then
if [[ ! -f "${applist_cache_file}" ]] || [[ $(find "${applist_cache_file}" -mmin +1440) ]]; then
applist_data=$(curl -s --connect-timeout 5 "https://api.steampowered.com/ISteamApps/GetAppList/v2/")
[[ -n "${applist_data}" ]] && echo "${applist_data}" > "${applist_cache_file}"
else
applist_data=$(<"${applist_cache_file}")
fi
[[ -n "${applist_data}" ]] && SteamAppId=$(jq --arg name "${NOSTAPPNAME,,}" '.applist.apps[] | select(.name == $name) | .appid' <<< "${applist_data,,}")
fi fi
[[ -n "${applist_data}" ]] && SteamAppId=$(jq --arg name "${NOSTAPPNAME,,}" '.applist.apps[] | select(.name == $name) | .appid' <<< "${applist_data,,}")
fi fi
SteamIds=$(jq --arg key "${NOSTAPPNAME}" --arg value "${SteamAppId:-}" '. + {($key): $value}' <<< "${SteamIds:-$(jq -n '{}')}") SteamIds=$(jq --arg key "${NOSTAPPNAME}" --arg value "${SteamAppId:-}" '. + {($key): $value}' <<< "${SteamIds:-$(jq -n '{}')}")
echo "${SteamIds}" > "${cache_file}" echo "${SteamIds}" > "${cache_file}"
@ -191,7 +178,11 @@ getUserPath() {
} }
getSteamPath() { getSteamPath() {
local paths=("${HOME}/.steam/steam" "${HOME}/.local/share/Steam" "${HOME}/.var/app/com.valvesoftware.Steam/.steam/steam") local paths=(
"${HOME}/.steam/steam"
"${HOME}/.local/share/Steam"
"${HOME}/.var/app/com.valvesoftware.Steam/.steam/steam"
)
for path in "${paths[@]}"; do for path in "${paths[@]}"; do
if [[ -d "${path}" ]]; then if [[ -d "${path}" ]]; then
STEAM_BASE_FOLDER="${path}" STEAM_BASE_FOLDER="${path}"
@ -246,8 +237,7 @@ listSteamGames() {
appid="${name}" appid="${name}"
name=$(basename "${exe}" .sh) name=$(basename "${exe}" .sh)
else else
path="$(parseSteamTargetExe "${exe}")" appid="$(getSteamId "${name}")"
appid="$(getSteamId "${name}" "${path}")"
[[ -z "${appid}" ]] && appid="0" [[ -z "${appid}" ]] && appid="0"
fi fi
gid="$(getSteamGameId $id)" gid="$(getSteamGameId $id)"
@ -312,15 +302,13 @@ parseSteamShortcutEntryLaunchOptions() {
} }
parseSteamTargetExe() { parseSteamTargetExe() {
if [[ "$1" =~ .sh$ ]]; then grep -E '^[^# ]*?(flatpak|start\.sh)' "$1" | head -n 1 | sed 's/ "\$@"//' | awk -F'"' '{print $(NF-1)}'
grep -E '^[^# ]*?(flatpak|start\.sh)' "$1" | head -n 1 | sed 's/ "\$@"//' | awk -F'"' '{print $(NF-1)}'
fi
} }
restartSteam() { restartSteam() {
if [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && pgrep -i steam &>/dev/null ; then if [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && pgrep -i steam &>/dev/null ; then
if yad_question "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?" ; then if yad_question "${translations[For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?]}" ; then
pw_start_progress_bar_block "Restarting STEAM... Please wait." pw_start_progress_bar_block "${translations[Restarting STEAM... Please wait.]}"
kill -s SIGTERM $(pgrep -a steam) &>/dev/null kill -s SIGTERM $(pgrep -a steam) &>/dev/null
while pgrep -i steam &>/dev/null ; do while pgrep -i steam &>/dev/null ; do
sleep 0.5 sleep 0.5
@ -345,6 +333,9 @@ downloadImage() {
} }
downloadImageSteam() { downloadImageSteam() {
if [[ -z "${SteamAppId}" ]]; then
getSteamId > /dev/null
fi
if [[ -n "${SteamAppId}" ]]; then if [[ -n "${SteamAppId}" ]]; then
downloadImage "https://cdn.cloudflare.steamstatic.com/steam/apps/${SteamAppId}/$1" "$2" downloadImage "https://cdn.cloudflare.steamstatic.com/steam/apps/${SteamAppId}/$1" "$2"
else else
@ -372,22 +363,16 @@ downloadImageSteamGridDB() {
} }
addGrids() { addGrids() {
local AppId="${NOSTAPPID:-0}" [[ -z "${SteamGridDBId}" ]] && getSteamGridDBId "${name_desktop}" > /dev/null
local in=("header.jpg" "library_600x900_2x.jpg" "library_hero.jpg" "logo.png") if [[ -z "${SteamAppId}" ]] && [[ "${USE_STEAMGRIDDB:-1}" == "0" ]]; then
local out=("${AppId}.jpg" "${AppId}"p".jpg" "${AppId}"_hero".jpg" "${AppId}"_logo".png")
local gtype=("grids" "grids" "heroes" "logos")
local mimes=("image/jpeg" "image/jpeg" "image/jpeg" "image/png")
local dims=("460x215,920x430" "600x900,660x930" "" "")
if [[ -z "${SteamGridDBId}" ]] && [[ -z "${SteamAppId}" ]]; then
getSteamId > /dev/null getSteamId > /dev/null
fi fi
if [[ -n "${SteamGridDBId}" ]] || [[ -n "${SteamAppId}" ]]; then if [[ -n "${SteamGridDBId}" ]] || [[ -n "${SteamAppId}" ]]; then
create_new_dir "${STCFGPATH}/grid" create_new_dir "${STCFGPATH}/grid"
for i in "${!in[@]}"; do downloadImageSteamGridDB "grids" "${NOSTAPPID:-0}.jpg" "mimes=image/jpeg" "dimensions=460x215,920x430" || downloadImageSteam "header.jpg" "${NOSTAPPID:-0}.jpg" || echo "Failed to load header.jpg"
downloadImageSteam "${in[${i}]}" "${out[${i}]}" || \ downloadImageSteamGridDB "grids" "${NOSTAPPID:-0}p.jpg" "mimes=image/jpeg" "dimensions=600x900,660x930" || downloadImageSteam "library_600x900_2x.jpg" "${NOSTAPPID:-0}p.jpg" || echo "Failed to load library_600x900_2x.jpg"
downloadImageSteamGridDB "${gtype[${i}]}" "${out[${i}]}" ${mimes[${i}]:+"mimes=${mimes[${i}]}"} ${dims[${i}]:+"dimensions=${dims[${i}]}"} || \ downloadImageSteamGridDB "heroes" "${NOSTAPPID:-0}_hero.jpg" "mimes=image/jpeg" || downloadImageSteam "library_hero.jpg" "${NOSTAPPID:-0}_hero.jpg" || echo "Failed to load library_hero.jpg"
echo "Failed to load ${in[${i}]}" downloadImageSteamGridDB "logos" "${NOSTAPPID:-0}_logo.png" "mimes=image/png" || downloadImageSteam "logo.png" "${NOSTAPPID:-0}_logo.png" || echo "Failed to load logo.png"
done
else else
echo "Game is not found" echo "Game is not found"
fi fi
@ -489,7 +474,6 @@ addNonSteamGame() {
if [[ -n "${SCPATH}" ]]; then if [[ -n "${SCPATH}" ]]; then
[[ -z "${NOSTSHPATH}" ]] && NOSTSHPATH="${STEAM_SCRIPTS}/${name_desktop}.sh" [[ -z "${NOSTSHPATH}" ]] && NOSTSHPATH="${STEAM_SCRIPTS}/${name_desktop}.sh"
NOSTAPPNAME="${name_desktop}" NOSTAPPNAME="${name_desktop}"
NOSTAPPPATH="${portwine_exe}"
NOSTAPPID=$(getAppId "${NOSTSHPATH}") NOSTAPPID=$(getAppId "${NOSTSHPATH}")
if [[ ! -f "${NOSTSHPATH}" ]]; then if [[ ! -f "${NOSTSHPATH}" ]]; then
create_new_dir "${STEAM_SCRIPTS}" create_new_dir "${STEAM_SCRIPTS}"
@ -498,7 +482,7 @@ addNonSteamGame() {
export LD_PRELOAD= export LD_PRELOAD=
export START_FROM_STEAM=1 export START_FROM_STEAM=1
export START_FROM_FLATPAK=$(check_flatpak && echo 1 || echo 0) export START_FROM_FLATPAK=$(check_flatpak && echo 1 || echo 0)
"${PORT_SCRIPTS_PATH}/start.sh" "${NOSTAPPPATH}" "\$@" "${PORT_SCRIPTS_PATH}/start.sh" "${portwine_exe}" "\$@"
EOF EOF
chmod u+x "${NOSTSHPATH}" chmod u+x "${NOSTSHPATH}"
fi fi
@ -514,7 +498,7 @@ addNonSteamGame() {
fi fi
if [[ "${USE_STEAMAPPID_AS_NAME:-0}" == "1" ]]; then if [[ "${USE_STEAMAPPID_AS_NAME:-0}" == "1" ]]; then
getSteamId > /dev/null SteamAppId=$(getSteamId "${NOSTAPPNAME}")
[[ -n "${SteamAppId}" ]] && NOSTAPPNAME="${SteamAppId}" [[ -n "${SteamAppId}" ]] && NOSTAPPNAME="${SteamAppId}"
fi fi
@ -522,7 +506,7 @@ addNonSteamGame() {
if [[ "${DOWNLOAD_STEAM_GRID}" == "1" ]] ; then if [[ "${DOWNLOAD_STEAM_GRID}" == "1" ]] ; then
NOSTAPPNAME="${name_desktop}" NOSTAPPNAME="${name_desktop}"
pw_start_progress_bar_block "Please wait. downloading covers for ${NOSTAPPNAME}" pw_start_progress_bar_block "${translations[Please wait. downloading covers for]} ${NOSTAPPNAME}"
addGrids addGrids
pw_stop_progress_bar pw_stop_progress_bar
fi fi

@ -203,8 +203,8 @@ generate_pot () {
local FILES_FOR_GETTEXT i local FILES_FOR_GETTEXT i
FILES_FOR_GETTEXT=(functions_helper start.sh setup.sh add_in_steam.sh) FILES_FOR_GETTEXT=(functions_helper start.sh setup.sh add_in_steam.sh)
for i in "${FILES_FOR_GETTEXT[@]}" ; do for i in "${FILES_FOR_GETTEXT[@]}" ; do
sed -e 's/{translations\[/(gettext \"/g' -e 's/]}/")/g' "${PORT_SCRIPTS_PATH}/$i" > "${PORT_SCRIPTS_PATH}/${i}_tmp" sed -e 's/{translations\[/(gettext \"/g' -e 's/]}/")/g' -e 's/eval_translations/gettext/g' \
sed -i '/\[\$/d' "${PORT_SCRIPTS_PATH}/${i}_tmp" "${PORT_SCRIPTS_PATH}/$i" > "${PORT_SCRIPTS_PATH}/${i}_tmp"
done done
#Когда присходит предупреждение: синтаксис $"..." запрещен по соображениям безопасности; используйте eval_gettext #Когда присходит предупреждение: синтаксис $"..." запрещен по соображениям безопасности; используйте eval_gettext
#и ругается на строку в которой нет перевода, можно использовать sed -i '//d' и убрать эту строку #и ругается на строку в которой нет перевода, можно использовать sed -i '//d' и убрать эту строку
@ -240,6 +240,15 @@ generate_pot () {
} }
export -f generate_pot export -f generate_pot
eval_translations () {
# Для того чтобы раскрывать переменную уже после создания массива
# Вместо {translations[\$TEST text]} нужно (eval_translations "\$%TEST% text" "TEST=test"), перевод должен быть с %% тоже
# В остальных случаях можно использовать {translations[\$TEST text]} ,но переменную нужно обьявлять до создания массива
# до source "${PW_CACHE_LANG_PATH}/$LANGUAGE" или можно использовать команды {translations[\$(cat file.txt) text]}
# но тогда выполнение команды будет происходить во время создания массива всегда, а не там где это требуется
echo "${translations[$1]//\$*"%"/${2//*=/}}"
}
create_translations () { create_translations () {
local po_file msgid msgstr local po_file msgid msgstr
[[ ! -d $PW_CACHE_LANG_PATH ]] && create_new_dir "$PW_CACHE_LANG_PATH" [[ ! -d $PW_CACHE_LANG_PATH ]] && create_new_dir "$PW_CACHE_LANG_PATH"
@ -665,6 +674,7 @@ var_winedlloverride_update () {
export WINEDLLOVERRIDES="${1}${WINEDLLOVERRIDES:+;$WINEDLLOVERRIDES}" export WINEDLLOVERRIDES="${1}${WINEDLLOVERRIDES:+;$WINEDLLOVERRIDES}"
} }
var_vkd3d_config_update () { var_vkd3d_config_update () {
if echo "$VKD3D_CONFIG" | grep "$1" if echo "$VKD3D_CONFIG" | grep "$1"
then return 0 then return 0
@ -1652,9 +1662,10 @@ init_wine_ver () {
if [[ -d "${WINEDIR}" ]] ; then if [[ -d "${WINEDIR}" ]] ; then
[[ ! -f "${WINEDIR}/version" ]] && echo "${PW_WINE_USE}" > "${WINEDIR}/version" [[ ! -f "${WINEDIR}/version" ]] && echo "${PW_WINE_USE}" > "${WINEDIR}/version"
if [[ ! -d "${WINEDIR}/lib64/wine" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then if [[ ! -d "${WINEDIR}/lib64/" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then
create_new_dir "${WINEDIR}/lib64/" create_new_dir "${WINEDIR}/lib64/wine"
try_force_link_dir "${WINEDIR}/lib/wine/" "${WINEDIR}/lib64/" mv -f "${WINEDIR}/lib/wine/x86_64-unix" "${WINEDIR}/lib64/wine/"
mv -f "${WINEDIR}/lib/wine/x86_64-windows" "${WINEDIR}/lib64/wine/"
fi fi
for mono_gecko_chk in "mono" "gecko" ; do for mono_gecko_chk in "mono" "gecko" ; do
@ -1686,16 +1697,14 @@ init_wine_ver () {
fi fi
fi fi
WINEDLLPATH="${WINEDIR}/lib/wine" export WINEDLLPATH="${WINEDIR}/lib64/wine:${WINEDIR}/lib/wine"
[[ ! -L "${WINEDIR}/lib64/wine" ]] && WINEDLLPATH+=":${WINEDIR}/lib64/wine" if [[ -d "${PATH_TO_GAME}" ]] ; then
[[ -d "${PATH_TO_GAME}" ]] && WINEDLLPATH+=":${PATH_TO_GAME}" export WINEDLLPATH+=":${PATH_TO_GAME}"
export WINEDLLPATH fi
fi fi
if ! check_flatpak ; then if ! check_flatpak ; then
WINE_LIBRARY_PATH="${WINEDIR}/lib" export WINE_LIBRARY_PATH="${WINEDIR}/lib64:${WINEDIR}/lib"
[[ -d "${WINEDIR}/lib64/gstreamer-1.0" ]] && WINE_LIBRARY_PATH+=":${WINEDIR}/lib64"
export WINE_LIBRARY_PATH
fi fi
export MEDIACONV_BLANK_VIDEO_FILE="${WINEDIR}"/share/media/blank.mkv export MEDIACONV_BLANK_VIDEO_FILE="${WINEDIR}"/share/media/blank.mkv
@ -1932,10 +1941,18 @@ pw_kill_autostart () {
export -f pw_kill_autostart export -f pw_kill_autostart
pw_exit_tray () { pw_exit_tray () {
read -r -a PGREP_TRAY_GUI_PP < <(pgrep -a tray_gui_pp) if [[ "$XDG_SESSION_TYPE" == "tty" ]] ; then
[[ -n ${PGREP_TRAY_GUI_PP[0]} ]] && kill -s SIGUSR1 "${PGREP_TRAY_GUI_PP[0]}" 2>/dev/null if [[ -n "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" ]] ; then
read -r -a PGREP_YAD_GUI_PP < <(pgrep -a yad_gui_pp) kill -s SIGUSR1 "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')"
[[ -n ${PGREP_YAD_GUI_PP[0]} ]] && kill -s SIGUSR1 "${PGREP_YAD_GUI_PP[0]}" 2>/dev/null fi
else
if [[ -n "$(pgrep -a tray_gui_pp)" ]] ; then
kill -s SIGUSR1 $(pgrep -a tray_gui_pp) 2>/dev/null
fi
fi
if [[ -n "$(pgrep -a yad_gui_pp)" ]] ; then
kill -s SIGUSR1 $(pgrep -a yad_gui_pp) 2>/dev/null
fi
} }
export -f pw_exit_tray export -f pw_exit_tray
@ -2301,8 +2318,6 @@ check_nvidia_rtx () {
[[ "$LSPCI_VGA" == *GA[0-9]* ]] && return 0 [[ "$LSPCI_VGA" == *GA[0-9]* ]] && return 0
# Ada_Lovelace # Ada_Lovelace
[[ "$LSPCI_VGA" == *AD[0-9]* ]] || [[ "$LSPCI_VGA" == *2[6-8][0-9]* ]] && return 0 [[ "$LSPCI_VGA" == *AD[0-9]* ]] || [[ "$LSPCI_VGA" == *2[6-8][0-9]* ]] && return 0
# Blackwell and Blackwell 2.0
[[ "$LSPCI_VGA" == *GB[0-9]* ]] && return 0
fi fi
return 1 return 1
} }
@ -2454,6 +2469,7 @@ pw_init_db () {
;; ;;
esac esac
[[ "${START_FROM_STEAM}" == 1 ]] && export PW_GUI_DISABLED_CS=1 [[ "${START_FROM_STEAM}" == 1 ]] && export PW_GUI_DISABLED_CS=1
[[ "${START_FROM_PP_GUI}" == 1 ]] && export PW_GUI_DISABLED_CS=0 && unset START_FROM_PP_GUI [[ "${START_FROM_PP_GUI}" == 1 ]] && export PW_GUI_DISABLED_CS=0 && unset START_FROM_PP_GUI
@ -2754,7 +2770,6 @@ pw_skip_get_info () {
export LSPCI_VGA export LSPCI_VGA
fi fi
# TODO: Add NVIDIA Smooth Motion
if check_nvidia_rtx ; then if check_nvidia_rtx ; then
check_variables PW_USE_NVAPI_AND_DLSS "1" check_variables PW_USE_NVAPI_AND_DLSS "1"
check_variables PW_USE_FAKE_DLSS "0" check_variables PW_USE_FAKE_DLSS "0"
@ -3059,7 +3074,6 @@ pw_create_unique_exe () {
else else
print_warning "There are no arguments for creating a symbolic link! Skip it..." print_warning "There are no arguments for creating a symbolic link! Skip it..."
fi fi
try_remove_file "${portwine_exe}.ppdb"
popd || fatal popd || fatal
fi fi
} }
@ -3186,7 +3200,6 @@ start_portwine () {
done done
LIST_ICU_DLL_LINKS="icuin68 icuuc68 icudt68" LIST_ICU_DLL_LINKS="icuin68 icuuc68 icudt68"
[[ -d "${WINEDIR}/lib/icu32" ]] && mv "${WINEDIR}/lib/icu32" "${WINEDIR}/lib/icu"
for dll in $LIST_ICU_DLL_LINKS ; do for dll in $LIST_ICU_DLL_LINKS ; do
if [[ -f "${WINEDIR}/lib/icu/${dll}.dll" ]] ; then if [[ -f "${WINEDIR}/lib/icu/${dll}.dll" ]] ; then
try_force_link_file "${WINEDIR}/lib/icu/${dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${dll}.dll" try_force_link_file "${WINEDIR}/lib/icu/${dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${dll}.dll"
@ -3689,40 +3702,6 @@ start_portwine () {
fi fi
fi fi
if [[ $PW_USE_SUPPLIED_DXVK_VKD3D == "1" ]] \
&& [[ ! $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] \
&& [[ ! $PW_VULKAN_USE =~ (0|3) ]] \
&& [[ -f "${WINEDIR}/lib64/wine/dxvk/d3d9.dll" ]] ; then
if [[ -f "${WINEDIR}/lib64/wine/dxvk/d3d10.dll" && -f "${WINEDIR}/lib64/wine/dxvk/d3d10_1.dll" ]] ; then
CP_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi"
CP_WINE_FILES=""
else
CP_DXVK_FILES="d3d11 d3d10core d3d9 dxgi"
CP_WINE_FILES="d3d10_1 d3d10"
fi
if [[ $PW_DGVOODOO2 != "1" ]] ; then
if [[ -f "${WINEDIR}/lib64/wine/d8vk/d3d8.dll" ]] ; then
try_force_link_file "${WINEDIR}/lib/wine/d8vk/d3d8.dll" "${WINEPREFIX}/drive_c/windows/syswow64/d3d8.dll"
try_force_link_file "${WINEDIR}/lib64/wine/d8vk/d3d8.dll" "${WINEPREFIX}/drive_c/windows/system32/d3d8.dll"
var_winedlloverride_update "d3d8=n"
elif [[ -f "${WINEDIR}/lib64/wine/dxvk/d3d8.dll" ]]
then add_to_var CP_DXVK_FILES "d3d8"
else add_to_var CP_WINE_FILES "d3d8"
fi
fi
if [[ -f "${WINEDIR}/lib64/wine/vkd3d-proton/d3d12core.dll" && -f "${WINEDIR}/lib64/vkd3d/libvkd3d-1.dll" ]] ; then
CP_VKD3D_FILES="d3d12 d3d12core libvkd3d-1 libvkd3d-shader-1"
elif [[ -f "${WINEDIR}/lib64/wine/vkd3d-proton/d3d12.dll" && -f "${WINEDIR}/lib64/vkd3d/libvkd3d-shader-1.dll" ]] ; then
CP_VKD3D_FILES="d3d12 libvkd3d-1 libvkd3d-shader-1"
add_to_var CP_WINE_FILES "d3d12core"
else
CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
add_to_var CP_WINE_FILES "d3d12 d3d12core"
fi
else
PW_USE_SUPPLIED_DXVK_VKD3D="0"
fi
# DGVOODOO2 enable: # DGVOODOO2 enable:
if [[ "${PW_DGVOODOO2}" == "1" ]] ; then if [[ "${PW_DGVOODOO2}" == "1" ]] ; then
print_info "Try create symlink DGVOODOO2 files..." print_info "Try create symlink DGVOODOO2 files..."
@ -3736,31 +3715,26 @@ start_portwine () {
try_force_link_file "${PATH_TO_DGV2_FILES}/x64/d3d9.dll" "${WINEPREFIX}/drive_c/windows/system32/d3d9.dll" try_force_link_file "${PATH_TO_DGV2_FILES}/x64/d3d9.dll" "${WINEPREFIX}/drive_c/windows/system32/d3d9.dll"
try_remove_file "${WINEPREFIX}/drive_c/windows/system32/dgVoodoo.conf" try_remove_file "${WINEPREFIX}/drive_c/windows/system32/dgVoodoo.conf"
try_force_link_file "${DGV2CONF}" "${WINEPREFIX}/drive_c/windows/system32/dgVoodoo.conf" try_force_link_file "${DGV2CONF}" "${WINEPREFIX}/drive_c/windows/system32/dgVoodoo.conf"
case "${PW_VULKAN_USE}" in
if [[ $PW_USE_SUPPLIED_DXVK_VKD3D == "1" ]] ; then 0)
rm_from_var CP_DXVK_FILES "d3d9" rm_from_var CP_WINE_FILES "d3d9 d3d8"
else ;;
case "${PW_VULKAN_USE}" in 1)
0) rm_from_var CP_DXVK_FILES "d3d9"
rm_from_var CP_WINE_FILES "d3d9 d3d8" rm_from_var CP_WINE_FILES "d3d8"
;; ;;
1) 2)
rm_from_var CP_DXVK_FILES "d3d9" rm_from_var CP_DXVK_FILES "d3d9 d3d8"
rm_from_var CP_WINE_FILES "d3d8" ;;
;; 3)
2) rm_from_var CP_GALLIUM_NINE_FILES "d3d9"
rm_from_var CP_DXVK_FILES "d3d9 d3d8" rm_from_var CP_WINE_FILES "d3d8"
;; ;;
3) 5)
rm_from_var CP_GALLIUM_NINE_FILES "d3d9" rm_from_var CP_DXVK_FILES "d3d9"
rm_from_var CP_WINE_FILES "d3d8" rm_from_var CP_WINE_FILES "d3d8"
;; ;;
5) esac
rm_from_var CP_DXVK_FILES "d3d9"
rm_from_var CP_WINE_FILES "d3d8"
;;
esac
fi
fi fi
if [[ "${PW_DGV2_GLIDE_NAPALM}" == "1" ]] ; then if [[ "${PW_DGV2_GLIDE_NAPALM}" == "1" ]] ; then
@ -3951,16 +3925,13 @@ start_portwine () {
if [[ -n "$CP_DXVK_FILES" ]] ; then if [[ -n "$CP_DXVK_FILES" ]] ; then
print_info "Try create symlink DXVK files..." print_info "Try create symlink DXVK files..."
for wine_dxvk_dll in $CP_DXVK_FILES ; do for wine_dxvk_dll in $CP_DXVK_FILES ; do
if [[ $PW_USE_SUPPLIED_DXVK_VKD3D == "1" ]] ; then if [[ -f "${PATH_TO_DXVK_FILES}/x64/${wine_dxvk_dll}.dll" ]] ; then
try_force_link_file "${WINEDIR}/lib/wine/dxvk/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_dxvk_dll}.dll"
try_force_link_file "${WINEDIR}/lib64/wine/dxvk/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_dxvk_dll}.dll"
else
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}/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" try_force_link_file "${PATH_TO_DXVK_FILES}/x64/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_dxvk_dll}.dll"
fi if [[ "$PW_USE_FAKE_DLSS_3" == "1" ]] && [[ "$wine_dxvk_dll" == dxgi ]]
if [[ $PW_USE_FAKE_DLSS_3 == "1" ]] && [[ $wine_dxvk_dll == "dxgi" ]] then var_winedlloverride_update "dxgi=n,b"
then var_winedlloverride_update "dxgi=n,b" else var_winedlloverride_update "${wine_dxvk_dll}=n"
else var_winedlloverride_update "${wine_dxvk_dll}=n" fi
fi fi
done done
create_new_dir "${PATH_TO_DXVK_FILES}/dxvk_cache" create_new_dir "${PATH_TO_DXVK_FILES}/dxvk_cache"
@ -3970,15 +3941,9 @@ start_portwine () {
if [[ "$DXVK_ENABLE_NVAPI" == "1" ]] ; then if [[ "$DXVK_ENABLE_NVAPI" == "1" ]] ; then
print_info "Try create symlink NVAPI files..." print_info "Try create symlink NVAPI files..."
if [[ $PW_USE_SUPPLIED_DXVK_VKD3D == "1" ]] && [[ -f "${WINEDIR}/lib64/wine/nvapi/nvapi64.dll" ]] ; then try_force_link_file "${PATH_TO_DXVK_FILES}/x32/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/nvapi.dll"
try_force_link_file "${WINEDIR}/lib/wine/nvapi/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/nvapi.dll" try_force_link_file "${PATH_TO_DXVK_FILES}/x64/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/nvapi64.dll"
try_force_link_file "${WINEDIR}/lib64/wine/nvapi/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/nvapi64.dll" try_force_link_file "${PATH_TO_DXVK_FILES}/x64/nvofapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/nvofapi64.dll"
try_force_link_file "${WINEDIR}/lib64/wine/nvapi/nvofapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/nvofapi64.dll"
else
try_force_link_file "${PATH_TO_DXVK_FILES}/x32/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/nvapi.dll"
try_force_link_file "${PATH_TO_DXVK_FILES}/x64/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/nvapi64.dll"
try_force_link_file "${PATH_TO_DXVK_FILES}/x64/nvofapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/nvofapi64.dll"
fi
var_winedlloverride_update "nvapi64,nvofapi64,nvapi=n;nvcuda=b" var_winedlloverride_update "nvapi64,nvofapi64,nvapi=n;nvcuda=b"
else else
try_remove_file "${WINEPREFIX}/drive_c/windows/syswow64/nvapi.dll" try_remove_file "${WINEPREFIX}/drive_c/windows/syswow64/nvapi.dll"
@ -3989,20 +3954,11 @@ start_portwine () {
if [[ -n "$CP_VKD3D_FILES" ]] ; then if [[ -n "$CP_VKD3D_FILES" ]] ; then
print_info "Try create symlink VKD3D files..." print_info "Try create symlink VKD3D files..."
for wine_vkd3d_dll in $CP_VKD3D_FILES ; do for wine_vkd3d_dll in $CP_VKD3D_FILES ; do
if [[ $PW_USE_SUPPLIED_DXVK_VKD3D == "1" ]] ; then if [[ -f "${PATH_TO_VKD3D_FILES}/x64/${wine_vkd3d_dll}.dll" ]] ; then
if [[ $wine_vkd3d_dll =~ d3d12 ]] ; then
try_force_link_file "${WINEDIR}/lib/wine/vkd3d-proton/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_vkd3d_dll}.dll"
try_force_link_file "${WINEDIR}/lib64/wine/vkd3d-proton/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_vkd3d_dll}.dll"
fi
if [[ $wine_vkd3d_dll =~ libvkd3d ]] ; then
try_force_link_file "${WINEDIR}/lib/vkd3d/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_vkd3d_dll}.dll"
try_force_link_file "${WINEDIR}/lib64/vkd3d/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_vkd3d_dll}.dll"
fi
else
try_force_link_file "${PATH_TO_VKD3D_FILES}/x86/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_vkd3d_dll}.dll" try_force_link_file "${PATH_TO_VKD3D_FILES}/x86/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/${wine_vkd3d_dll}.dll"
try_force_link_file "${PATH_TO_VKD3D_FILES}/x64/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_vkd3d_dll}.dll" try_force_link_file "${PATH_TO_VKD3D_FILES}/x64/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/${wine_vkd3d_dll}.dll"
var_winedlloverride_update "${wine_vkd3d_dll}=n"
fi fi
var_winedlloverride_update "${wine_vkd3d_dll}=n"
done done
create_new_dir "${PATH_TO_VKD3D_FILES}/vkd3d_cache" create_new_dir "${PATH_TO_VKD3D_FILES}/vkd3d_cache"
export VKD3D_SHADER_CACHE_PATH="${PATH_TO_VKD3D_FILES}/vkd3d_cache" export VKD3D_SHADER_CACHE_PATH="${PATH_TO_VKD3D_FILES}/vkd3d_cache"
@ -4151,7 +4107,7 @@ start_portwine () {
echo "Try to install DLL in prefix: ${PW_DLL_NEED_INSTALL}" >> "${PW_TMPFS_PATH}/update_pfx_log" echo "Try to install DLL in prefix: ${PW_DLL_NEED_INSTALL}" >> "${PW_TMPFS_PATH}/update_pfx_log"
print_info "Try to install DLL in prefix: ${PW_DLL_NEED_INSTALL}" print_info "Try to install DLL in prefix: ${PW_DLL_NEED_INSTALL}"
${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ ${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
"${PORT_WINE_TMP_PATH}/winetricks" -q -f ${PW_DLL_NEED_INSTALL} | tee -a "${PW_TMPFS_PATH}/update_pfx_log" "${PORT_WINE_TMP_PATH}/winetricks" -q -r -f ${PW_DLL_NEED_INSTALL} | tee -a "${PW_TMPFS_PATH}/update_pfx_log"
wait_wineserver wait_wineserver
kill_portwine kill_portwine
fi fi
@ -4203,6 +4159,7 @@ start_portwine () {
get_and_set_reg_file --delete 'Software\Wine\Drivers' 'Graphics' get_and_set_reg_file --delete 'Software\Wine\Drivers' 'Graphics'
fi fi
case "$PW_SOUND_DRIVER_USE" in case "$PW_SOUND_DRIVER_USE" in
pulse) get_and_set_reg_file --add 'Software\Wine\Drivers' 'Audio' 'REG_SZ' "pulse" "user" ;; pulse) get_and_set_reg_file --add 'Software\Wine\Drivers' 'Audio' 'REG_SZ' "pulse" "user" ;;
alsa) get_and_set_reg_file --add 'Software\Wine\Drivers' 'Audio' 'REG_SZ' "alsa" "user" ;; alsa) get_and_set_reg_file --add 'Software\Wine\Drivers' 'Audio' 'REG_SZ' "alsa" "user" ;;
@ -4378,6 +4335,7 @@ pw_run () {
if file "$portwine_exe" | grep -q "x86-64" ; then if file "$portwine_exe" | grep -q "x86-64" ; then
print_info "file: $portwine_exe is x86-64, force set WINE_LARGE_ADDRESS_AWARE to 0" print_info "file: $portwine_exe is x86-64, force set WINE_LARGE_ADDRESS_AWARE to 0"
export WINE_LARGE_ADDRESS_AWARE="0" export WINE_LARGE_ADDRESS_AWARE="0"
export WINELOADER="${WINELOADER}64"
else else
print_info "file: $portwine_exe not x86-64, force set WINE_LARGE_ADDRESS_AWARE to 1" print_info "file: $portwine_exe not x86-64, force set WINE_LARGE_ADDRESS_AWARE to 1"
export WINE_LARGE_ADDRESS_AWARE="1" export WINE_LARGE_ADDRESS_AWARE="1"
@ -4390,7 +4348,7 @@ pw_run () {
PW_LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" PW_LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}"
print_var "WINEDIR" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_WINE_USE" "PW_VULKAN_USE" "VULKAN_DRIVER_NAME" print_var "WINEDIR" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_WINE_USE" "PW_VULKAN_USE" "VULKAN_DRIVER_NAME"
print_var "WINELOADER" "VKD3D_CONFIG" "PW_LD_LIBRARY_PATH" "PATH" "WINEESYNC" "WINEFSYNC" "WINEFSYNC_FUTEX2" print_var "WINELOADER" "VKD3D_CONFIG" "PW_LD_LIBRARY_PATH" "PATH" "WINEESYNC" "WINEFSYNC" "WINEFSYNC_FUTEX2"
print_var "WINEDLLPATH" "WINE_CPU_TOPOLOGY" "PW_RUN_GAMESCOPE" "LD_LIBRARY_PATH" "PW_VK_ICD_FILENAMES" "PW_TASKSET_SLR" print_var "WINEDLLPATH" "WINE_CPU_TOPOLOGY" "PW_RUN_GAMESCOPE" "LD_LIBRARY_PATH" "PW_VK_ICD_FILENAMES"
proxy_launch_parameters=${LAUNCH_PARAMETERS//\\\\/\\} proxy_launch_parameters=${LAUNCH_PARAMETERS//\\\\/\\}
if [[ "$PW_USE_RUNTIME" == 1 ]] \ if [[ "$PW_USE_RUNTIME" == 1 ]] \
&& [[ "$PW_WINE_USE" != "USE_SYSTEM_WINE" ]] && [[ "$PW_WINE_USE" != "USE_SYSTEM_WINE" ]]
@ -4405,8 +4363,7 @@ pw_run () {
print_info "Log from RUNTIME and WINE:" print_info "Log from RUNTIME and WINE:"
${PW_RUN_GAMESCOPE} \ ${PW_RUN_GAMESCOPE} \
${PW_POWERPROFILECTL_SLR} \ ${PW_POWERPROFILECTL_SLR} \
${PW_INHIBIT_SLR} \ ${PW_INHIBIT_SLR}\
${PW_TASKSET_SLR} \
${pw_runtime} \ ${pw_runtime} \
LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \
LD_PRELOAD="${PW_LD_PRELOAD}" \ LD_PRELOAD="${PW_LD_PRELOAD}" \
@ -4425,8 +4382,7 @@ pw_run () {
echo "Log WINE:" > "${PW_LOG_TO_FILE}" echo "Log WINE:" > "${PW_LOG_TO_FILE}"
${PW_RUN_GAMESCOPE} \ ${PW_RUN_GAMESCOPE} \
${PW_POWERPROFILECTL_SLR} \ ${PW_POWERPROFILECTL_SLR} \
${PW_INHIBIT_SLR} \ ${PW_INHIBIT_SLR}\
${PW_TASKSET_SLR} \
${pw_runtime} \ ${pw_runtime} \
LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \
LD_PRELOAD="${PW_LD_PRELOAD}" \ LD_PRELOAD="${PW_LD_PRELOAD}" \
@ -4462,8 +4418,7 @@ pw_run () {
${PW_POWERPROFILECTL_SLR} \ ${PW_POWERPROFILECTL_SLR} \
${PW_MANGOHUD_SLR} \ ${PW_MANGOHUD_SLR} \
${PW_DISPLAY} \ ${PW_DISPLAY} \
${PW_INHIBIT_SLR} \ ${PW_INHIBIT_SLR}\
${PW_TASKSET_SLR} \
"${WINELOADER}" "$@" ${proxy_launch_parameters} &>>"${PW_LOG_TO_FILE}" "${WINELOADER}" "$@" ${proxy_launch_parameters} &>>"${PW_LOG_TO_FILE}"
wait_wineserver wait_wineserver
else else
@ -4482,8 +4437,7 @@ pw_run () {
${PW_POWERPROFILECTL_SLR} \ ${PW_POWERPROFILECTL_SLR} \
${PW_MANGOHUD_SLR} \ ${PW_MANGOHUD_SLR} \
${PW_DISPLAY} \ ${PW_DISPLAY} \
${PW_INHIBIT_SLR} \ ${PW_INHIBIT_SLR}\
${PW_TASKSET_SLR} \
"${WINELOADER}" "$@" ${proxy_launch_parameters} "${WINELOADER}" "$@" ${proxy_launch_parameters}
wait_wineserver wait_wineserver
fi fi
@ -4839,7 +4793,7 @@ open_changelog () {
export -f open_changelog export -f open_changelog
pw_tray_icon () { pw_tray_icon () {
if [[ "$XDG_SESSION_TYPE" == "tty" || "$(readlink -f /bin/sh)" == *"/dash" ]] ; then if [[ "$XDG_SESSION_TYPE" == "tty" ]] ; then
if [[ -n "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" ]] ; then if [[ -n "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" ]] ; then
kill -s SIGUSR1 "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" kill -s SIGUSR1 "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')"
fi fi
@ -4865,7 +4819,7 @@ pw_tray_icon () {
} }
export -f tray_icon_click_exit export -f tray_icon_click_exit
if [[ "$XDG_SESSION_TYPE" == "tty" || "$(readlink -f /bin/sh)" == *"/dash" ]] ; then if [[ "$XDG_SESSION_TYPE" == "tty" ]] ; then
tray_icon_click () { tray_icon_click () {
echo "" echo ""
} }
@ -4891,7 +4845,6 @@ gui_proton_downloader () {
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_pw_git" try_remove_file "${PW_TMPFS_PATH}/tmp_proton_pw_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" try_remove_file "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" try_remove_file "${PW_TMPFS_PATH}/tmp_proton_cachyos_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_sarek_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_ge_git" try_remove_file "${PW_TMPFS_PATH}/tmp_proton_ge_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" try_remove_file "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git"
try_remove_file "${PW_TMPFS_PATH}/tmp_installed_wine" try_remove_file "${PW_TMPFS_PATH}/tmp_installed_wine"
@ -4956,14 +4909,6 @@ gui_proton_downloader () {
echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_proton_cachyos_git"
done done
fi fi
# PROTON_SAREK
read -r -d '' -a PROTON_SAREK_GIT < <(curl -s "https://api.github.com/repos/pythonlover02/Proton-Sarek/releases" | grep "browser_download_url.*\.tar\.gz" | cut -d \" -f 4)
if [[ -n "${PROTON_SAREK_GIT[0]}" ]] ; then
for PGEGIT in "${PROTON_SAREK_GIT[@]}" ; do
echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.gz//' >> "${PW_TMPFS_PATH}/tmp_proton_sarek_git"
done
fi
pw_stop_progress_bar pw_stop_progress_bar
@ -4976,7 +4921,7 @@ gui_proton_downloader () {
for INSTALLING_VERSION_IN_DIST in * ; do for INSTALLING_VERSION_IN_DIST in * ; do
sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PW_TMPFS_PATH}/tmp_proton_pw_git" \ sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PW_TMPFS_PATH}/tmp_proton_pw_git" \
"${PW_TMPFS_PATH}/tmp_proton_ge_git" "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" \ "${PW_TMPFS_PATH}/tmp_proton_ge_git" "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" \
"${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" "${PW_TMPFS_PATH}/tmp_proton_sarek_git" "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" "${PW_TMPFS_PATH}/tmp_proton_cachyos_git"
done done
popd 1>/dev/null || fatal popd 1>/dev/null || fatal
@ -4985,7 +4930,6 @@ gui_proton_downloader () {
TMP_PROTON_KR_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" | tr '\n' ' ')" TMP_PROTON_KR_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" | tr '\n' ' ')"
TMP_PROTON_CU_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" | tr '\n' ' ')" TMP_PROTON_CU_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" | tr '\n' ' ')"
TMP_PROTON_CACHYOS_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" | tr '\n' ' ')" TMP_PROTON_CACHYOS_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" | tr '\n' ' ')"
TMP_PROTON_SAREK_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_sarek_git" | tr '\n' ' ')"
ls -l ${PORT_WINE_PATH}/data/dist | awk '{print $9}' | sed -e "/$PW_PROTON_LG_VER/d" -e "/$PW_WINE_LG_VER/d" -e '/^$/d' 1>"${PW_TMPFS_PATH}/tmp_installed_wine" ls -l ${PORT_WINE_PATH}/data/dist | awk '{print $9}' | sed -e "/$PW_PROTON_LG_VER/d" -e "/$PW_WINE_LG_VER/d" -e '/^$/d' 1>"${PW_TMPFS_PATH}/tmp_installed_wine"
TMP_INSTALLED_WINE="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_installed_wine" | tr '\n' ' ')" TMP_INSTALLED_WINE="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_installed_wine" | tr '\n' ' ')"
@ -5037,14 +4981,6 @@ gui_proton_downloader () {
"${pw_yad}" --plug=$KEY_WINE --tabnum=6 --list --checklist --separator="" \ "${pw_yad}" --plug=$KEY_WINE --tabnum=6 --list --checklist --separator="" \
--gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" --gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" \ --gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" --gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" \
--column "${translations[Set]}" \ --column "${translations[Set]}" \
--column "${translations[Select WINE for download:]}" \
$TMP_PROTON_SAREK_GIT \
1>> "${PW_TMPFS_PATH}/tmp_set_wine" \
2>/dev/null &
"${pw_yad}" --plug=$KEY_WINE --tabnum=7 --list --checklist --separator="" \
--gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" --gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" \
--column "${translations[Set]}" \
--column "${translations[Select installed WINE for delete:]}" \ --column "${translations[Select installed WINE for delete:]}" \
$TMP_INSTALLED_WINE \ $TMP_INSTALLED_WINE \
1> "${PW_TMPFS_PATH}/tmp_installed_wine_set" \ 1> "${PW_TMPFS_PATH}/tmp_installed_wine_set" \
@ -5059,7 +4995,6 @@ gui_proton_downloader () {
--tab="PROTON-GE!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \ --tab="PROTON-GE!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="WINE-GE-CUSTOM!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \ --tab="WINE-GE-CUSTOM!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="PROTON-CACHYOS!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \ --tab="PROTON-CACHYOS!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="PROTON-SAREK!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--tab="${translations[INSTALLED]}!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \ --tab="${translations[INSTALLED]}!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
--button="${translations[CANCEL]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!":1 \ --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 --button="${translations[OK]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!":0 2>/dev/null
@ -5130,7 +5065,7 @@ gui_proton_downloader () {
if [[ "$1" != "silent" ]] ; then if [[ "$1" != "silent" ]] ; then
for GIVE_ALL_WINE in ${VERSION_WINE_GIT} ; do for GIVE_ALL_WINE in ${VERSION_WINE_GIT} ; do
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" "${PROTON_SAREK_GIT[@]}" ; do for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" ; do
if [[ ${GIVE_WINE_URL^^} =~ ${GIVE_ALL_WINE^^}.TAR ]] ; then if [[ ${GIVE_WINE_URL^^} =~ ${GIVE_ALL_WINE^^}.TAR ]] ; then
export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL
fi fi
@ -5141,7 +5076,7 @@ gui_proton_downloader () {
restart_pp restart_pp
else else
print_error "$PW_WINE_USE" print_error "$PW_WINE_USE"
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" "${PROTON_SAREK_GIT[@]}" ; do for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" ; do
if [[ ${GIVE_WINE_URL^^} =~ ${PW_WINE_USE^^} ]] ; then if [[ ${GIVE_WINE_URL^^} =~ ${PW_WINE_USE^^} ]] ; then
export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL
fi fi
@ -5160,7 +5095,7 @@ gui_edit_db () {
PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY PW_USE_US_LAYOUT PW_USE_GSTREAMER PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY PW_USE_US_LAYOUT PW_USE_GSTREAMER
PW_USE_SHADER_CACHE PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE PW_USE_SHADER_CACHE PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE
PW_DISABLE_COMPOSITING PW_USE_RUNTIME PW_DINPUT_PROTOCOL PW_USE_NATIVE_WAYLAND PW_USE_GALLIUM_ZINK PW_USE_GALLIUM_NINE PW_DISABLE_COMPOSITING PW_USE_RUNTIME PW_DINPUT_PROTOCOL PW_USE_NATIVE_WAYLAND PW_USE_GALLIUM_ZINK PW_USE_GALLIUM_NINE
PW_USE_DAMAVAND PW_USE_SUPPLIED_DXVK_VKD3D PW_USE_DAMAVAND
) )
if check_wayland_session ; then if check_wayland_session ; then
@ -5216,7 +5151,6 @@ gui_edit_db () {
PW_USE_GALLIUM_ZINK_INFO=${translations[Use Gallium Zink (OpenGL driver is implemented via Vulkan)]} PW_USE_GALLIUM_ZINK_INFO=${translations[Use Gallium Zink (OpenGL driver is implemented via Vulkan)]}
PW_USE_GALLIUM_NINE_INFO=${translations[Use Gallium Nine (native DirectX 9 for MESA)]} PW_USE_GALLIUM_NINE_INFO=${translations[Use Gallium Nine (native DirectX 9 for MESA)]}
PW_USE_DAMAVAND_INFO=${translations[Instead of DXVK, use WineD3D vulkan (Damavand). Experimental function.]} PW_USE_DAMAVAND_INFO=${translations[Instead of DXVK, use WineD3D vulkan (Damavand). Experimental function.]}
PW_USE_SUPPLIED_DXVK_VKD3D_INFO=${translations[Use dxvk and vkd3d which are bundled with wine or proton. (Does not work with PROTON_LG and WINE_LG)]}
# PW_VULKAN_NO_ASYNC_INFO=${translations[Disable asynchronous calls for VULKAN and DXVK modes]} # PW_VULKAN_NO_ASYNC_INFO=${translations[Disable asynchronous calls for VULKAN and DXVK modes]}
# PW_OLD_GL_STRING_INFO=${translations[Forced use of older versions of OpenGL]} # PW_OLD_GL_STRING_INFO=${translations[Forced use of older versions of OpenGL]}
@ -5227,7 +5161,8 @@ gui_edit_db () {
0) 0)
# WineD3D OpenGL # WineD3D OpenGL
VKD3D_CB="DCB" VKD3D_CB="DCB"
DISABLE_EDIT_DB_LIST="PW_VKBASALT PW_VKBASALT_USER_CONF PW_USE_RAY_TRACING PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK PW_USE_DAMAVAND" DISABLE_EDIT_DB_LIST="PW_VKBASALT PW_VKBASALT_USER_CONF PW_USE_RAY_TRACING PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK PW_USE_DAMAVAND
"
;; ;;
1|2) 1|2)
# Stable, Newest # Stable, Newest
@ -5236,12 +5171,11 @@ gui_edit_db () {
5) 5)
# Legacy # Legacy
VKD3D_CB="DCB" VKD3D_CB="DCB"
DISABLE_EDIT_DB_LIST="PW_USE_RAY_TRACING" DISABLE_EDIT_DB_LIST="PW_USE_RAY_TRACING
"
;; ;;
esac esac
[[ $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] && DISABLE_EDIT_DB_LIST+=" PW_USE_SUPPLIED_DXVK_VKD3D"
unset ADD_CHK_BOX_EDIT_DB unset ADD_CHK_BOX_EDIT_DB
for int_to_boole in "${PW_EDIT_DB_LIST[@]}" ; do for int_to_boole in "${PW_EDIT_DB_LIST[@]}" ; do
if [[ "${!int_to_boole}" == "1" ]] if [[ "${!int_to_boole}" == "1" ]]
@ -5251,7 +5185,8 @@ gui_edit_db () {
TMP_HELP_FOR_GUI="${int_to_boole}_INFO" TMP_HELP_FOR_GUI="${int_to_boole}_INFO"
int_to_boole_non_pw="${int_to_boole//PW_/}" int_to_boole_non_pw="${int_to_boole//PW_/}"
int_to_boole_non_pw="${int_to_boole_non_pw//"_"/" "}" int_to_boole_non_pw="${int_to_boole_non_pw//"_"/" "}"
if [[ -n $DISABLE_EDIT_DB_LIST ]] ; then if [[ ! "${PW_VULKAN_USE}" =~ ^(1|2)$ ]] \
&& [[ -n $DISABLE_EDIT_DB_LIST ]] ; then
unset CHECK_BOOLE_TRUE unset CHECK_BOOLE_TRUE
for check_boole in $DISABLE_EDIT_DB_LIST ; do for check_boole in $DISABLE_EDIT_DB_LIST ; do
if [[ $check_boole == "$int_to_boole" ]] ; then if [[ $check_boole == "$int_to_boole" ]] ; then
@ -5285,23 +5220,6 @@ gui_edit_db () {
CPU_LIMIT_VAR="disabled" CPU_LIMIT_VAR="disabled"
fi fi
declare -A NODE_MAP
NUMA_NODE_LIST=""
INDEX=0
while read -r line; do
NODE_MAP[$INDEX]="$line"
NUMA_NODE_LIST+="$INDEX "
((INDEX++))
done < <( lscpu | grep -Po "NUMA node\d+ CPU\(s\):\s+\K.*" )
# удаляем последний пробел, чтобы в combobox не было «0 »
NUMA_NODE_LIST="${NUMA_NODE_LIST% }"
if [[ -n "${PW_CPU_NUMA_NODE_INDEX}" ]] && [[ "${PW_CPU_NUMA_NODE_INDEX}" != "disabled" ]]; then
NUMA_NODE_INDEX="${PW_CPU_NUMA_NODE_INDEX}"
else
NUMA_NODE_INDEX="disabled"
fi
if [[ -n "${PW_AMD_VULKAN_USE}" ]] && \ if [[ -n "${PW_AMD_VULKAN_USE}" ]] && \
[[ "${PW_AMD_VULKAN_USE}" != "disabled" ]] ; then [[ "${PW_AMD_VULKAN_USE}" != "disabled" ]] ; then
AMD_VULKAN_VAR="${PW_AMD_VULKAN_USE}" AMD_VULKAN_VAR="${PW_AMD_VULKAN_USE}"
@ -5333,8 +5251,6 @@ immediate - Unlimited frame rate + tearing.
mailbox - Triple buffering. Unlimited frame rate + no tearing. mailbox - Triple buffering. Unlimited frame rate + no tearing.
relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]} :CB" "$(combobox_fix --disabled "${PW_MESA_VK_WSI_PRESENT_MODE}" "fifo!immediate!mailbox!relaxed")" \ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]} :CB" "$(combobox_fix --disabled "${PW_MESA_VK_WSI_PRESENT_MODE}" "fifo!immediate!mailbox!relaxed")" \
--field="${translations[Select needed AMD vulkan implementation]}!${translations[Choosing which implementation of vulkan will be used to run the game]} $AMD_VULKAN_CB" "$(combobox_fix --disabled "$AMD_VULKAN_VAR" "$AMD_VULKAN_DRIVER_LIST")" \ --field="${translations[Select needed AMD vulkan implementation]}!${translations[Choosing which implementation of vulkan will be used to run the game]} $AMD_VULKAN_CB" "$(combobox_fix --disabled "$AMD_VULKAN_VAR" "$AMD_VULKAN_DRIVER_LIST")" \
--field="${translations[NUMA node for CPU affinity]}!${translations[In multicore systems, CPUs are split into NUMA nodes, each with its own local memory and cores.
Binding a game to a single node reduces memoryaccess latency and limits costly coretocore switches.)]} :CB" "$(combobox_fix --disabled "${NUMA_NODE_INDEX}" "${NUMA_NODE_LIST}")" \
1> "$PW_TMPFS_PATH/tmp_output_yad_fps_limit" 2>/dev/null & 1> "$PW_TMPFS_PATH/tmp_output_yad_fps_limit" 2>/dev/null &
"${pw_yad}" --notebook --key="$KEY_EDIT_DB_GUI" --title "${translations[EDIT DB]}" --text-align=center \ "${pw_yad}" --notebook --key="$KEY_EDIT_DB_GUI" --title "${translations[EDIT DB]}" --text-align=center \
@ -5385,19 +5301,8 @@ Binding a game to a single node reduces memoryaccess latency and limits costl
PW_LOCALE_SELECT="${PW_ADD_SETTINGS[7]}" PW_LOCALE_SELECT="${PW_ADD_SETTINGS[7]}"
PW_MESA_VK_WSI_PRESENT_MODE="${PW_ADD_SETTINGS[8]}" PW_MESA_VK_WSI_PRESENT_MODE="${PW_ADD_SETTINGS[8]}"
PW_AMD_VULKAN_USE="${PW_ADD_SETTINGS[9]}" PW_AMD_VULKAN_USE="${PW_ADD_SETTINGS[9]}"
NUMA_NODE_INDEX="${PW_ADD_SETTINGS[10]//[[:space:]]/}"
if [[ $NUMA_NODE_INDEX =~ ^[0-9]+$ ]] && [[ -v NODE_MAP[$NUMA_NODE_INDEX] ]] ; then if [[ "${CPU_LIMIT}" =~ ^[0-9]+$ ]] ; then
NUMA_CORES="${NODE_MAP[$NUMA_NODE_INDEX]}"
PW_CPU_NUMA_NODE_INDEX="$NUMA_NODE_INDEX"
PW_TASKSET_SLR="taskset -c $NUMA_CORES"
else
PW_CPU_NUMA_NODE_INDEX="disabled"
PW_TASKSET_SLR=""
fi
export PW_CPU_NUMA_NODE_INDEX PW_TASKSET_SLR
if [[ $CPU_LIMIT =~ ^[0-9]+$ ]] ; then
PW_WINE_CPU_TOPOLOGY="${CPU_LIMIT}:$(seq -s, 0 $(( CPU_LIMIT - 1 )))" PW_WINE_CPU_TOPOLOGY="${CPU_LIMIT}:$(seq -s, 0 $(( CPU_LIMIT - 1 )))"
else else
PW_WINE_CPU_TOPOLOGY="disabled" PW_WINE_CPU_TOPOLOGY="disabled"
@ -5405,7 +5310,7 @@ Binding a game to a single node reduces memoryaccess latency and limits costl
export PW_WINE_CPU_TOPOLOGY export PW_WINE_CPU_TOPOLOGY
edit_db_from_gui "${PW_EDIT_DB_LIST[@]}" LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL WINEDLLOVERRIDES PW_WINE_CPU_TOPOLOGY \ edit_db_from_gui "${PW_EDIT_DB_LIST[@]}" LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL WINEDLLOVERRIDES PW_WINE_CPU_TOPOLOGY \
PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PW_LOCALE_SELECT PW_MESA_VK_WSI_PRESENT_MODE PW_AMD_VULKAN_USE PW_CPU_NUMA_NODE_INDEX PW_TASKSET_SLR PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PW_LOCALE_SELECT PW_MESA_VK_WSI_PRESENT_MODE PW_AMD_VULKAN_USE
if [[ -z "$MANGOHUD_CONFIG" ]] ; then if [[ -z "$MANGOHUD_CONFIG" ]] ; then
MONITOR_HEIGHT="$(echo "$PW_SCREEN_RESOLUTION" | awk -F'x' '{print $2}')" MONITOR_HEIGHT="$(echo "$PW_SCREEN_RESOLUTION" | awk -F'x' '{print $2}')"
@ -5845,7 +5750,8 @@ gui_dgvoodoo2 () {
TMP_HELP_FOR_GUI="${int_to_boole}_INFO" TMP_HELP_FOR_GUI="${int_to_boole}_INFO"
int_to_boole_non_pw="${int_to_boole//PW_DGV2/}" int_to_boole_non_pw="${int_to_boole//PW_DGV2/}"
int_to_boole_non_pw="${int_to_boole_non_pw//"_"/" "}" int_to_boole_non_pw="${int_to_boole_non_pw//"_"/" "}"
if [[ -n $DISABLE_DGV2_LIST ]] ; then if [[ ! "${PW_VULKAN_USE}" =~ ^(1|2)$ ]] \
&& [[ -n $DISABLE_DGV2_LIST ]] ; then
unset CHECK_BOOLE_TRUE unset CHECK_BOOLE_TRUE
for check_boole in $DISABLE_DGV2_LIST ; do for check_boole in $DISABLE_DGV2_LIST ; do
if [[ $check_boole == "$int_to_boole" ]] ; then if [[ $check_boole == "$int_to_boole" ]] ; then
@ -5975,21 +5881,19 @@ gui_gamescope () {
PW_GS_EXPOSE_WAYLAND PW_GS_REALTIME_SCHEDULING PW_GS_EXPOSE_WAYLAND PW_GS_REALTIME_SCHEDULING
) )
if [[ $GAMESCOPE_INSTALLED == "1" ]] ; then [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--mangoapp' ]] && add_to_array "PW_GS_LIST" PW_GS_MANGOAPP
[[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--mangoapp' ]] && add_to_array "PW_GS_LIST" PW_GS_MANGOAPP [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--backend' ]] && add_to_array "PW_GS_LIST" PW_GS_BACKEND_SDL
[[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--backend' ]] && add_to_array "PW_GS_LIST" PW_GS_BACKEND_SDL check_wayland_session && add_to_array "PW_GS_LIST" PW_GS_SDL_VIDEODRIVER_X11
check_wayland_session && add_to_array "PW_GS_LIST" PW_GS_SDL_VIDEODRIVER_X11 [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--cursor-scale-height' ]] && add_to_array "PW_GS_LIST" PW_GS_CURSOR_SCALE_HEIGHT
[[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--cursor-scale-height' ]] && add_to_array "PW_GS_LIST" PW_GS_CURSOR_SCALE_HEIGHT
#debian bookworm fix #debian bookworm fix
if [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '-U, --fsr-upscaling' ]] ; then if [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '-U, --fsr-upscaling' ]] ; then
GS_FILTER_CB="fsr!nis" GS_FILTER_CB="fsr!nis"
export PW_GS_FILTER_MODE_OLD="true" export PW_GS_FILTER_MODE_OLD="true"
rm_from_array "PW_GS_LIST" PW_GS_FORCE_GRAB_CURSOR PW_GS_FORCE_GRAB_KEYBOARD PW_GS_HDR_ENABLE PW_GS_HDR_FORCE_SUPPORT \ rm_from_array "PW_GS_LIST" PW_GS_FORCE_GRAB_CURSOR PW_GS_FORCE_GRAB_KEYBOARD PW_GS_HDR_ENABLE PW_GS_HDR_FORCE_SUPPORT \
PW_GS_HDR_FORCE_OUTPUT PW_GS_HDR_FORCE_OUTPUT
else else
GS_FILTER_CB="linear!nearest!fsr!nis!pixel" GS_FILTER_CB="linear!nearest!fsr!nis!pixel"
fi
fi fi
PW_GS_FULLSCREEN_INFO=${translations[Make the window fullscreen]} PW_GS_FULLSCREEN_INFO=${translations[Make the window fullscreen]}
@ -6013,11 +5917,11 @@ gui_gamescope () {
PW_GS_CURSOR_SCALE_HEIGHT_INFO=${translations[if specified, sets a base output height to linearly scale the cursor against.]} PW_GS_CURSOR_SCALE_HEIGHT_INFO=${translations[if specified, sets a base output height to linearly scale the cursor against.]}
unset ADD_CHK_BOX_GS unset ADD_CHK_BOX_GS
if [[ $GAMESCOPE_INSTALLED == "1" ]] ; then if [[ "${GAMESCOPE_INSTALLED}" == 1 ]] ; then
GAMESCOPE_NEED_INSTALL="${translations[Change settings gamescope for]} <b>$PW_NAME_DESKTOP_PROXY</b>\n ${translations[<b>NOTE:</b> To display help for each item, simply hover your mouse over the text]}" GAMESCOPE_NEED_INSTALL="${translations[Change settings gamescope for]} <b>$PW_NAME_DESKTOP_PROXY</b>\n ${translations[<b>NOTE:</b> To display help for each item, simply hover your mouse over the text]}"
GS_CB="CB" && GS_CBE="CBE" && GS_NUM="NUM" && GS_NUMN="NUMN" GS_CB="CB" && GS_CBE="CBE" && GS_NUM="NUM" && GS_NUMN="NUMN"
for int_to_boole in "${PW_GS_LIST[@]}" ; do for int_to_boole in "${PW_GS_LIST[@]}" ; do
if [[ ${!int_to_boole} == "1" ]] if [[ "${!int_to_boole}" == "1" ]]
then export "$int_to_boole"="TRUE" then export "$int_to_boole"="TRUE"
else export "$int_to_boole"="FALSE" else export "$int_to_boole"="FALSE"
fi fi
@ -6029,8 +5933,7 @@ gui_gamescope () {
else else
if check_flatpak ; then if check_flatpak ; then
GAMESCOPE_VERSION="$(grep 'VERSION_ID=' /etc/os-release)" GAMESCOPE_VERSION="$(grep 'VERSION_ID=' /etc/os-release)"
GAMESCOPE_VERSION="${GAMESCOPE_VERSION//VERSION_ID=/}" GAMESCOPE_NEED_INSTALL=$(eval_translations "<b>Gamescope is not detected on the system, to install it, run the command in the terminal:\\nflatpak install -y runtime/org.freedesktop.Platform.VulkanLayer.gamescope/x86_64/\$%{GAMESCOPE_VERSION}%\\n(Can be selected and copied)</b>" "GAMESCOPE_VERSION=${GAMESCOPE_VERSION//VERSION_ID=/}")
GAMESCOPE_NEED_INSTALL="<b>${translations[Gamescope is not detected on the system, to install it, run the command in the terminal]}:\\nflatpak install -y runtime/org.freedesktop.Platform.VulkanLayer.gamescope/x86_64/$(echo "$GAMESCOPE_VERSION")\\n(${translations[Can be selected and copied]})</b>"
YAD_TEXT_SELECTION="--selectable-labels" YAD_TEXT_SELECTION="--selectable-labels"
else else
GAMESCOPE_NEED_INSTALL="${translations[<b>Gamescope is not detected on the system, please contact the manufacturer of your distribution\\nor search the Internet for information on how to install gamescope on your system.</b>]}" GAMESCOPE_NEED_INSTALL="${translations[<b>Gamescope is not detected on the system, please contact the manufacturer of your distribution\\nor search the Internet for information on how to install gamescope on your system.</b>]}"
@ -6521,7 +6424,7 @@ pw_auto_create_shortcut () {
if [[ "${PW_CHECK_AUTOINSTALL}" == "1" ]] \ if [[ "${PW_CHECK_AUTOINSTALL}" == "1" ]] \
|| [[ "${PW_NO_AUTO_CREATE_SHORTCUT}" == "1" ]] \ || [[ "${PW_NO_AUTO_CREATE_SHORTCUT}" == "1" ]] \
|| [[ -z "${portwine_exe}" ]] \ || [[ -z "${portwine_exe}" ]] \
|| echo "${portwine_exe}" | grep -i "gc_api.exe\|vkplay\|pulseonline\|hoyoplay_launcher_pp" &>/dev/null || echo "${portwine_exe}" | grep -i "gc_api.exe\|vkplay\|pulseonline" &>/dev/null
then then
print_warning "Skipping auto create shortcut" print_warning "Skipping auto create shortcut"
return 0 return 0
@ -7247,7 +7150,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE." 2>/dev/null & SOFTWARE." "DATE=$(date +%Y)" 2>/dev/null &
"${pw_yad}" --plug="${KEY_CREDITS}" --tabnum=3 \ "${pw_yad}" --plug="${KEY_CREDITS}" --tabnum=3 \
--text-info --show-uri --scroll \ --text-info --show-uri --scroll \

@ -6,7 +6,7 @@
#export PW_COMMENT_DB="PortWINE database file for Epic Games Launcher" #export PW_COMMENT_DB="PortWINE database file for Epic Games Launcher"
export LAUNCH_PARAMETERS="-SkipBuildPatchPrereq" export LAUNCH_PARAMETERS="-SkipBuildPatchPrereq"
export PW_DLL_INSTALL="vcrun2012 vcrun2013 vcrun2019" export PW_DLL_INSTALL="vcrun2012 vcrun2013 vcrun2019"
export PW_WINE_USE="WINE_LG" export PW_WINE_USE="PROTON_LG"
export WINEDLLOVERRIDES="vulkan-1=n,b" export WINEDLLOVERRIDES="vulkan-1=n,b"
# add_in_start_portwine () { # add_in_start_portwine () {
# regdlloverrides "RDR2.exe:vulkan-1=n,b" # regdlloverrides "RDR2.exe:vulkan-1=n,b"

@ -1,12 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#Author: fidel #Author: fidel
#Genshin Impact.exe #Genshin Impact.exe
#GenshinImpact.exe
#hoyoplay_launcher_pp.exe #hoyoplay_launcher_pp.exe
#Rating=5 #Rating=5
#####################examples########################### #####################examples###########################
export PW_WINDOWS_VER="10" export PW_WINDOWS_VER="10"
export PW_VULKAN_USE="2" export PW_VULKAN_USE="2"
export PW_PREFIX_NAME="HO_YO_PLAY" export PW_PREFIX_NAME="HO_YO_PLAY"
export PW_WINE_USE="WINE_LG"
export LAUNCH_PARAMETERS="-platform_type CLOUD_THIRD_PARTY_PC"

@ -4,4 +4,4 @@
#Rating=1-5 #Rating=1-5
export PW_VULKAN_USE="2" export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG" export PW_WINE_USE="WINE_LG"
# export LAUNCH_URI="com.epicgames.launcher://apps/Eel?action=launch&silent=true" export LAUNCH_URI="com.epicgames.launcher://apps/Eel?action=launch&silent=true"

@ -0,0 +1,15 @@
#!/usr/bin/env bash
#Author: linux-gaming.ru
#setup.exe
#.msi
#Rating=5
################################################
export PW_DISABLED_CREATE_DB="1"
export PW_VULKAN_USE="1"
export PW_MANGOHUD="0"
export PW_NO_FSYNC="1"
export PW_NO_ESYNC="1"
export PW_USE_GAMEMODE="0"
export PW_DLL_INSTALL=""
# export WINEDLLOVERRIDES="mscoree,mshtml="
export PW_WINE_USE="WINE_LG"

@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: if984 (Maksim K.)
# type: emulators
# name: Azahar
# image: azahar
# info_en: An open source Nintendo 3DS emulator based on Citra, designed to run games with support for enhanced resolutions and advanced emulation settings.
# info_ru: Эмулятор Nintendo 3DS с открытым исходным кодом на основе Citra, созданный для запуска игр с поддержкой улучшенного разрешения и расширенных настроек эмуляции.
##########################################################################
# export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/azahar-2120.3-windows-msys2-installer.exe"
start_portwine
if try_download "https://github.com/azahar-emu/azahar/releases/download/2120.3/azahar-2120.3-windows-msys2-installer.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_start_progress_bar_install_game "Azahar."
pw_run "${PW_AUTOINSTALL_EXE}"
portwine_exe="$WINEPREFIX/drive_c/Program Files/Azahar/azahar.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${portwine_exe}.ppdb"
kill_portwine
pw_stop_progress_bar
export PORTWINE_CREATE_SHORTCUT_NAME="Azahar"
portwine_create_shortcut
fi
stop_portwine

@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Author: if984 (Maksim K.)
# type: emulators
# name: bsnes
# image: bsnes
# info_en: An open source Super Nintendo Entertainment System (SNES) emulator that focuses on performance, accuracy, user-friendly interface, and special features.
# info_ru: Эмулятор Super Nintendo Entertainment System (SNES) с открытым исходным кодом, который фокусируется на производительности, точности, удобном пользовательском интерфейсе и специальных функциях.
########################################################################
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/bsnes-windows.zip"
start_portwine
if try_download "https://github.com/bsnes-emu/bsnes/releases/download/nightly/bsnes-windows.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_start_progress_bar_install_game "bsnes."
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files"
portwine_exe="$WINEPREFIX/drive_c/Program Files/bsnes-nightly/bsnes.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${portwine_exe}.ppdb"
kill_portwine
pw_stop_progress_bar
export PORTWINE_CREATE_SHORTCUT_NAME="bsnes"
portwine_create_shortcut
fi
stop_portwine

@ -10,16 +10,15 @@ export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/crossout.exe" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/crossout.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Crossout" export PORTWINE_CREATE_SHORTCUT_NAME="Crossout"
export PW_PREFIX_NAME="CROSSOUT" export PW_PREFIX_NAME="CROSSOUT"
export PW_WINE_USE="WINE_LG"
start_portwine start_portwine
if try_download "https://yupmaster.gaijinent.com/launcher/current.php?id=CrossoutLauncher" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://yupmaster.gaijinent.com/launcher/current.php?id=CrossoutLauncher" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
pw_start_progress_bar_install_game "Crossout." pw_start_progress_bar_install_game "Crossout."
get_and_set_reg_file --add 'Software\Wine\X11 Driver' 'Decorated' 'REG_SZ' "N" "user"
pw_kill_autostart launcher.exe 3 & pw_kill_autostart launcher.exe 3 &
pw_run "${PW_AUTOINSTALL_EXE}" pw_run "${PW_AUTOINSTALL_EXE}"
portwine_exe="${WINEPREFIX}/drive_c/users/$USER/AppData/Local/Crossout Launcher/launcher.exe" portwine_exe="${WINEPREFIX}/drive_c/users/$USER/AppData/Local/Crossout/launcher.exe"
get_and_set_reg_file --add 'Software\Wine\X11' 'Decorated' 'REG_SZ' "N" "user"
pw_create_unique_exe "crossout_launcher_pp" pw_create_unique_exe "crossout_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}" try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${portwine_exe}.ppdb" try_remove_file "${portwine_exe}.ppdb"

@ -10,7 +10,6 @@ export LAUNCH_PARAMETERS="/q"
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/EpicGamesLauncherInstaller.msi" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/EpicGamesLauncherInstaller.msi"
export PW_USE_D3D_EXTRAS=1 export PW_USE_D3D_EXTRAS=1
export PORTWINE_CREATE_SHORTCUT_NAME="Epic Games Launcher" export PORTWINE_CREATE_SHORTCUT_NAME="Epic Games Launcher"
export PW_WINE_USE="WINE_LG"
# sed -i '/Epic Games/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/*.reg >/dev/null # sed -i '/Epic Games/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/*.reg >/dev/null
try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver"

@ -11,8 +11,8 @@ start_portwine
if try_download "https://www.epsxe.com/files/ePSXe205.zip" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://www.epsxe.com/files/ePSXe205.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
pw_start_progress_bar_install_game "ePSXe." pw_start_progress_bar_install_game "ePSXe."
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/ePSXe" "$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/EPSXe"
portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/ePSXe/ePSXe.exe" portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/EPSXe/ePSXe.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}" try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${portwine_exe}.ppdb" try_remove_file "${portwine_exe}.ppdb"
kill_portwine kill_portwine

@ -6,7 +6,7 @@
# info_en: An emulator for the Nintendo Entertainment System (NES) that allows players to enjoy classic NES games on modern devices with high compatibility and various enhancements. The emulator includes tools for game development, testing, and recording. # info_en: An emulator for the Nintendo Entertainment System (NES) that allows players to enjoy classic NES games on modern devices with high compatibility and various enhancements. The emulator includes tools for game development, testing, and recording.
# info_ru: Эмулятор Nintendo Entertainment System (NES), который позволяет игрокам наслаждаться классическими играми для NES на современных устройствах с высокой совместимостью и различными улучшениями. Эмулятор включает инструменты для разработки, тестирования и записи игр. # info_ru: Эмулятор Nintendo Entertainment System (NES), который позволяет игрокам наслаждаться классическими играми для NES на современных устройствах с высокой совместимостью и различными улучшениями. Эмулятор включает инструменты для разработки, тестирования и записи игр.
######################################################################## ########################################################################
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/fceux-2.6.6-win64.zip" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/fceux-2.6.5-win64.zip"
start_portwine start_portwine
if try_download "https://github.com/TASEmulators/fceux/releases/download/v2.6.6/fceux-2.6.6-win64.zip" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://github.com/TASEmulators/fceux/releases/download/v2.6.6/fceux-2.6.6-win64.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
then then

@ -19,7 +19,7 @@ export PORTWINE_CREATE_SHORTCUT_NAME="GOG GALAXY"
start_portwine start_portwine
if try_download "https://content-system.gog.com/open_link/download?path=/open/galaxy/client/setup_galaxy_${GOG_VER}.exe" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://content-system.gog.com/open_link/download?path=/open/galaxy/client/${GOG_VER}/setup_galaxy_${GOG_VER}.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
pw_start_progress_bar_install_game "GOG Galaxy." pw_start_progress_bar_install_game "GOG Galaxy."
pw_run "${PW_AUTOINSTALL_EXE}" pw_run "${PW_AUTOINSTALL_EXE}"

@ -16,13 +16,14 @@ start_portwine
if try_download "https://sg-public-api.hoyoverse.com/event/download_porter/trace/hyp_global/hyphoyoverse/default?url=https%3A%2F%2Fhoyoplay.hoyoverse.com%2F" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://sg-public-api.hoyoverse.com/event/download_porter/trace/hyp_global/hyphoyoverse/default?url=https%3A%2F%2Fhoyoplay.hoyoverse.com%2F" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
pw_start_progress_bar_install_game "HoYoPlay Launcher." pw_start_progress_bar_install_game "HoYoPlay Launcher."
get_and_set_reg_file --add 'Software\Wine\X11 Driver' 'Decorated' 'REG_SZ' "N" "user"
pw_kill_autostart HYP.exe & pw_kill_autostart HYP.exe &
export PATH_TO_GAME="${PW_USER_TEMP}" export PATH_TO_GAME="${PW_USER_TEMP}"
pw_run "${PW_AUTOINSTALL_EXE}" pw_run "${PW_AUTOINSTALL_EXE}"
export portwine_exe="$WINEPREFIX/drive_c/Program Files/HoYoPlay/launcher.exe" export portwine_exe="$WINEPREFIX/drive_c/Program Files/HoYoPlay/launcher.exe"
get_and_set_reg_file --add 'Software\Wine\X11' 'Decorated' 'REG_SZ' "N" "user"
pw_create_unique_exe "hoyoplay_launcher_pp" pw_create_unique_exe "hoyoplay_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}" try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${portwine_exe}.ppdb"
kill_portwine kill_portwine
pw_stop_progress_bar pw_stop_progress_bar
portwine_create_shortcut portwine_create_shortcut

@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Author: if984 (Maksim K.)
# type: emulators
# name: melonDS
# image: melonds
# info_en: An open-source Nintendo DS (NDS) emulator. Works with a wide range of Nintendo DS games, from popular classics to niche titles. Supports high resolutions, local multiplayer, and advanced emulation settings.
# info_ru: Эмулятор Nintendo DS (NDS) с открытым исходным кодом. Работает с большим количеством игр Nintendo DS, от популярных классических до нишевых. Поддерживает высокое разрешение, локальный мультиплеер, а также расширенные настройки эмуляции.
########################################################################
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/melonDS-windows-x86_64.zip"
start_portwine
if try_download "https://melonds.kuribo64.net/downloads/melonDS-windows-x86_64.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_start_progress_bar_install_game "melonDS."
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/melonDS"
portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/melonDS/melonDS.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${portwine_exe}.ppdb"
kill_portwine
pw_stop_progress_bar
export PORTWINE_CREATE_SHORTCUT_NAME="melonDS"
portwine_create_shortcut
fi
stop_portwine

@ -9,7 +9,7 @@
export LAUNCH_PARAMETERS="/VERYSILENT" export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/PPSSPPSetup.exe" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/PPSSPPSetup.exe"
start_portwine start_portwine
if try_download "https://ppsspp.org/files/1_18_1/PPSSPPSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://ppsspp.org/files/1_16_5/PPSSPPSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
pw_start_progress_bar_install_game "PPSSPP." pw_start_progress_bar_install_game "PPSSPP."
pw_run "${PW_AUTOINSTALL_EXE}" pw_run "${PW_AUTOINSTALL_EXE}"
@ -18,7 +18,7 @@ then
try_remove_file "${portwine_exe}.ppdb" try_remove_file "${portwine_exe}.ppdb"
kill_portwine kill_portwine
pw_stop_progress_bar pw_stop_progress_bar
export PORTWINE_CREATE_SHORTCUT_NAME="PPSSPP" export PORTWINE_CREATE_SHORTCUT_NAME="PPSSPPWindows"
portwine_create_shortcut portwine_create_shortcut
fi fi
stop_portwine stop_portwine

@ -6,11 +6,9 @@
# info_en: An interface for emulators that supports many game consoles and platforms, allowing users to run old games on modern devices. It offers a user-friendly interface, a rich library of emulation cores, and features for performance and graphics customization. # info_en: An interface for emulators that supports many game consoles and platforms, allowing users to run old games on modern devices. It offers a user-friendly interface, a rich library of emulation cores, and features for performance and graphics customization.
# info_ru: Интерфейс для эмуляторов, который поддерживает множество игровых консолей и платформ, позволяя пользователям запускать старые игры на современных устройствах. Он предлагает удобный интерфейс, богатую библиотеку ядер эмуляции и функции для настройки производительности и графики. # info_ru: Интерфейс для эмуляторов, который поддерживает множество игровых консолей и платформ, позволяя пользователям запускать старые игры на современных устройствах. Он предлагает удобный интерфейс, богатую библиотеку ядер эмуляции и функции для настройки производительности и графики.
######################################################################## ########################################################################
export PW_RETROARCH_VERSION=$(curl -s "https://buildbot.libretro.com/stable/" | grep -oP 'href="/stable/\K[0-9.]+(?=/")' | sort -V | tail -n1)
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/RetroArch.7z" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/RetroArch.7z"
start_portwine start_portwine
if try_download "https://buildbot.libretro.com/stable/$PW_RETROARCH_VERSION/windows/x86_64/RetroArch.7z" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://buildbot.libretro.com/stable/1.16.0/windows/x86_64/RetroArch.7z" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
pw_start_progress_bar_install_game "RetroArch." pw_start_progress_bar_install_game "RetroArch."
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)" "$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)"

@ -21,6 +21,7 @@ then
pw_start_progress_bar_install_game "World of Sea Battle." pw_start_progress_bar_install_game "World of Sea Battle."
pw_run "${PW_AUTOINSTALL_EXE}" pw_run "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_AUTOINSTALL_EXE}" try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${portwine_exe}.ppdb"
if [[ -f "$WINEPREFIX/drive_c/Games/Wosb Launcher/launcher.exe" ]] if [[ -f "$WINEPREFIX/drive_c/Games/Wosb Launcher/launcher.exe" ]]
then export portwine_exe="$WINEPREFIX/drive_c/Games/Wosb Launcher/launcher.exe" then export portwine_exe="$WINEPREFIX/drive_c/Games/Wosb Launcher/launcher.exe"
else export portwine_exe="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/Wosb Launcher/launcher.exe" else export portwine_exe="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/Wosb Launcher/launcher.exe"

@ -103,7 +103,7 @@ unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_T
unset PW_PREFIX_NAME VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR PW_WINE_CPU_TOPOLOGY unset PW_PREFIX_NAME VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR 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_TERM PW_EXEC_FROM_DESKTOP WEBKIT_DISABLE_DMABUF_RENDERER PW_AMD_VULKAN_USE PW_VK_ICD_FILENAMES LAUNCH_URI PW_USE_SETUP_FILE PW_CPU_NUMA_NODE_INDEX PW_TASKSET_SLR unset PW_TERM PW_EXEC_FROM_DESKTOP WEBKIT_DISABLE_DMABUF_RENDERER PW_AMD_VULKAN_USE PW_VK_ICD_FILENAMES LAUNCH_URI
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}*
@ -326,20 +326,6 @@ if check_flatpak ; then
else pw_download_libs else pw_download_libs
fi fi
if [[ ${portwine_exe,,} =~ (setup|install|.msi$) ]] ; then
export PW_DISABLED_CREATE_DB="1"
export PW_VULKAN_USE="1"
export PW_MANGOHUD="0"
export PW_NO_FSYNC="1"
export PW_NO_ESYNC="1"
export PW_USE_GAMEMODE="0"
export PW_DLL_INSTALL=""
# export WINEDLLOVERRIDES="mscoree,mshtml="
export PW_WINE_USE="WINE_LG"
export PW_USE_SETUP_FILE="1"
fi
pw_init_db pw_init_db
if [[ ! -d "${HOME}/PortProton" ]] \ if [[ ! -d "${HOME}/PortProton" ]] \
@ -554,14 +540,10 @@ if [[ -f "$portwine_exe" ]] ; then
fi fi
create_name_desktop create_name_desktop
if [[ -n $PW_COMMENT_DB ]] ; then if [[ -z $PW_COMMENT_DB ]] ; then
PW_COMMENT_DB="$PW_COMMENT_DB$(seconds_to_time "$TIME_CURRENT")" PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$PW_NAME_DESKTOP_PROXY" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
else else
if [[ $PW_USE_SETUP_FILE == "1" ]] ; then PW_COMMENT_DB="$PW_COMMENT_DB$(seconds_to_time "$TIME_CURRENT")"
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$PW_NAME_DESKTOP_PROXY" "50")</b>"
else
PW_COMMENT_DB="${translations[Launching]} <b>$(print_wrapped "$PW_NAME_DESKTOP_PROXY" "50")</b>$(seconds_to_time "$TIME_CURRENT")"
fi
fi fi
export KEY_START="$RANDOM" export KEY_START="$RANDOM"
@ -578,6 +560,7 @@ if [[ -f "$portwine_exe" ]] ; then
"${pw_yad}" --plug=$KEY_START --tabnum=2 --form --columns="$START_GUI_NOTEBOOK_COLUMNS" --align-buttons --homogeneous-column \ "${pw_yad}" --plug=$KEY_START --tabnum=2 --form --columns="$START_GUI_NOTEBOOK_COLUMNS" --align-buttons --homogeneous-column \
--gui-type-layout="$START_GUI_TYPE_LAYOUT_NOTEBOOK" \ --gui-type-layout="$START_GUI_TYPE_LAYOUT_NOTEBOOK" \
--field=" ${translations[Base settings]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Edit database file for]} ${PORTWINE_DB}":"FBTN" '@bash -c "button_click --start 118"' \ --field=" ${translations[Base settings]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Edit database file for]} ${PORTWINE_DB}":"FBTN" '@bash -c "button_click --start 118"' \
--field=" ${translations[Global settings]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Settings for user.conf]}":"FBTN" '@bash -c "button_click --start 128"' \
--field=" ${translations[Open directory]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Open directory with <b>.ppdb</b> file]}":"FBTN" '@bash -c "button_click --start open_game_folder"' \ --field=" ${translations[Open directory]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Open directory with <b>.ppdb</b> file]}":"FBTN" '@bash -c "button_click --start open_game_folder"' \
--field=" vkBasalt!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)]}":"FBTN" '@bash -c "button_click --start 120"' \ --field=" vkBasalt!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)]}":"FBTN" '@bash -c "button_click --start 120"' \
--field=" MangoHud!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable Mangohud by default (R_SHIFT + F12 keyboard shortcuts disable Mangohud)]}":"FBTN" '@bash -c "button_click --start 122"' \ --field=" MangoHud!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable Mangohud by default (R_SHIFT + F12 keyboard shortcuts disable Mangohud)]}":"FBTN" '@bash -c "button_click --start 122"' \
@ -622,6 +605,7 @@ if [[ -f "$portwine_exe" ]] ; then
--gui-type-layout="$START_GUI_TYPE_LAYOUT_PANED" \ --gui-type-layout="$START_GUI_TYPE_LAYOUT_PANED" \
--align-buttons --homogeneous-row --homogeneous-column \ --align-buttons --homogeneous-row --homogeneous-column \
--field=" ${translations[Base settings]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Edit database file for]} ${PORTWINE_DB}":"FBTN" '@bash -c "button_click --start 118"' \ --field=" ${translations[Base settings]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Edit database file for]} ${PORTWINE_DB}":"FBTN" '@bash -c "button_click --start 118"' \
--field=" ${translations[Global settings]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Settings for user.conf]}":"FBTN" '@bash -c "button_click --start 128"' \
--field=" ${translations[Open directory]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Open directory with <b>.ppdb</b> file]}":"FBTN" '@bash -c "button_click --start open_game_folder"' \ --field=" ${translations[Open directory]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Open directory with <b>.ppdb</b> file]}":"FBTN" '@bash -c "button_click --start open_game_folder"' \
--field=" vkBasalt!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)]}":"FBTN" '@bash -c "button_click --start 120"' \ --field=" vkBasalt!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)]}":"FBTN" '@bash -c "button_click --start 120"' \
--field=" MangoHud!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable Mangohud by default (R_SHIFT + F12 keyboard shortcuts disable Mangohud)]}":"FBTN" '@bash -c "button_click --start 122"' \ --field=" MangoHud!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!${translations[Enable Mangohud by default (R_SHIFT + F12 keyboard shortcuts disable Mangohud)]}":"FBTN" '@bash -c "button_click --start 122"' \

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#Author: Castro-Fidel (linux-gaming.ru) #Author: Castro-Fidel (linux-gaming.ru)
#SCRIPTS_NEXT_VERSION=2416 #SCRIPTS_NEXT_VERSION=2406
#SCRIPTS_STABLE_VERSION=2411 #SCRIPTS_STABLE_VERSION=2406
######################################################################## ########################################################################
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" 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"
export PROTON_USE_XALIA="0" export PROTON_USE_XALIA="0"
@ -20,7 +20,7 @@ export PW_FORCE_USE_VSYNC="2"
export PW_USE_TERMINAL="0" export PW_USE_TERMINAL="0"
export PW_WINDOWS_VER="10" export PW_WINDOWS_VER="10"
export WINEARCH="win64" export WINEARCH="win64"
export PW_LIBS_VER="_v53" export PW_LIBS_VER="_v52"
export PW_USE_GSTREAMER="1" export PW_USE_GSTREAMER="1"
export PW_USE_D3D_EXTRAS="1" export PW_USE_D3D_EXTRAS="1"
export PW_PREFIX_NAME="DEFAULT" export PW_PREFIX_NAME="DEFAULT"
@ -41,7 +41,6 @@ export STAGING_SHARED_MEMORY="1"
export PW_USE_GALLIUM_ZINK="0" export PW_USE_GALLIUM_ZINK="0"
export PW_USE_GALLIUM_NINE="0" export PW_USE_GALLIUM_NINE="0"
export PW_USE_DAMAVAND="0" export PW_USE_DAMAVAND="0"
export PW_USE_SUPPLIED_DXVK_VKD3D="1"
###DEFAULT_WINE### ###DEFAULT_WINE###
export PW_WINE_USE="PROTON_LG" export PW_WINE_USE="PROTON_LG"
export PW_PLUGINS_VER="_v20" export PW_PLUGINS_VER="_v20"
@ -49,8 +48,8 @@ export PW_FAKE_DLSS_VER="230506"
export PW_FAKE_DLSS_3_VER="0.9.1-plus" export PW_FAKE_DLSS_3_VER="0.9.1-plus"
export PW_GALLIUM_NINE_VER="0.10" export PW_GALLIUM_NINE_VER="0.10"
###WINE_AND_PROTON_LG### ###WINE_AND_PROTON_LG###
export PW_PROTON_LG_VER="PROTON_LG_9-27" export PW_PROTON_LG_VER="PROTON_LG_9-19"
export PW_WINE_LG_VER="WINE_LG_10-7" export PW_WINE_LG_VER="WINE_LG_10-1"
export PW_WINE_FULLSCREEN_FSR="1" export PW_WINE_FULLSCREEN_FSR="1"
export WINE_FULLSCREEN_FSR_MODE="ultra" export WINE_FULLSCREEN_FSR_MODE="ultra"
###DXVK_AND_VKD3D### ###DXVK_AND_VKD3D###
@ -58,9 +57,9 @@ export PW_VULKAN_USE="2"
export VKD3D_LIMIT_TESS_FACTORS="64" export VKD3D_LIMIT_TESS_FACTORS="64"
export DXVK_LEGACY_VER="1.6.1" export DXVK_LEGACY_VER="1.6.1"
export DXVK_STABLE_VER="1.10.3-28" export DXVK_STABLE_VER="1.10.3-28"
export DXVK_GIT_VER="2.6-65" export DXVK_GIT_VER="2.5.3-299"
export VKD3D_STABLE_VER="1.1-2602" export VKD3D_STABLE_VER="1.1-2602"
export VKD3D_GIT_VER="1.1-4511" export VKD3D_GIT_VER="1.1-4478"
###VKBASALT### ###VKBASALT###
export PW_VKBASALT_EFFECTS="Curves:cas" export PW_VKBASALT_EFFECTS="Curves:cas"
export PW_VKBASALT_FFX_CAS="0.50" export PW_VKBASALT_FFX_CAS="0.50"

@ -29,7 +29,7 @@ export PW_TAB_POSITON=top
export MAIN_GUI_COLUMNS=3 export MAIN_GUI_COLUMNS=3
export START_GUI_NOTEBOOK_COLUMNS=2 export START_GUI_NOTEBOOK_COLUMNS=3
export START_GUI_PANED_COLUMNS=3 export START_GUI_PANED_COLUMNS=3
export START_GUI_TYPE="--gui-type=start-old \ export START_GUI_TYPE="--gui-type=start-old \
--image-halign=center \ --image-halign=center \

@ -32,7 +32,7 @@ export PW_TAB_POSITON=top
export MAIN_GUI_COLUMNS=3 export MAIN_GUI_COLUMNS=3
export START_GUI_NOTEBOOK_COLUMNS=2 export START_GUI_NOTEBOOK_COLUMNS=3
export START_GUI_PANED_COLUMNS=3 export START_GUI_PANED_COLUMNS=3
export START_GUI_TYPE="--gui-type=start \ export START_GUI_TYPE="--gui-type=start \
--homogeneous-row \ --homogeneous-row \

@ -42,7 +42,7 @@ export PW_TAB_POSITON=top
# количество столбцов в главном меню # количество столбцов в главном меню
export MAIN_GUI_COLUMNS=3 export MAIN_GUI_COLUMNS=3
export START_GUI_NOTEBOOK_COLUMNS=2 # количество столбцов для настроек в notebook export START_GUI_NOTEBOOK_COLUMNS=3 # количество столбцов для настроек в notebook
export START_GUI_PANED_COLUMNS=3 # количество столбцов для настроек в paned export START_GUI_PANED_COLUMNS=3 # количество столбцов для настроек в paned
# это нужно # это нужно
export START_GUI_TYPE="--gui-type=start \ export START_GUI_TYPE="--gui-type=start \