Compare commits
	
		
			30 Commits
		
	
	
		
			libs_v47
			...
			dotpfx48v3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 36592917ce | ||
|  | 71cbcb7b65 | ||
|  | 2972d02f70 | ||
|  | f28aa3423e | ||
|  | 0fe873e24e | ||
|  | 4cf9554884 | ||
|  | bfeb559a2f | ||
|  | 263072994c | ||
|  | 175a15393f | ||
|  | 337070718e | ||
|  | 8d04691db5 | ||
|  | 0d879470da | ||
|  | 1a6bb21089 | ||
|  | 1ebf5e1f0f | ||
|  | 3422a2da79 | ||
|  | 8c248618f9 | ||
|  | 467caf6a5e | ||
|  | 500681865c | ||
|  | 3718b4d3d5 | ||
|  | e44a85ac20 | ||
|  | f0f0099164 | ||
|  | d2f5b1d36f | ||
|  | 8b50639a80 | ||
|  | a6aec0bb95 | ||
|  | 42feee474b | ||
|  | 887d64fef4 | ||
|  | 97645fe48e | ||
|  | c8a35b02cc | ||
|  | 938fa60a02 | ||
|  | 53f3d5a13e | 
| @@ -176,6 +176,14 @@ sudo -E dnf install curl icoutils libcurl  bubblewrap zstd cabextract tar goverl | ||||
| sudo eopkg it curl file bubblewrap curl icoutils tar  zstd cabextract xdg-utils openssl vulkan vulkan-32bit mesalib-32bit samba | ||||
| ``` | ||||
|  | ||||
| * **Void** | ||||
| ```sh | ||||
| sudo xbps-install -Su void-repo-multilib | ||||
|  | ||||
| sudo xbps-install -S bash wget icoutils yad bubblewrap zstd cabextract gzip tar xz openssl desktop-file-utils curl dbus freetype xdg-utils | ||||
| gdk-pixbuf noto-fonts-ttf nss xrandr lsof mesa-demos ImageMagick Vulkan-Tools libgcc alsa-plugins-32bit libX11-32bit freetype-32bit libglvnd-32bit libgpg-error-32bit nss-32bit openssl-32bit vulkan-loader vulkan-loader-32bit | ||||
| ``` | ||||
|  | ||||
| ## Контакты | ||||
|  | ||||
| <p> | ||||
|   | ||||
| @@ -178,6 +178,14 @@ sudo -E dnf install curl icoutils libcurl bubblewrap zstd cabextract tar goverla | ||||
| sudo eopkg it curl file bubblewrap curl icoutils tar zstd cabextract xdg-utils openssl bc vulkan vulkan-32bit mesalib-32bit samba | ||||
| ``` | ||||
|  | ||||
| * **Void** | ||||
| ```sh | ||||
| sudo xbps-install -Su void-repo-multilib | ||||
|  | ||||
| sudo xbps-install -S bash wget icoutils yad bubblewrap zstd cabextract gzip tar xz openssl desktop-file-utils curl dbus freetype xdg-utils | ||||
| gdk-pixbuf noto-fonts-ttf nss xrandr lsof mesa-demos ImageMagick Vulkan-Tools libgcc alsa-plugins-32bit libX11-32bit freetype-32bit libglvnd-32bit libgpg-error-32bit nss-32bit openssl-32bit vulkan-loader vulkan-loader-32bit | ||||
| ``` | ||||
|  | ||||
| ## Contacts | ||||
|  | ||||
| <p> | ||||
|   | ||||
| @@ -2,6 +2,62 @@ You can help us in the development of the project on the website: https://linux- | ||||
| ---------------------------------------- | ||||
| Changelog: | ||||
|  | ||||
| ###Scripts version 2272### Date: 04.04.2024 / Download update size: 15 megabytes | ||||
| * script refactoring: | ||||
|  - yad_gui script combined with functions_helper | ||||
|  - runlib script combined with start.sh | ||||
|  - all functions from runlib, yad_gui and start.sh moved to functions_helper | ||||
| * fixed winetricks update on some systems (thanks to Boria138) | ||||
| * when cleaning the prefix, Common Files directories are not deleted from Program Files (to save vst libraries) | ||||
| * updated the interface software (yad) to version 13.0 with Cyrillic support by default | ||||
|  | ||||
| ###Scripts version 2271### Date: 03.04.2024 / Download update size: 15 megabytes | ||||
| * improved interface of the prefix manager (xterm has been replaced with the standard PortProton interface) | ||||
| * fixed the launch of the game "Dragon Age: Origin" from EAapp | ||||
| * many small script improvements | ||||
|  | ||||
| ###Scripts version 2270### Date: 31.03.2024 / Download update size: 15 megabytes | ||||
| * added support for the game Horizon Forbidden West (to apply, you need to run the exe of the game and select SETTINGS -> RESET SETTINGS) | ||||
| * fixed the operation of WINE from Kron4ek and returned the ability to download it using GET-OTHER-WINE | ||||
| * fixed the launch of GET-OTHER-WINE (the interface for downloading third-party versions of WINE-PROTON) when launching exe files | ||||
|  | ||||
| ###Scripts version 2269### Date: 29.03.2024 / Download update size: 15 megabytes | ||||
| * added improvements when using the system WINE | ||||
| * the preparation of PortProton scripts for working in flatpak has been completed | ||||
|  | ||||
| ###Scripts version 2268### Date: 27.03.2024 / Download update size: 15 megabytes | ||||
| * fixed the launch of some 32-bit games on the DEFAULT prefix. Examples: | ||||
|     LEGO Marvel Super Heroes | ||||
|     LEGO The Lord Of The Rings | ||||
|     LEGO Star Wars - The Clone Wars | ||||
|     Warhammer 40,000 Space Marine | ||||
|     Star Wars The Force Unleashed | ||||
|     Wolverine | ||||
|  | ||||
| ###Scripts version 2267### Date: 27.03.2024 / Download update size: 15 megabytes | ||||
| * implemented a twofold acceleration of prefix updates on all systems | ||||
| * improved the functionality of settings for exe files (EDIT_DB) | ||||
| * fixed the automatic installation of BattleNET | ||||
|  | ||||
| ###Scripts version 2266### Date: 26.03.2024 / Download update size: 185 megabytes | ||||
| * HOTFIX - download plugins from GITHUB | ||||
|  | ||||
| ###Scripts version 2265### Date: 26.03.2024 / Download update size: 570 megabytes | ||||
| * the faudio component has been added to the DEFAULT prefix (required for games running on the Creation Engine, example The Elder Scrolls) | ||||
| * the plugins_v14 library package has been updated: | ||||
|     transferred from the libs package: d3d_extras, reshade and default_pfx | ||||
|     portable versions have been added: yad_v13_0, perl, exiftool (thanks to Boria138) | ||||
| * the libs_v47 library package has been updated: | ||||
|     pressure-vessel 0.20240306.0 | ||||
|     sniper 0.20240307.80401 | ||||
| * updated PROTON_LG to version "9-2" | ||||
| * updated versions: | ||||
|     DXVK_GIT "2.3.1" | ||||
|     VKD3D_GIT "1.1-3973" | ||||
| * added saving of settings changes to EDIT_DB when using the "OPEN SETTINGS FILE" button | ||||
| * improved support for the PortProton test build in flatpak | ||||
| * many small script improvements | ||||
|  | ||||
| ###Scripts version 2264### Date: 15.03.2024 / Download update size: 15 megabytes | ||||
| * added the option to end the first PortProton session when starting the second | ||||
| * added auto-installation of the game "Pulse Online" | ||||
| @@ -1241,7 +1297,7 @@ export WINE_FULLSCREEN_FSR="1" (by default) | ||||
| * updated db files | ||||
|  | ||||
| ###Scripts version 2065### | ||||
| * HOTFIX - correcting the termination of the yad and yad_v12_3 processes | ||||
| * HOTFIX - correcting the termination of the yad and yad_v13_0 processes | ||||
|  | ||||
| ###Scripts version 2064### | ||||
| * added notification to the user about possible problems when starting in a Wayland session (once and only under Wayland) | ||||
|   | ||||
| @@ -2,6 +2,64 @@ | ||||
| ----------------------------------------- | ||||
| История изменений: | ||||
|  | ||||
| ###Scripts version 2272### Дата: 04.04.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * рефакторинг скриптов: | ||||
|     - скрипт yad_gui объединён с functions_helper | ||||
|     - скрипт runlib объединён с start.sh | ||||
|     - все функции из runlib, yad_gui и start.sh перенесены в functions_helper | ||||
| * исправлено обновление winetricks на некоторых системах (спасибо Boria138) | ||||
| * при чистке префикса не удаляются каталоги Common Files из Program Files (для сохранения библиотек vst) | ||||
| * обновлено ПО интерфейса (yad) до версии 13.0 с поддержкой кириллицы по умолчанию | ||||
| * дополнительные небольшие улучшения интерфейса | ||||
|  | ||||
| ###Scripts version 2271### Дата: 03.04.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * улучшен интерфейс менеджера префиксов (xterm заменен на стандартный интерфейс PortProton) | ||||
| * исправлена работа русского языка в EAapp (для применения необходимо запустить EALauncher и в PP выбрать НАСТРОЙКИ -> СБРОСИТЬ НАСТРОЙКИ) | ||||
| * исправлен запуск игры "DragonAge: Origin" из EAapp | ||||
| * множество небольших улучшений скриптов | ||||
|  | ||||
| ###Scripts version 2270### Дата: 31.03.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * добавлена поддержка игры Horizon Forbidden West (для применения необходимо запустить exe игры и выбрать НАСТРОЙКИ -> СБРОСИТЬ НАСТРОЙКИ) | ||||
| * исправлена работа WINE от Kron4ek и возвращена возможность его скачивания с помощью GET-OTHER-WINE | ||||
| * исправлен запуск GET-OTHER-WINE (интерфейс скачивания сторонних версий WINE-PROTON) при запуске exe файлов | ||||
|  | ||||
| ###Scripts version 2269### Дата: 29.03.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * добавлены улучшения при использовании cистемного WINE | ||||
| * завершена подготовка скриптов PortProton для работы во flatpak | ||||
|  | ||||
| ###Scripts version 2268### Дата: 27.03.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * исправлен запуск некоторых 32-х битных игр на префиксе DEFAULT. Примеры: | ||||
|     LEGO Marvel Super Heroes | ||||
|     LEGO The Lord Of The Rings | ||||
|     LEGO Star Wars - The Clone Wars | ||||
|     Warhammer 40,000 Space Marine | ||||
|     Star Wars The Force Unleashed | ||||
|     Wolverine | ||||
|  | ||||
| ###Scripts version 2267### Дата: 27.03.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * реализовано двукратное ускорение обновления префикса на всех системах | ||||
| * улучшен функционал настроек для exe файлов (EDIT_DB) | ||||
| * исправлена автоустановка BattleNET | ||||
|  | ||||
| ###Scripts version 2266### Дата: 26.03.2024 / Размер скачиваемого обновления: 170 мегабайт | ||||
| * HOTFIX - исправлен баг гитхаба при доступе к plugins | ||||
|  | ||||
| ###Scripts version 2265### Дата: 26.03.2024 / Размер скачиваемого обновления: 570 мегабайт | ||||
| * в префикс DEFAULT добавлен компонент faudio (необходим для игр на движке Creation Engine, пример The Elder Scrolls) | ||||
| * обновлен пакет библиотек plugins_v14: | ||||
|     перенесены из пакета libs: d3d_extras, reshade и default_pfx | ||||
|     добавлены портативные версии: yad_v13_0, perl, exiftool (спасибо Boria138) | ||||
| * обновлен пакет библиотек libs_v47: | ||||
|     pressure-vessel 0.20240306.0 | ||||
|     sniper 0.20240307.80401 | ||||
| * обновлен PROTON_LG до версии "9-2" | ||||
| * обновлены версии: | ||||
|     DXVK_GIT "2.3.1" | ||||
|     VKD3D_GIT "1.1-3973" | ||||
| * добавлено сохранение изменений настроек в EDIT_DB при искользовании кнопки "ОТКРЫТЬ ФАЙЛ НАСТРОЕК" | ||||
| * улучшена поддержка тестовой сборки PortProton во flatpak | ||||
| * множество небольших улучшений скриптов | ||||
|  | ||||
| ###Scripts version 2264### Дата: 15.03.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * добавлен выбор завершения первой сессии PortProton при запуске второй | ||||
| * добавлена автоустановка игры "Pulse Online" | ||||
| @@ -1054,7 +1112,7 @@ export WINE_FULLSCREEN_FSR="1" (используется по умолчанию | ||||
| * обновлены db файлы | ||||
|  | ||||
| ###Scripts version 2065### | ||||
| * HOTFIX - корректировка завершения процессов yad и yad_v12_3 | ||||
| * HOTFIX - корректировка завершения процессов yad и yad_v13_0 | ||||
|  | ||||
| ###Scripts version 2064### | ||||
| * добавлено уведомление пользователю о возможных проблемах при запуске в Wayland сессии (один раз и только под Wayland) | ||||
| @@ -1461,7 +1519,7 @@ PS: не забывает для активации добавить перем | ||||
|  | ||||
| ###Scripts version 1104### | ||||
| * крупное обновлеение контейнера (libs_v16): | ||||
|     - добавлен /bin/yad_v12_3 версии 10.1 скомпилированный специально для будущего меню в трее) | ||||
|     - добавлен /bin/yad_v13_0 версии 10.1 скомпилированный специально для будущего меню в трее) | ||||
|     - обновлен MANGOHUD (требуется проверка под OpenGL) | ||||
|     - обновлен 7z необходимый для будущей автоматической установки Rockstar Game Launcher | ||||
| * для тестовой поддержки wayland добавлена переменная в скрипт var: GDK_BACKEND="x11" | ||||
|   | ||||
| @@ -5,7 +5,7 @@ if [ "${update_loc}" = "RUS" ] | ||||
| then | ||||
|     KEY_CREDITS=$RANDOM | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=1 --show-uri \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=1 --show-uri \ | ||||
| --image-path="$PW_GUI_ICON_PATH" --image="port_proton" --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
| --text-align=center --scroll --text="PortProton v. ${install_ver} | ||||
| scripts v. ${scripts_install_ver} | ||||
| @@ -18,7 +18,7 @@ https://linux-gaming.ru | ||||
| Подробнее см. в Лицензия." 2>/dev/null & | ||||
|  | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=2 \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=2 \ | ||||
| --text-align=center --scroll --text="Автор:   Casro-Fidel (Михаил Тергоев) | ||||
|  | ||||
| Помощники разработчика и тестировщики: | ||||
| @@ -44,7 +44,7 @@ Boria138 | ||||
| Akai | ||||
| " 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=3 --text-info --scroll <<< "          Лицензия Массачусетского технологического института (MIT License) | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=3 --text-info --scroll <<< "          Лицензия Массачусетского технологического института (MIT License) | ||||
|  | ||||
|               Авторские права © $(date +'%Y') Castro-Fidel (linux-gaming.ru) | ||||
|  | ||||
| @@ -67,7 +67,7 @@ Akai | ||||
| ВНЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ В | ||||
| ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ." 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=4 \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=4 \ | ||||
| --text-info --fontname="Serif bold italic 12" --show-uri --scroll \ | ||||
| <<< '                                            Проект поддержали: | ||||
|                                     https://boosty.to/portwine-linux.ru | ||||
| @@ -337,7 +337,7 @@ Akai | ||||
|  | ||||
|                                     Список будет дополняться...' 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=5 --text="Хотите присоединится и помочь в развитии проекта:" \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=5 --text="Хотите присоединится и помочь в развитии проекта:" \ | ||||
| --title=JOIN --window-icon=group  --image=system-config-users --uri-color=red --show-uri \ | ||||
| --text-info --scroll <<< \ | ||||
| "Website:  https://linux-gaming.ru/ | ||||
| @@ -349,7 +349,7 @@ boosty: https://boosty.to/portwine-linux.ru | ||||
| Yandex кошелек:   410012267513818 | ||||
| -------------------------------------------" 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=6 --show-uri --title="THIRD PARTY LIBRARIES" \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=6 --show-uri --title="THIRD PARTY LIBRARIES" \ | ||||
| --fontname="Serif bold italic 10" --text-info <<< "                   Сторонние библиотеки, которые используются в PortProton | ||||
|  | ||||
|     PortProton собран на основе бесплатных библиотек программного обеспечения: | ||||
| @@ -359,7 +359,7 @@ WINE-PROTON-GE: https://github.com/GloriousEggroll/proton-ge-custom/ | ||||
| Kron4ek/Wine: https://github.com/Kron4ek/Wine-Builds | ||||
| YAD: https://github.com/v1cont/yad" 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --title "О НАС" --key="${KEY_CREDITS}" --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
| "${pw_yad_v13_0}" --title "О НАС" --key="${KEY_CREDITS}" --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
|  --notebook --no-buttons  --tab-pos=bottom \ | ||||
| --tab="О PORTPROTON" --tab="АВТОРЫ" --tab="ЛИЦЕНЗИЯ" --tab="СПОНСОРЫ" --tab="ПРИСОЕДИНИТЬСЯ" \ | ||||
| --tab="БИБЛИОТЕКИ" | ||||
| @@ -372,7 +372,7 @@ else | ||||
|     KEY_CREDITS=$RANDOM | ||||
|  | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=1 --show-uri \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=1 --show-uri \ | ||||
| --image-path="$PW_GUI_ICON_PATH" --image="port_proton" \ | ||||
| --text-align=center --scroll --text="PortProton v. ${install_ver} | ||||
| scripts v. ${scripts_install_ver} | ||||
| @@ -386,7 +386,7 @@ This program comes with absolutely no warranty. | ||||
| See the License for details." 2>/dev/null & | ||||
|  | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=2 \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=2 \ | ||||
| --text-align=center --scroll --text="Author:   Casro-Fidel (Mikhail Tergoev) | ||||
|  | ||||
| Developer assistants and testers: | ||||
| @@ -412,7 +412,7 @@ Boria138 | ||||
| Akai | ||||
| " 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=3 --text-info --scroll <<< "MIT License | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=3 --text-info --scroll <<< "MIT License | ||||
|  | ||||
| Copyright (©) 2022 Castro-Fidel (linux-gaming.ru) | ||||
|  | ||||
| @@ -434,7 +434,7 @@ 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 | ||||
| SOFTWARE." 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=4 \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=4 \ | ||||
| --text-info --fontname="Serif bold italic 12" --show-uri --scroll \ | ||||
| <<< '                                    The project was supported: | ||||
|                               https://boosty.to/portwine-linux.ru: | ||||
| @@ -705,7 +705,7 @@ SOFTWARE." 2>/dev/null & | ||||
|  | ||||
|                                       The list will be updated...' 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=5 --text="Do you want to join and help in the development of the project:" \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=5 --text="Do you want to join and help in the development of the project:" \ | ||||
| --title=JOIN --window-icon=group  --image=system-config-users --uri-color=red --show-uri \ | ||||
| --text-info --scroll <<< \ | ||||
| "Website:  http://linux-gaming.ru | ||||
| @@ -717,7 +717,7 @@ boosty:  https://boosty.to/portwine-linux.ru | ||||
| Yandex wallet:   410012267513818 | ||||
| -------------------------------------------" 2>/dev/null & | ||||
|  | ||||
| "${pw_yad_v12_3}" --plug="${KEY_CREDITS}" --tabnum=6 --show-uri --title="THIRD PARTY LIBRARIES" \ | ||||
| "${pw_yad_v13_0}" --plug="${KEY_CREDITS}" --tabnum=6 --show-uri --title="THIRD PARTY LIBRARIES" \ | ||||
| --fontname="Serif bold italic 10" --text-info <<< "                               Third-party libraries that are used in PortProton | ||||
|  | ||||
|               PortProton is built on the basis of the following free software libraries: | ||||
| @@ -728,7 +728,7 @@ Kron4ek/Wine: https://github.com/Kron4ek/Wine-Builds | ||||
| YAD: https://github.com/v1cont/yad" 2>/dev/null & | ||||
|  | ||||
|  | ||||
| "${pw_yad_v12_3}" --title "ABOUT US" --key="${KEY_CREDITS}" ---window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
| "${pw_yad_v13_0}" --title "ABOUT US" --key="${KEY_CREDITS}" ---window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
| --notebook --no-buttons  --tab-pos=bottom \ | ||||
| --tab="ABOUT PORTPROTON" --tab="AUTORS" --tab="LICENSE" --tab="SPONSORS" --tab="JOIN" \ | ||||
| --tab="THIRD PARTY LIBRARIES" | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -14,8 +14,8 @@ else | ||||
| 	if [[ "${update_loc}" == "RUS" || "${update_loc}" == "ENG" ]] && [[ -f "${PORT_WINE_TMP_PATH}/${portname}_loc" ]] ; then | ||||
| 		echo "" | ||||
| 	else | ||||
| 		[[ ! -f "${pw_yad_v12_3}" ]] && pw_yad_v12_3="yad" | ||||
| 		SET_LANG=$("$pw_yad_v12_3" --title  "LAUNGUAGE" --text "Select the language:" --list --radiolist \ | ||||
| 		[[ ! -f "${pw_yad_v13_0}" ]] && pw_yad_v13_0="yad" | ||||
| 		SET_LANG=$("${pw_yad_v13_0}" --title  "LAUNGUAGE" --text "Select the language:" --list --radiolist \ | ||||
| 		--column="Set:" --column "Choose language:" TRUE "RUS" FALSE "ENG" \ | ||||
| 		--window-icon "$PW_GUI_ICON_PATH/portproton.svg" --width=300 --height=150) | ||||
| 		SET_LANG="$(echo $SET_LANG | awk -F'|' '{print $2}')" | ||||
| @@ -383,7 +383,7 @@ if [[ "${update_loc}" == "RUS" ]] ; then | ||||
|  | ||||
| 	export loc_gui_disabled_mh="ВЫКЛЮЧИТЬ MANGOHUD" | ||||
| 	export loc_gui_disabled_mh_help="Выключить MangoHud и перейти в предыдущее меню." | ||||
| 	export loc_gui_mh_top="Настройки MangoHud  (Клавишы <b>R_SHIFT + F12</b> отключают MangoHud)\n<b>ПРИМЕЧАНИЕ:</b> Для вывода справки по каждому пункту, просто наведите курсор мыши на текст.\n" | ||||
| 	export loc_gui_mh_top="Настройки MangoHud  (Клавиши <b>R_SHIFT + F12</b> отключают MangoHud)\n<b>ПРИМЕЧАНИЕ:</b> Для вывода справки по каждому пункту, просто наведите курсор мыши на текст.\n" | ||||
|  | ||||
| 	export loc_gui_no="НЕТ" | ||||
| 	export loc_gui_yes="ДА" | ||||
|   | ||||
| @@ -12,6 +12,7 @@ export PW_DLL_INSTALL="vcrun2019 d3dx11_42 d3dx11_43" | ||||
| export PW_WINDOWS_VER=10 | ||||
| export PW_WINE_FULLSCREEN_FSR="0" | ||||
| export PW_USE_EAC_AND_BE="0" | ||||
| export PW_WINE_USE="PROTON_LG" | ||||
|  | ||||
| add_in_start_portwine () { | ||||
|     rm -fr "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/ProgramData/Agent/data" | ||||
|   | ||||
| @@ -41,4 +41,4 @@ export PW_DLL_INSTALL="" | ||||
| export WINEDLLOVERRIDES="" | ||||
| export PW_WINE_CPU_TOPOLOGY="disabled" | ||||
| export GAMESCOPE_ARGS="-F fsr" | ||||
| add_in_start_portwine () { export LANG=C ;} | ||||
| add_in_start_portwine () { export LC_CTYPE=C ;} | ||||
|   | ||||
| @@ -17,8 +17,3 @@ Grub Customizer utility" | ||||
| fi | ||||
| export PW_VULKAN_USE="2" | ||||
|  | ||||
| add_in_start_portwine () { | ||||
|     if [ "${update_loc}" = "RUS" ] ; then | ||||
|         sed -i "s/Language=english/Language=russian/g" "${PATH_TO_GAME}/Engine/Binaries/ThirdParty/Steamworks/Steamv154/Win64/steam_api64.ini" | ||||
|     fi | ||||
| } | ||||
|   | ||||
							
								
								
									
										18
									
								
								data_from_portwine/scripts/portwine_db/HorizonForbiddenWest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								data_from_portwine/scripts/portwine_db/HorizonForbiddenWest
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| #!/usr/bin/env bash | ||||
| #Author: fidel | ||||
| #HorizonForbiddenWest.exe | ||||
| #Rating=5 | ||||
| #####################examples########################### | ||||
| export PW_WINE_USE="WINE-9.5-AMD64" | ||||
| export PW_WINDOWS_VER="10" | ||||
| export PW_DLL_INSTALL="" | ||||
| export WINEDLLOVERRIDES="" | ||||
| export PW_VULKAN_USE="2" | ||||
| export PW_USE_GSTREAMER="1" | ||||
| export PW_USE_D3D_EXTRAS="1" | ||||
| export PW_FIX_VIDEO_IN_GAME="1" | ||||
| export PW_USE_SHADER_CACHE="0" | ||||
| export PW_USE_EAC_AND_BE="0" | ||||
| export LAUNCH_PARAMETERS="-EpicPortal" | ||||
|  | ||||
| gui_proton_downloader silent "$PW_WINE_USE" | ||||
| @@ -3,14 +3,15 @@ | ||||
| ######################################################################## | ||||
| [ "${update_loc}" = "RUS" ] && export BN_LOC=ruRU || export BN_LOC=enUS | ||||
| export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/Battle.net-Setup-${BN_LOC}.exe" | ||||
| export PW_WINE_USE="WINE_LG" | ||||
|  | ||||
| start_portwine | ||||
| if try_download_no_mirror "https://battle.net/download/getInstallerForGame?os=win&version=LIVE&gameProgram=BATTLENET_APP" "${PW_AUTOINSTALL_EXE}" | ||||
| then | ||||
|     # PW_START_PROGRESS_BAR "${loc_gui_installing_the} Battle Net. ${loc_gui_please_wait} " | ||||
|     try_remove_dir "$WINEPREFIX/drive_c/ProgramData/Battle.net" | ||||
|     pw_kill_autostart Battle.net.exe & | ||||
|     pw_run "${PW_AUTOINSTALL_EXE}" | ||||
|     pw_start_progress_bar_block "${loc_gui_installing_the} Battle Net. ${loc_gui_please_wait} " | ||||
|     portwine_exe=`find "$WINEPREFIX/drive_c/" -type f -name "Battle.net.exe" | grep "Battle.net/Battle.net.exe"` | ||||
|     pw_stop_progress_bar | ||||
|     portwine_create_shortcut | ||||
|   | ||||
| @@ -1,893 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
| # Author: Castro-Fidel (linux-gaming.ru) | ||||
| # Development assistants: Cefeiko; Dezert1r; Taz_mania; Anton_Famillianov; gavr; RidBowt; chal55rus; UserDiscord; Boria138; Vano; Akai | ||||
| ######################################################################## | ||||
| echo ' | ||||
|             █░░ █ █▄░█ █░█ ▀▄▀ ▄▄ █▀▀ ▄▀█ █▀▄▀█ █ █▄░█ █▀▀ ░ █▀█ █░█ | ||||
|             █▄▄ █ █░▀█ █▄█ █░█ ░░ █▄█ █▀█ █░▀░█ █ █░▀█ █▄█ ▄ █▀▄ █▄█ | ||||
|  | ||||
| ██████╗░░█████╗░██████╗░████████╗██████╗░██████╗░░█████╗░████████╗░█████╗░███╗░░██╗ | ||||
| ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗████╗░██║ | ||||
| ██████╔╝██║░░██║██████╔╝░░░██║░░░██████╔╝██████╔╝██║░░██║░░░██║░░░██║░░██║██╔██╗██║ | ||||
| ██╔═══╝░██║░░██║██╔══██╗░░░██║░░░██╔═══╝░██╔══██╗██║░░██║░░░██║░░░██║░░██║██║╚████║ | ||||
| ██║░░░░░╚█████╔╝██║░░██║░░░██║░░░██║░░░░░██║░░██║╚█████╔╝░░░██║░░░╚█████╔╝██║░╚███║ | ||||
| ╚═╝░░░░░░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░░╚════╝░╚═╝░░╚══╝ | ||||
|  | ||||
| ' | ||||
| if [[ $(id -u) = 0 ]] ; then | ||||
|     echo "Do not run this script as root!" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| . "$(dirname $(readlink -f "$0"))/functions_helper" | ||||
|  | ||||
| start_portwine () { | ||||
|     export WINEPREFIX="$(readlink -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}")" | ||||
|  | ||||
|     PROGPFX_URL="github.com/Castro-Fidel/PortWINE/releases/download/progpfx${PROGPFX_VER}/progpfx${PROGPFX_VER}.tar.xz" | ||||
|     if [[ "${PW_PREFIX_NAME}" == "PROGRAMS" && ! -f "${WINEPREFIX}"/.progpfx ]] ; then | ||||
|         print_info "Download and install PROGRAMS pfx..." | ||||
|         if try_download "${PROGPFX_URL}" "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" ; then | ||||
|             unpack_tar_xz "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/" | ||||
|             try_remove_file "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" | ||||
|         else | ||||
|             try_remove_file "${PORT_WINE_PATH}/data/tmp/progpfx.tar.xz" | ||||
|             yad_error_download && exit 1 | ||||
|         fi | ||||
|     fi | ||||
|          | ||||
|     DOTPFX_URL="github.com/Castro-Fidel/PortWINE/releases/download/dotpfx${DOTPFX_VER}/dotpfx${DOTPFX_VER}.tar.xz" | ||||
|     if [[ "${PW_PREFIX_NAME}" == "DOTNET" ]] && [[ ! -f "${WINEPREFIX}"/.dotnet${DOTPFX_VER} ]] ; then | ||||
|         print_info "Download and install DOTNET pfx..." | ||||
|         if try_download "${DOTPFX_URL}" "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" ; then | ||||
|             unpack_tar_xz "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/" | ||||
|             try_remove_file "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" | ||||
|         else | ||||
|             try_remove_file "${PORT_WINE_PATH}/data/tmp/dotpfx.tar.xz" | ||||
|             yad_error_download && exit 1 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     var_winedlloverride_update "${PW_MUST_WINEDLLOVERRIDES}" | ||||
|     pw_list_install_dll_in_prefix | ||||
|     if [[ "${PW_WINE_USE}" != "USE_SYSTEM_WINE" ]] | ||||
|     then pw_check_and_download_wine "${PW_WINE_USE}" | ||||
|     fi | ||||
|     init_wine_ver | ||||
|     pw_init_runtime | ||||
|  | ||||
|     check_variables VKD3D_DEBUG none | ||||
|     check_variables DXVK_LOG_LEVEL none | ||||
|     check_variables VK_LOADER_DEBUG none | ||||
|     check_variables VKBASALT_LOG_LEVEL none | ||||
|     check_variables DXVK_NVAPI_LOG_LEVEL none | ||||
|     if [[ "${PW_LOG}" == 1 ]] ; then | ||||
|         export WINEDEBUG="fixme-all,err+loaddll,err+dll,err+file,err+reg" | ||||
|         export WINE_MONO_TRACE="E:System.NotImplementedException" | ||||
|         export VKBASALT_LOG_LEVEL="error" | ||||
|     else | ||||
|         export WINEDEBUG="-all" | ||||
|         unset WINE_MONO_TRACE | ||||
|     fi | ||||
|  | ||||
|     pw_wineboot () { | ||||
|         print_info "Used wineboot $@ for prefix: ${PW_PREFIX_NAME}" | ||||
|         ${pw_runtime} env GST_PLUGIN_SYSTEM_PATH_1_0="" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ | ||||
|         "${WINELOADER}" wineboot $@ &>>"${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|         wait_wineserver | ||||
|         print_info "The prefix has been updated." | ||||
|     } | ||||
|      | ||||
|     if [[ ! -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/drive_c/windows ]] \ | ||||
|     || [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/userdef.reg ]] \ | ||||
|     || [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/system.reg ]] \ | ||||
|     || [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"/user.reg ]] | ||||
|     then | ||||
|         pw_clear_pfx | ||||
|         check_dirs_and_files_in_pfx | ||||
|  | ||||
|         if [[ "${PW_PREFIX_NAME}" == DEFAULT ]] ; then | ||||
|             pw_update_pfx_cover_gui | ||||
|             unpack_tar_xz "${PW_WINELIB}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent | ||||
|             pw_wineboot -u | ||||
|         elif [[ "${PW_CHECK_AUTOINSTAL}" == 1 ]] \ | ||||
|         && [[ "${DISABLE_CP_DEFPFX}" != 1 ]] ; then | ||||
|             pw_update_pfx_cover_gui | ||||
|             unpack_tar_xz "${PW_WINELIB}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent | ||||
|             pw_wineboot -u | ||||
|         elif [[ "${PW_CHECK_AUTOINSTAL}" == 1 ]] \ | ||||
|         && [[ "${DISABLE_CP_DEFPFX}" == 1 ]] ; then | ||||
|             pw_update_pfx_cover_gui | ||||
|             pw_wineboot -i | ||||
|         elif yad_question "$loc_gui_dll_new_pfx ${PW_PREFIX_NAME}" ; then | ||||
|             pw_update_pfx_cover_gui | ||||
|             unpack_tar_xz "${PW_WINELIB}/default_pfx.tar.xz" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/" silent | ||||
|             pw_wineboot -u | ||||
|         else | ||||
|             pw_update_pfx_cover_gui | ||||
|             pw_wineboot -i | ||||
|         fi | ||||
|     else | ||||
|         check_dirs_and_files_in_pfx | ||||
|         if [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" ]] \ | ||||
|         || ! grep "${PW_WINE_USE}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" &>/dev/null | ||||
|         then | ||||
|             pw_update_pfx_cover_gui | ||||
|             # HOTFIX - update prefix for vkPlay | ||||
|             if echo "$portwine_exe" | grep -i vkplay &>/dev/null | ||||
|             then pw_kill_autostart GameCe 5 please & : | ||||
|             fi | ||||
|             pw_wineboot -u | ||||
|         fi | ||||
|     fi | ||||
|     echo "${PW_WINE_USE}" > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" | ||||
|  | ||||
|     # if [[ -f "$portwine_exe" ]] && [[ "${WARN_CYRILLIC_IN_PATH}" == 1 ]] ; then | ||||
|     #     edit_db_from_gui WARN_CYRILLIC_IN_PATH | ||||
|     #     unset WARN_CYRILLIC_IN_PATH | ||||
|     # fi | ||||
|  | ||||
|     if [[ "$PW_USE_OBS_VKCAPTURE" == "1" ]] ; then | ||||
|         export OBS_VKCAPTURE="1" | ||||
|         export PW_USE_SYSTEM_VK_LAYERS="1" | ||||
|         print_warning "System mangohud, vkBasalt, obs-vk capture and other applications using vulkan layers are forcibly used." | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_NO_ESYNC}" == 1 ]] | ||||
|     then export WINEESYNC="0" | ||||
|     else export WINEESYNC="1" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_NO_FSYNC}" == 1 ]] ; then | ||||
|         export WINEFSYNC="0" | ||||
|         export WINEFSYNC_FUTEX2="0" | ||||
|     else | ||||
|         export WINEFSYNC="1" | ||||
|         export WINEFSYNC_FUTEX2="1" | ||||
|         export WINEFSYNC_SPINCOUNT=100 | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_FORCE_LARGE_ADDRESS_AWARE}" == 1 ]] | ||||
|     then export WINE_LARGE_ADDRESS_AWARE="1" | ||||
|     else export WINE_LARGE_ADDRESS_AWARE="0" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_OLD_GL_STRING}" == 1 ]] ; then | ||||
|         export MESA_EXTENSION_MAX_YEAR="2003" #mesa override | ||||
|         export __GL_ExtensionStringVersion="17700" #nvidia override | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_NO_WRITE_WATCH}" == 1 ]] ; then | ||||
|         export WINE_DISABLE_WRITE_WATCH="1" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_VULKAN_NO_ASYNC}" == 1 ]] ; then | ||||
|         export RADV_DEBUG="llvm" | ||||
|         var_vkd3d_config_update single_queue | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_USE_GAMESCOPE}" == 1 ]] && command -v gamescope &>/dev/null && ! check_gamescope_session ; then | ||||
|         # Workaround for https://gitlab.freedesktop.org/mesa/mesa/-/issues/6029 | ||||
|         if [[ -d "/sys/module/i915" ]] ; then | ||||
|             export INTEL_DEBUG="norbc" | ||||
|         fi | ||||
|         if [[ "${PW_GPU_USE}" != "disabled" ]] ; then | ||||
|             PW_vendorID="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep -B3 "${PW_GPU_USE}" | grep vendorID | sort -u | awk -F'0x' '{print $2}')" | ||||
|             PW_deviceID="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep -B3 "${PW_GPU_USE}" | grep deviceID | sort -u | awk -F'0x' '{print $2}')" | ||||
|             PW_ID_VIDEO="--prefer-vk-device ${PW_vendorID}:${PW_deviceID}" | ||||
|         else | ||||
|             unset PW_ID_VIDEO | ||||
|         fi | ||||
|         export PW_RUN_GAMESCOPE="gamescope -o 30 ${PW_ID_VIDEO} ${GAMESCOPE_ARGS} --" | ||||
|         export PW_WINE_FULLSCREEN_FSR="0" | ||||
|         export vk_xwayland_wait_ready="false" | ||||
|     else | ||||
|         export PW_USE_GAMESCOPE="0" | ||||
|         export PW_RUN_GAMESCOPE="" | ||||
|     fi | ||||
|      | ||||
|     enabled_fake_nvidia_videocard ()  | ||||
|     { | ||||
|         if [[ "${1}" == old ]] ; then | ||||
|             sed -i /'dxgi.customDeviceDesc =/c # dxgi.customDeviceDesc =' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.customDeviceId =/c dxgi.customDeviceId = 222F' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.customVendorId =/c dxgi.customVendorId = 10de' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.hideAmdGpu =/c # dxgi.hideAmdGpu =' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.hideNvidiaGpu =/c # dxgi.hideNvidiaGpu =' "${DXVK_CONFIG_FILE}" | ||||
|             unset WINE_HIDE_NVIDIA_GPU WINE_HIDE_AMD_GPU  | ||||
|             unset DXVK_NVAPI_DRIVER_VERSION DXVK_NVAPI_ALLOW_OTHER_DRIVERS | ||||
|         elif [[ "${1}" == new ]] ; then | ||||
|             sed -i /'dxgi.customDeviceDesc =/c dxgi.customDeviceDesc = "NVIDIA GeForce RTX 4090"' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.customDeviceId =/c dxgi.customDeviceId = 2684' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.customVendorId =/c dxgi.customVendorId = 10de' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.hideAmdGpu =/c dxgi.hideAmdGpu = True' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.hideNvidiaGpu =/c dxgi.hideNvidiaGpu = False' "${DXVK_CONFIG_FILE}" | ||||
|             export WINE_HIDE_NVIDIA_GPU=0 | ||||
|             export WINE_HIDE_AMD_GPU=1 | ||||
|             export DXVK_NVAPI_DRIVER_VERSION=53713 | ||||
|             export DXVK_NVAPI_ALLOW_OTHER_DRIVERS=1 | ||||
|         elif [[ "${1}" == 0 ]] ; then | ||||
|             sed -i /'dxgi.customDeviceDesc =/c # dxgi.customDeviceDesc =' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.customDeviceId =/c # dxgi.customDeviceId =' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.customVendorId =/c # dxgi.customVendorId =' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.hideAmdGpu =/c # dxgi.hideAmdGpu =' "${DXVK_CONFIG_FILE}" | ||||
|             sed -i /'dxgi.hideNvidiaGpu =/c # dxgi.hideNvidiaGpu =' "${DXVK_CONFIG_FILE}" | ||||
|             unset WINE_HIDE_NVIDIA_GPU WINE_HIDE_AMD_GPU  | ||||
|             unset DXVK_NVAPI_DRIVER_VERSION DXVK_NVAPI_ALLOW_OTHER_DRIVERS | ||||
|         fi | ||||
|     } | ||||
|  | ||||
|     for rm_dll in "nvml.dll" "nvngx.ini" "nvngx.dll" "_nvngx.dll" ; do | ||||
|         try_remove_file "${WINEPREFIX}/drive_c/windows/syswow64/$rm_dll" | ||||
|         try_remove_file "${WINEPREFIX}/drive_c/windows/system32/$rm_dll" | ||||
|     done | ||||
|  | ||||
|     # TODO: LFX (wait new LFX v2) | ||||
|     # if [[ "${PW_USE_LFX}" == 1 ]] ; then | ||||
|     #     try_force_link_file "${PW_PLUGINS_PATH}/lfx/${PW_LFX_VER}/latencyflex_layer.so" "${WINEDIR}/lib64/wine/x86_64-unix/" | ||||
|     #     try_force_link_file "${PW_PLUGINS_PATH}/lfx/${PW_LFX_VER}/latencyflex_layer.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|     #     try_force_link_file "${PW_PLUGINS_PATH}/lfx/${PW_LFX_VER}/latencyflex_wine.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|     #     enabled_fake_nvidia_videocard 1 | ||||
|     #     export LFX2=1 | ||||
|     # fi | ||||
|  | ||||
|     export DXVK_ENABLE_NVAPI=1 | ||||
|     if [[ "${PW_USE_FAKE_DLSS_3}" == 1 ]] ; then | ||||
|         try_force_link_file "${PW_PLUGINS_PATH}/fake_dlss_3/${PW_FAKE_DLSS_3_VER}/nvngx.dll" "${WINEPREFIX}/drive_c/windows/system32/"  | ||||
|         try_force_link_file "${PW_PLUGINS_PATH}/fake_dlss/${PW_FAKE_DLSS_3_VER}/dlssg_to_fsr3_amd_is_better.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|         try_force_link_file "${PW_PLUGINS_PATH}/nvngx/_nvngx.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|         var_winedlloverride_update "nvapi,nvapi64,nvngx,_nvngx,dlssg_to_fsr3_amd_is_better=n;nvcuda=b" | ||||
|         enabled_fake_nvidia_videocard new | ||||
|         export WINEHAGS=1 | ||||
|     elif [[ "${PW_USE_FAKE_DLSS}" == 1 ]] && [[ -d "${PW_PLUGINS_PATH}/fake_dlss/${PW_FAKE_DLSS_VER}/" ]] ; then | ||||
|         try_force_link_file "${PW_PLUGINS_PATH}/fake_dlss/${PW_FAKE_DLSS_VER}/nvngx.dll" "${WINEPREFIX}/drive_c/windows/system32/"  | ||||
|         try_force_link_file "${PW_PLUGINS_PATH}/fake_dlss/${PW_FAKE_DLSS_VER}/nvngx.ini" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|         enabled_fake_nvidia_videocard old | ||||
|         var_winedlloverride_update "nvapi,nvapi64,nvngx=n;_nvngx=;nvcuda=b" | ||||
|     elif [[ "${PW_USE_NVAPI_AND_DLSS}" == 1 ]] ; then | ||||
|         FIND_NVNGX="$(dirname $(find /usr/* -type f -name "nvngx.dll" 2>/dev/null | head -n 1 | awk '{print $1}'))" | ||||
|         if [[ ! -z "$FIND_NVNGX" ]] ; then | ||||
|             try_copy_file "${FIND_NVNGX}/nvngx.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|             try_copy_file "${FIND_NVNGX}/_nvngx.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|         else | ||||
|             try_force_link_file "${PW_PLUGINS_PATH}/nvngx/nvngx.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|             try_force_link_file "${PW_PLUGINS_PATH}/nvngx/_nvngx.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|         fi  | ||||
|         enabled_fake_nvidia_videocard 0 | ||||
|         var_winedlloverride_update "nvngx,_nvngx,nvapi,nvapi64=n;nvcuda=b" | ||||
|     else | ||||
|         enabled_fake_nvidia_videocard 0 | ||||
|         export DXVK_ENABLE_NVAPI=0 | ||||
|         var_winedlloverride_update "nvngx,_nvngx=" | ||||
|     fi | ||||
|      | ||||
|     if [[ "${PW_USE_GALLIUM_ZINK}" == 1 ]] | ||||
|     then export PW_VULKAN_USE=5 | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_HEAP_DELAY_FREE}" == 1 ]] | ||||
|     then export WINE_HEAP_DELAY_FREE="1" | ||||
|     else export WINE_HEAP_DELAY_FREE="0" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_WINE_ALLOW_XIM}" == 1 ]] | ||||
|     then export WINE_ALLOW_XIM="1" | ||||
|     else export WINE_ALLOW_XIM="0" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_FIX_VIDEO_IN_GAME}" == 1 ]] | ||||
|     then export WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER="1" | ||||
|     else export WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER="0" | ||||
|     fi | ||||
|      | ||||
|     [[ "${PW_MANGOHUD_USER_CONF}" == 1 ]] && unset MANGOHUD_CONFIG | ||||
|     [[ "${PW_VKBASALT_USER_CONF}" == 1 ]] && unset PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS | ||||
|  | ||||
|     if [[ "${PW_USE_DXR11}" == 1 ]] \ | ||||
|     || [[ "${PW_USE_DXR10}" == 1 ]] \ | ||||
|     || [[ "${PW_USE_RAY_TRACING}" == 1 ]] | ||||
|     then | ||||
|         export VKD3D_FEATURE_LEVEL="12_1" | ||||
|         var_vkd3d_config_update dxr | ||||
|         var_radv_perftest_config_update rt | ||||
|     else | ||||
|         var_vkd3d_config_update nodxr | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_GPU_USE}" != "disabled" ]] ; then | ||||
|         export DXVK_FILTER_DEVICE_NAME="${PW_GPU_USE}" | ||||
|         export VKD3D_FILTER_DEVICE_NAME="${PW_GPU_USE}" | ||||
|         if echo "${PW_GPU_USE}" | grep -i nvidia &>/dev/null ; then | ||||
|             if [[ -f "/usr/share/vulkan/icd.d/nvidia_icd.json" ]] ; then | ||||
|                 export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/nvidia_icd.json" | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
|  | ||||
|     case "$PW_FORCE_USE_VSYNC" in  # 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
|         0) | ||||
|             export  vblank_mode=0 | ||||
|             export __GL_SYNC_TO_VBLANK=0 | ||||
|             ;; | ||||
|         1) | ||||
|             export vblank_mode=1 | ||||
|             export __GL_SYNC_TO_VBLANK=1 | ||||
|             ;; | ||||
|         *) | ||||
|             unset vblank_mode __GL_SYNC_TO_VBLANK | ||||
|             ;; | ||||
|     esac | ||||
|  | ||||
|     export int_xneur=0 | ||||
|     if [[ ! -z "`pgrep xneur`" ]]; then | ||||
|         killall xneur | ||||
|         export int_xneur=1 | ||||
|     fi | ||||
|  | ||||
|     if check_gamescope_session ; then | ||||
|         export PW_GAMEMODERUN_SLR="" | ||||
|     elif [[ "$PW_USE_GAMEMODE" = "1" ]] ; then | ||||
|         if command -v gamemoded &>/dev/null ; then | ||||
|             export GAMEMODERUN=1 | ||||
|             PW_GAMEMODERUN_SLR="gamemoderun" | ||||
|             systemctl enable --now --user gamemoded &>/dev/null | ||||
|             print_info "Gamemod will be launched." | ||||
|         elif [[ "$PW_USE_RUNTIME" == 1 ]] ; then | ||||
|             export GAMEMODERUN=1 | ||||
|             if ! pidof gamemoded &>/dev/null ; then | ||||
|                 GAMEMODEAUTO_NAME="libgamemodeauto.so.0" | ||||
|                 if [[ ! -z "${PW_LD_PRELOAD}" ]] | ||||
|                 then export PW_LD_PRELOAD="${PW_LD_PRELOAD}:${GAMEMODEAUTO_NAME}" | ||||
|                 else export PW_LD_PRELOAD="${GAMEMODEAUTO_NAME}" | ||||
|                 fi | ||||
|  | ||||
|                 env LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64:${PW_PLUGINS_PATH}/portable/lib/lib32" \ | ||||
|                 "${PW_PLUGINS_PATH}/portable/bin/gamemoded" &>/dev/null & | ||||
|  | ||||
|                 print_info "Gamemod will be launched." | ||||
|                 sleep 0.1 | ||||
|             fi | ||||
|         else | ||||
|             export GAMEMODERUN=0 | ||||
|             export PW_GAMEMODERUN_SLR="" | ||||
|         fi | ||||
|     else | ||||
|         export GAMEMODERUN=0 | ||||
|         export PW_GAMEMODERUN_SLR="" | ||||
|         print_info "Gamemod is not installed or disabled in vars script or db file: PW_USE_GAMEMODE=$PW_USE_GAMEMODE" | ||||
|     fi | ||||
|     pw_other_fixes | ||||
|      | ||||
|     #enabled BattleEye_Runtime and EasyAntiCheat_Runtime | ||||
|     if [[ "${PW_USE_EAC_AND_BE}" == 1 ]] ; then | ||||
|         export PROTON_BATTLEYE_RUNTIME="${PW_PLUGINS_PATH}/BattlEye_Runtime" | ||||
|         export PROTON_EAC_RUNTIME="${PW_PLUGINS_PATH}/EasyAntiCheat_Runtime" | ||||
|         var_winedlloverride_update "beclient,beclient_x64=b,n" | ||||
|     else | ||||
|         unset PROTON_BATTLEYE_RUNTIME PROTON_EAC_RUNTIME | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_REDUCE_PULSE_LATENCY}" == 1 ]] ; then | ||||
|         export PULSE_LATENCY_MSEC=60 | ||||
|         # export PIPEWIRE_LATENCY=128/48000 | ||||
|     else | ||||
|         unset PULSE_LATENCY_MSEC | ||||
|     fi | ||||
|  | ||||
|     if [[ "$PW_USE_US_LAYOUT" == "1" ]] \ | ||||
|     && [[ "${XDG_SESSION_TYPE}" != "wayland" ]] \ | ||||
|     && command -v setxkbmap &>/dev/null | ||||
|     then | ||||
|         setxkbmap -model pc101 us -print | xkbcomp - $DISPLAY &>/dev/null | ||||
|     else | ||||
|         export PW_USE_US_LAYOUT="0" | ||||
|     fi | ||||
|  | ||||
|     D3D_EXTRAS_LIBS="d3dcompiler_33 d3dcompiler_34 d3dcompiler_35 d3dcompiler_36 d3dcompiler_37 | ||||
|     d3dcompiler_38 d3dcompiler_39 d3dcompiler_40 d3dcompiler_41 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 | ||||
|     d3dcompiler_47 d3dx10_33 d3dx10_34 d3dx10_35 d3dx10_36 d3dx10_37 d3dx10_38 d3dx10_39 d3dx10_40 d3dx10_41 | ||||
|     d3dx10_42 d3dx10_43 d3dx10 d3dx11_42 d3dx11_43 d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29 d3dx9_30 | ||||
|     d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37 d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42 d3dx9_43" | ||||
|     if [[ "${PW_USE_D3D_EXTRAS}" == 1 ]] ; then | ||||
|         if [[ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" ]] \ | ||||
|         || [[ -z "`grep d3dx9 "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log"`" ]] | ||||
|         then | ||||
|             echo "d3dx9" >> "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | ||||
|         fi | ||||
|         #try link d3d extras libs | ||||
|         PATH_TO_D3DEXTRAS="${PW_WINELIB}/d3d_extras" | ||||
|         for d3d_extras_from_plugins in $D3D_EXTRAS_LIBS ; do | ||||
|             try_force_link_file "${PATH_TO_D3DEXTRAS}/x64/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|             try_force_link_file "${PATH_TO_D3DEXTRAS}/x32/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" | ||||
|             var_winedlloverride_update "${d3d_extras_from_plugins}=n" | ||||
|             if [[ -z "`grep "${d3d_extras_from_plugins}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log"`" ]] ; then | ||||
|                 echo "${d3d_extras_from_plugins}" >> "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | ||||
|             fi | ||||
|         done | ||||
|     else | ||||
|         for d3d_extras_from_plugins in $D3D_EXTRAS_LIBS ; do | ||||
|             try_force_link_file "${WINEDIR}/lib/wine/i386-windows/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" | ||||
|             try_force_link_file "${WINEDIR}/lib64/wine/x86_64-windows/${d3d_extras_from_plugins}.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|         done | ||||
|     fi | ||||
|     print_info "Try link wine d3d files by default..." | ||||
|     for rm_vulkan_dll in libvkd3d-1 libvkd3d-shader-1 dxvk_config nvapi nvapi64 d3d12core d3d12 d3d11 d3d10 d3d10core d3d10_1 d3d9 d3d8 dxgi wined3d ; do | ||||
|         try_remove_file "${WINEPREFIX}/drive_c/windows/system32/${rm_vulkan_dll}.dll" | ||||
|         try_remove_file "${WINEPREFIX}/drive_c/windows/syswow64/${rm_vulkan_dll}.dll" | ||||
|     done | ||||
|     for wine_build_dll in d3d12core d3d12 d3d11 d3d10 d3d10core d3d10_1 d3d9 d3d8 dxgi wined3d ; do | ||||
|         try_force_link_file "${WINEDIR}/lib/wine/i386-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" | ||||
|         try_force_link_file "${WINEDIR}/lib64/wine/x86_64-windows/${wine_build_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|     done | ||||
|  | ||||
|     create_new_dir "${PW_VULKAN_DIR}/opengl" | ||||
|     PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/opengl" | ||||
|     PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/opengl" | ||||
|  | ||||
|     if [[ "${PW_VULKAN_USE}" == "0" ]] ; then | ||||
|         print_info "Use OpenGL" | ||||
|         export GL_YIELD="NOTHING" | ||||
|         export mesa_glthread=true | ||||
|         export WINE_D3D_CONFIG='renderer=gl' | ||||
|     elif [[ "${PW_VULKAN_USE}" == "5" ]] ; then | ||||
|         print_info "Use OpenGL Zink" | ||||
|         export GL_YIELD="NOTHING" | ||||
|         export mesa_glthread=true | ||||
|         export WINE_D3D_CONFIG='renderer=gl' | ||||
|         export  __GLX_VENDOR_LIBRARY_NAME=mesa | ||||
|         export MESA_LOADER_DRIVER_OVERRIDE=zink | ||||
|         export GALLIUM_DRIVER=zink | ||||
|         if [[ "${XDG_SESSION_TYPE}" != "wayland" ]] || [[ "${PW_USE_GAMESCOPE}" != 1 ]] ; then | ||||
|             export LIBGL_KOPPER_DRI2=1 | ||||
|         fi | ||||
|     elif [[ "${PW_VULKAN_USE}" == "3" ]] ; then | ||||
|         print_info "Use GALLIUM-NINE (Native DX9 on MESA drivers)" | ||||
|         export PW_GALLIUM_NINE_PATH="${PW_PLUGINS_PATH}/gallium_nine_v.${PW_GALLIUM_NINE_VER}" | ||||
|         try_force_link_file "${PW_GALLIUM_NINE_PATH}/lib32/d3d9-nine.dll.so" "${WINEPREFIX}/drive_c/windows/syswow64/d3d9.dll" | ||||
|         try_force_link_file "${PW_GALLIUM_NINE_PATH}/lib64/d3d9-nine.dll.so" "${WINEPREFIX}/drive_c/windows/system32/d3d9.dll" | ||||
|         var_winedlloverride_update "d3d9=n;wined3d=b;dxvk_config,vulkan-1,winevulkan=" | ||||
|         unset FIND_D3D_MODULE D3D_MODULE_PATH | ||||
|         FIND_D3D_MODULE=`dirname $(find /usr/ -maxdepth 4 -type f -name "d3dadapter9.so.*") 2>/dev/null`  | ||||
|         if [[ ! -z "$FIND_D3D_MODULE" ]] ; then | ||||
|             old_IFS=$IFS | ||||
|             IFS=$'\n' | ||||
|             for D3D_MP in $FIND_D3D_MODULE ; do | ||||
|                 if [[ ! -z "$D3D_MODULE_PATH" ]]  | ||||
|                 then export D3D_MODULE_PATH="$D3D_MODULE_PATH:/run/host${D3D_MP}" | ||||
|                 else export D3D_MODULE_PATH="/run/host${D3D_MP}" | ||||
|                 fi | ||||
|             done | ||||
|             IFS=$old_IFS | ||||
|             print_info "D3D_MODULE_PATH=${D3D_MODULE_PATH}" | ||||
|         else  | ||||
|             pw_stop_progress_bar | ||||
|             yad_error "d3dadapter9.so.1.0.0 - ${loc_find_d3dadapter9_error}" | ||||
|             stop_portwine | ||||
|         fi | ||||
|         export mesa_glthread=true | ||||
|         export ENABLE_VKBASALT=0 | ||||
|         export PW_MANGOHUD=0 | ||||
|         export WINE_FULLSCREEN_FSR=0 | ||||
|     elif [[ "${PW_VULKAN_USE}" == "4" ]] ; then | ||||
|         print_info "Use DAMAVAND (DirectX to wined3d vulkan)" | ||||
|         export WINE_D3D_CONFIG='renderer=vulkan' | ||||
|     else | ||||
|         print_info "Use VKD3D-PROTON, DXVK and D8VK (DirectX 8-12 to vulkan)" | ||||
|         if [[ "${PW_USE_WINE_DXGI}" == 1 ]] ; then  | ||||
|             export CP_DXVK_FILES="d3d11 d3d10core d3d9 dxvk_config" # openvr_api_dxvk | ||||
|             var_winedlloverride_update dxgi=b | ||||
|         elif [[ "${USE_ALL_DXVK_DLLS}" == 1 ]] ; then  | ||||
|             export CP_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi dxvk_config" # openvr_api_dxvk | ||||
|         else | ||||
|             export CP_DXVK_FILES="d3d11 d3d10core d3d9 dxgi dxvk_config" # openvr_api_dxvk | ||||
|         fi | ||||
|         check_variables VKD3D_FEATURE_LEVEL "12_0" | ||||
|         if [[ "${PW_VULKAN_USE}" == "1" ]] ; then | ||||
|             PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_STABLE_VER}" | ||||
|             PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_STABLE_VER}" | ||||
|             print_info "DXVK v.${DXVK_STABLE_VER} in use" | ||||
|             print_info "VKD3D-PROTON v.${VKD3D_STABLE_VER} in use" | ||||
|         elif [[ "${PW_VULKAN_USE}" == "2" ]] ; then | ||||
|             PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_GIT_VER}" | ||||
|             PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}" | ||||
|             print_info "DXVK v.${DXVK_GIT_VER} in use" | ||||
|             print_info "VKD3D-PROTON v.${VKD3D_GIT_VER} in use" | ||||
|         fi | ||||
|         PATH_TO_D8VK_FILES="${PW_VULKAN_DIR}/d8vk-${D8VK_VER}" | ||||
|         print_info "D8VK v.${D8VK_VER} in use" | ||||
|  | ||||
|         print_info "Try link native DXVK files..." | ||||
|         for wine_dxvk_dll in ${CP_DXVK_FILES} ; do | ||||
|             if [[ -f "${PATH_TO_DXVK_FILES}/x64/${wine_dxvk_dll}.dll"  ]] ; then | ||||
|                 try_force_link_file "${PATH_TO_DXVK_FILES}/x32/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" | ||||
|                 try_force_link_file "${PATH_TO_DXVK_FILES}/x64/${wine_dxvk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|                 var_winedlloverride_update "${wine_dxvk_dll}=n" | ||||
|             fi | ||||
|         done | ||||
|  | ||||
|         try_force_link_file "${WINEDIR}/lib/wine/nvapi/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" || \ | ||||
|         try_force_link_file "${PATH_TO_DXVK_FILES}/x32/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" || \ | ||||
|         try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x32/nvapi.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" | ||||
|  | ||||
|         try_force_link_file "${WINEDIR}/lib64/wine/nvapi/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/" || \ | ||||
|         try_force_link_file "${PATH_TO_DXVK_FILES}/x64/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/" || \ | ||||
|         try_force_link_file "${PW_PLUGINS_PATH}/nvapi/x64/nvapi64.dll" "${WINEPREFIX}/drive_c/windows/system32/"  | ||||
|  | ||||
|         print_info "Try link native VKD3D files..." | ||||
|         for wine_vkd3d_dll in d3d12 d3d12core libvkd3d-1 libvkd3d-shader-1; do  | ||||
|             if [[ -f "${PATH_TO_VKD3D_FILES}/x64/${wine_vkd3d_dll}.dll" ]] ; then | ||||
|                 try_force_link_file "${PATH_TO_VKD3D_FILES}/x86/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" | ||||
|                 try_force_link_file "${PATH_TO_VKD3D_FILES}/x64/${wine_vkd3d_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|                 var_winedlloverride_update "${wine_vkd3d_dll}=n" | ||||
|             fi | ||||
|         done | ||||
|  | ||||
|         print_info "Try link native D8VK file..." | ||||
|         try_force_link_file "${PATH_TO_D8VK_FILES}/x32/d3d8.dll" "${WINEPREFIX}/drive_c/windows/syswow64/" | ||||
|         try_force_link_file "${PATH_TO_D8VK_FILES}/x64/d3d8.dll" "${WINEPREFIX}/drive_c/windows/system32/" | ||||
|         var_winedlloverride_update d3d8=n | ||||
|     fi | ||||
|  | ||||
|     if [[ ! -d "${WINEPREFIX}/drive_c/vrclient/bin" ]] ; then | ||||
|         create_new_dir "${WINEPREFIX}/drive_c/vrclient/bin" | ||||
|         try_force_link_file "${WINEDIR}"/lib/wine/i386-windows/vrclient.dll "${WINEPREFIX}/drive_c/vrclient/bin/" | ||||
|         try_force_link_file "${WINEDIR}"/lib64/wine/x86_64-windows/vrclient_x64.dll "${WINEPREFIX}/drive_c/vrclient/bin/" | ||||
|     fi | ||||
|   | ||||
|     if [[ "${PW_USE_SHADER_CACHE}" == 1 ]] ; then | ||||
|         create_new_dir "${PATH_TO_DXVK_FILES}/gl_shader_cache" | ||||
|         export __GL_SHADER_DISK_CACHE=1 | ||||
|         export __GL_SHADER_DISK_CACHE_PATH="${PATH_TO_DXVK_FILES}/gl_shader_cache" | ||||
|         export __GL_SHADER_DISK_CACHE_SIZE=50000000000 | ||||
|         export __GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1 | ||||
|         create_new_dir "${PATH_TO_DXVK_FILES}/dxvk_cache" | ||||
|         export DXVK_STATE_CACHE_PATH="${PATH_TO_DXVK_FILES}"/dxvk_cache | ||||
|         export DXVK_STATE_CACHE=1 | ||||
|         create_new_dir "${PATH_TO_VKD3D_FILES}/vkd3d_cache" | ||||
|         export VKD3D_SHADER_CACHE_PATH="${PATH_TO_VKD3D_FILES}/vkd3d_cache" | ||||
|     else | ||||
|         export __GL_SHADER_DISK_CACHE=0 | ||||
|         export DXVK_STATE_CACHE=0 | ||||
|         export VKD3D_SHADER_CACHE_PATH=0 | ||||
|         export RADV_DEBUG=nocache | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_WINE_FULLSCREEN_FSR}" == 1 ]] || [[ "${WINE_FULLSCREEN_FSR}" == 1 ]] ; then | ||||
|         export WINE_FULLSCREEN_FSR=1 | ||||
|         export WINE_FULLSCREEN_FSR_STRENGTH=2 | ||||
|         export WINE_FULLSCREEN_INTEGER_SCALING=0 | ||||
|     else | ||||
|         export WINE_FULLSCREEN_FSR=0 | ||||
|         unset WINE_FULLSCREEN_FAKE_CURRENT_RES WINE_FULLSCREEN_FSR_STRENGTH WINE_FULLSCREEN_INTEGER_SCALING | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_WINE_CPU_TOPOLOGY}" != "disabled" ]] ; then | ||||
|         export WINE_CPU_TOPOLOGY="${PW_WINE_CPU_TOPOLOGY}" | ||||
|     fi | ||||
|  | ||||
|     for try_cp_dll_from_wine in "ntdll.dll" "vulkan-1.dll" "winevulkan.dll" "amd_ags_x64.dll" "ir50_32.dll" ; do | ||||
|         try_remove_file "${WINEPREFIX}/drive_c/windows/syswow64/${try_cp_dll_from_wine}" | ||||
|         if try_copy_file "${WINEDIR}/lib/wine/i386-windows/${try_cp_dll_from_wine}" "${WINEPREFIX}/drive_c/windows/syswow64/${try_cp_dll_from_wine}"  | ||||
|         then print_info "Try copy $try_cp_dll_from_wine to syswow64... OK." | ||||
|         fi | ||||
|         try_remove_file "${WINEPREFIX}/drive_c/windows/system32/${try_cp_dll_from_wine}" | ||||
|         if try_copy_file "${WINEDIR}/lib64/wine/x86_64-windows/${try_cp_dll_from_wine}" "${WINEPREFIX}/drive_c/windows/system32/${try_cp_dll_from_wine}" | ||||
|         then print_info "Try copy $try_cp_dll_from_wine to system32... OK." | ||||
|         fi | ||||
|     done | ||||
|  | ||||
|     #run_winetricks_from_db | ||||
|     if [[ ! -z "${PW_MUST_HAVE_DLL}" ]] | ||||
|     then export PW_DLL_INSTALL="`echo "${PW_MUST_HAVE_DLL} ${PW_DLL_INSTALL}" | awk '{ for(i=1;i<=NF;i++){a[$i]++} }END{ for(i in a){printf("%s ",i)} }' `" | ||||
|     fi | ||||
|  | ||||
|     if [[ ! -z "${PW_DLL_INSTALL}" ]] ; then | ||||
|         export PW_DLL_NEED_INSTALL="" | ||||
|         export USE_WT_FROM_DB=0 | ||||
|         if [ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" ] ; then | ||||
|             touch "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | ||||
|         fi | ||||
|         for need_install_dll_to_pfx in ${PW_DLL_INSTALL} ; do | ||||
|             if [[ "${need_install_dll_to_pfx}" == vcrun201[5-9] ]] \ | ||||
|             || [[ "${need_install_dll_to_pfx}" == vcrun2022 ]] ; then | ||||
|                 need_install_dll_to_pfx="vcrun2022" | ||||
|                 sed -i '/vcrun2015/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | ||||
|                 sed -i '/vcrun2017/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | ||||
|                 sed -i '/vcrun2019/d' "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | ||||
|             fi | ||||
|             grep "${need_install_dll_to_pfx}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" &>/dev/null | ||||
|             if [[ "$?" == "1" ]] ; then | ||||
|                 if [[ -z "${PW_DLL_NEED_INSTALL}" ]] | ||||
|                 then export PW_DLL_NEED_INSTALL="${need_install_dll_to_pfx}" | ||||
|                 else export PW_DLL_NEED_INSTALL="${need_install_dll_to_pfx} ${PW_DLL_NEED_INSTALL}"  | ||||
|                 fi | ||||
|                 export USE_WT_FROM_DB=1 | ||||
|             fi | ||||
|         done | ||||
|         if [[ "${USE_WT_FROM_DB}" == "1" ]] ; then | ||||
|             pw_update_pfx_cover_gui | ||||
|             update_winetricks | ||||
|             echo "START WINETRICKS..." >> "${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|             echo "Try to install DLL in prefix: ${PW_DLL_NEED_INSTALL}" >> "${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|             print_info "Try to install DLL in prefix: ${PW_DLL_NEED_INSTALL}" | ||||
|             ${pw_runtime} env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ | ||||
|             "${PORT_WINE_TMP_PATH}/winetricks" -q -r -f ${PW_DLL_NEED_INSTALL} &>>"${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|             wait_wineserver | ||||
|             kill_portwine | ||||
|         fi | ||||
|     fi | ||||
|  | ||||
|     if [[ -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg" ]] && [[ -z `grep "Windows $PW_WINDOWS_VER" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/system.reg"` ]] ; then | ||||
|         if [[ ! -z "${PW_WINDOWS_VER}" && `echo "$PW_WINDOWS_VER" | sed 's/.*/\L&/'` == "xp" ]] ; then | ||||
|             export PW_WINDOWS_VER="xp64" | ||||
|         fi | ||||
|         ${pw_runtime} env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ | ||||
|         "${WINELOADER}" winecfg -v `echo "win${PW_WINDOWS_VER}" | sed 's/.*/\L&/'` | ||||
|         wait_wineserver | ||||
|         kill_portwine | ||||
|         echo "Set to win${PW_WINDOWS_VER}" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${portwine_exe}" == *-Shipping.exe ]] ; then  | ||||
|         echo "Disable EAC" | ||||
|         [[ -z "${LAUNCH_PARAMETERS}" ]] && export LAUNCH_PARAMETERS+=" -eac-nop-loaded " | ||||
|     fi | ||||
|     pw_stop_progress_bar && | ||||
|     if ! check_start_from_steam ; then | ||||
|         pw_tray_icon | ||||
|         sleep 0.5 | ||||
|         if [[ "${PW_CHECK_AUTOINSTAL}" != "1" ]] ; then | ||||
|             pw_start_progress_bar_cover "${PW_GUI_ICON_PATH}/covers/loading_${update_loc}.gif"  | ||||
|         fi | ||||
|     fi | ||||
|     add_in_start_portwine | ||||
|  | ||||
|     if [[ -f "${PATH_TO_GAME}/dxvk.conf" ]] ; then | ||||
|         export DXVK_CONFIG_FILE="${PATH_TO_GAME}/dxvk.conf" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_DISABLE_COMPOSITING}" == "1" ]] \ | ||||
|     && ! check_gamescope_session  | ||||
|     then | ||||
|         if [[ "${DESKTOP_SESSION}" =~ "plasma" ]] ; then | ||||
|             qdbus org.kde.KWin /Compositor suspend | ||||
|         elif [[ "${DESKTOP_SESSION}" =~ "mate" ]] ; then | ||||
|             gsettings set org.mate.Marco.general compositing-manager false | ||||
|         elif [[ "${DESKTOP_SESSION}" =~ "xfce" ]] ; then | ||||
|             xfconf-query -c xfwm4 -p /general/use_compositing -s false | ||||
|         elif [[ "${DESKTOP_SESSION}" =~ "cinnamon" ]] ; then | ||||
|             gsettings set org.cinnamon.muffin unredirect-fullscreen-windows true | ||||
|         fi | ||||
|     fi | ||||
|  | ||||
|     pw_mangohud_check | ||||
|     pw_vkbasalt_check | ||||
| } | ||||
|  | ||||
| pw_run () { | ||||
|     unset GDK_BACKEND | ||||
|     if [[ ! -z "${PATH_TO_GAME}" ]] && [[ -d "${PATH_TO_GAME}" ]] ; then | ||||
|         cd "${PATH_TO_GAME}" | ||||
|     elif [[ -f "$portwine_exe" ]] ; then | ||||
|         export PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )"  | ||||
|         cd "${PATH_TO_GAME}" | ||||
|     else | ||||
|         cd "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" | ||||
|     fi | ||||
|     PW_LOG_TO_FILE="${PORT_WINE_PATH}/${portname}.log" | ||||
|     print_var "WINEDIR" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_WINE_USE" "PW_VULKAN_USE" "VULKAN_DRIVER_NAME" | ||||
|     print_var "VULKAN_API_DRIVER_VERSION" "VKD3D_CONFIG" "PW_LD_LIBRARY_PATH" "PATH" "WINEESYNC" "WINEFSYNC" "WINEFSYNC_FUTEX2" | ||||
|     print_var "WINEDLLPATH" "WINE_CPU_TOPOLOGY" "PW_RUN_GAMESCOPE" "LD_LIBRARY_PATH" | ||||
|     kill -s SIGUSR1 "$PW_YAD_PID_PFX_COVER_UI" &>/dev/null | ||||
|     if [[ "$PW_USE_RUNTIME" == 1 ]] ; then | ||||
|         if [[ "${PW_LOG}" == 1 ]] ; then | ||||
|             if check_start_from_steam ; then | ||||
|                 for VAR_LOGGER in PW_WINE_USE WINEDIR WINEDLLPATH WINEPREFIX PATH_TO_GAME PW_VULKAN_USE PW_LD_LIBRARY_PATH LD_LIBRARY_PATH PATH \ | ||||
|                                 VKD3D_CONFIG WINEESYNC WINEFSYNC WINEFSYNC_FUTEX2 WINE_CPU_TOPOLOGY DESKTOP_SESSION | ||||
|                 do | ||||
|                     echo "${VAR_LOGGER}=${!VAR_LOGGER}" >> "${PW_LOG_TO_FILE}" | ||||
|                 done | ||||
|             fi | ||||
|             echo "WINEDLLOVERRIDES=${WINEDLLOVERRIDES}" >> "${PW_LOG_TO_FILE}" | ||||
|             echo "------------------------------------" >> "${PW_LOG_TO_FILE}" | ||||
|             echo "Log WINE:" >> "${PW_LOG_TO_FILE}" | ||||
|             echo "" | ||||
|             print_info "Log from RUNTIME and WINE:" | ||||
|             ${PW_RUN_GAMESCOPE} \ | ||||
|             ${pw_runtime} \ | ||||
|             env PATH="${PATH}" \ | ||||
|             LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ | ||||
|             LD_PRELOAD="${PW_LD_PRELOAD}" \ | ||||
|             VK_LAYER_PATH="${PW_VK_LAYER_PATH}" \ | ||||
|             VK_INSTANCE_LAYERS=${PW_VK_INSTANCE_LAYERS} \ | ||||
|             ${PW_GAMEMODERUN_SLR} \ | ||||
|             ${PW_MANGOHUD_SLR} \ | ||||
|             "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" | ||||
|         else | ||||
|             if [[ "$PW_USE_TERMINAL" == 1 ]] \ | ||||
|             && [[ "$PW_USE_RUNTIME" == 1 ]] | ||||
|             then | ||||
|                 export PW_ADD_TO_ARGS_IN_RUNTIME="--xterm" | ||||
|                 pw_init_runtime | ||||
|             fi | ||||
|             echo "" | ||||
|             echo "Log WINE:" > "${PW_LOG_TO_FILE}" | ||||
|             print_info "Log from RUNTIME and WINE:" | ||||
|             ${PW_RUN_GAMESCOPE} \ | ||||
|             ${pw_runtime} \ | ||||
|             env PATH="${PATH}" \ | ||||
|             LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ | ||||
|             LD_PRELOAD="${PW_LD_PRELOAD}" \ | ||||
|             VK_LAYER_PATH="${PW_VK_LAYER_PATH}" \ | ||||
|             VK_INSTANCE_LAYERS="${PW_VK_INSTANCE_LAYERS}" \ | ||||
|             ${PW_GAMEMODERUN_SLR} \ | ||||
|             ${PW_MANGOHUD_SLR} \ | ||||
|             "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" | ||||
|             cat "${PW_LOG_TO_FILE}" | ||||
|         fi | ||||
|     else | ||||
|         if [[ "${PW_LOG}" == 1 ]] ; then | ||||
|             if check_start_from_steam ; then | ||||
|                 for VAR_LOGGER in PW_WINE_USE WINEDIR WINEDLLPATH WINEPREFIX PATH_TO_GAME PW_VULKAN_USE PW_LD_LIBRARY_PATH LD_LIBRARY_PATH PATH \ | ||||
|                                 VKD3D_CONFIG WINEESYNC WINEFSYNC WINEFSYNC_FUTEX2 WINE_CPU_TOPOLOGY DESKTOP_SESSION | ||||
|                 do | ||||
|                     echo "${VAR_LOGGER}=${!VAR_LOGGER}" >> "${PW_LOG_TO_FILE}" | ||||
|                 done | ||||
|             fi | ||||
|             echo "WINEDLLOVERRIDES=${WINEDLLOVERRIDES}" >> "${PW_LOG_TO_FILE}" | ||||
|             echo "------------------------------------" >> "${PW_LOG_TO_FILE}" | ||||
|             echo "Log WINE:" >> "${PW_LOG_TO_FILE}" | ||||
|             echo "" | ||||
|             print_info "Log WINE:" | ||||
|             env \ | ||||
|             ${PW_GAMEMODERUN_SLR} \ | ||||
|             ${PW_MANGOHUD_SLR} \ | ||||
|             "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} &>>"${PW_LOG_TO_FILE}" | ||||
|             wait_wineserver | ||||
|         else | ||||
|             echo "" | ||||
|             echo "Log WINE:" > "${PW_LOG_TO_FILE}" | ||||
|             print_info "Log WINE:" | ||||
|             env \ | ||||
|             ${PW_GAMEMODERUN_SLR} \ | ||||
|             ${PW_MANGOHUD_SLR} \ | ||||
|             "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS[@]} | ||||
|             wait_wineserver | ||||
|  | ||||
|             # ${PW_RUN_GAMESCOPE} \ !!! | ||||
|         fi | ||||
|     fi | ||||
| } | ||||
| export -f pw_run | ||||
|  | ||||
| ###MAIN### | ||||
| if [[ $(id -u) -eq 0 ]] ; then | ||||
|     echo "Do not run the script from the superuser!" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| if [[ -z "${LANG}" ]] ; then | ||||
|     export LANG=C | ||||
|     export FORCE_ENG_LANG=1 | ||||
| elif [[ "${START_FROM_STEAM}" == 1 ]] ; then | ||||
|     export FORCE_ENG_LANG=1 | ||||
| else  | ||||
|     unset FORCE_ENG_LANG | ||||
| fi | ||||
|  | ||||
| create_new_dir "${HOME}/.local/share/applications" | ||||
| if [[ "${PW_SILENT_RESTART}" == 1 ]] || [[ "${START_FROM_STEAM}" == 1 ]] ; then | ||||
|     export PW_GUI_DISABLED_CS=1 | ||||
|     unset PW_SILENT_RESTART | ||||
| else | ||||
|     unset PW_GUI_DISABLED_CS | ||||
| fi | ||||
| unset MANGOHUD MANGOHUD_DLSYM PW_NO_ESYNC PW_NO_FSYNC PW_VULKAN_USE WINEDLLOVERRIDES PW_NO_WRITE_WATCH PW_YAD_SET PW_ICON_FOR_YAD | ||||
| unset PW_CHECK_AUTOINSTAL PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PORTWINE_DB PORTWINE_DB_FILE PW_DISABLED_CREATE_DB RADV_PERFTEST | ||||
| unset CHK_SYMLINK_FILE MESA_GL_VERSION_OVERRIDE PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME PORTWINE_CREATE_SHORTCUT_NAME | ||||
| unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY | ||||
| unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48 | ||||
|  | ||||
| export portname=PortProton | ||||
|  | ||||
| cd "$(dirname "`readlink -f "$0"`")" && export PORT_SCRIPTS_PATH="$(pwd)" | ||||
| cd "${PORT_SCRIPTS_PATH}/../../" && export PORT_WINE_PATH="$(pwd)" | ||||
| export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp" | ||||
|  | ||||
| rm -f $PORT_WINE_TMP_PATH/*{exe,msi,tar}* | ||||
|  | ||||
| echo "" > "${PORT_WINE_TMP_PATH}/tmp_yad_form" | ||||
|  | ||||
| if [[ -d "${PORT_WINE_PATH}/data/dist" ]] ; then | ||||
|     try_remove_file "${PORT_WINE_PATH}/data/dist/VERSION" | ||||
|     orig_IFS="$IFS" | ||||
|     IFS=$'\n' | ||||
|     for dist_dir in $(ls -1 "${PORT_WINE_PATH}/data/dist/") ; do | ||||
|         dist_dir_new=`echo "${dist_dir}" | awk '$1=$1' | sed -e s/[[:blank:]]/_/g` | ||||
|         if [[ ! -d "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}" ]] ; then | ||||
|             mv -- "${PORT_WINE_PATH}/data/dist/$dist_dir" "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}" | ||||
|         fi | ||||
|     done | ||||
|     IFS="$orig_IFS" | ||||
| else | ||||
|     create_new_dir "${PORT_WINE_PATH}/data/dist" | ||||
| fi | ||||
| create_new_dir "${PORT_WINE_PATH}/data/prefixes/DEFAULT" | ||||
| create_new_dir "${PORT_WINE_PATH}/data/prefixes/DOTNET" | ||||
| create_new_dir "${PORT_WINE_PATH}/data/prefixes/PROGRAMS" | ||||
| try_force_link_dir "${PORT_WINE_PATH}/data/prefixes" "${PORT_WINE_PATH}" | ||||
|  | ||||
| orig_IFS="$IFS" | ||||
| IFS=$'\n' | ||||
| for pfx_dir in $(ls -1 "${PORT_WINE_PATH}/data/prefixes/") ; do | ||||
|     pfx_dir_new=`echo "${pfx_dir}" | awk '$1=$1' | sed -e s/[[:blank:]]/_/g` | ||||
|     if [[ ! -d "${PORT_WINE_PATH}/data/prefixes/${pfx_dir_new^^}" ]] ; then | ||||
|         mv -- "${PORT_WINE_PATH}/data/prefixes/$pfx_dir" "${PORT_WINE_PATH}/data/prefixes/${pfx_dir_new^^}" | ||||
|     fi | ||||
| done | ||||
| IFS="$orig_IFS" | ||||
|  | ||||
| create_new_dir "${PORT_WINE_TMP_PATH}"/gecko | ||||
| create_new_dir "${PORT_WINE_TMP_PATH}"/mono | ||||
|  | ||||
| export PW_VULKAN_DIR="${PORT_WINE_TMP_PATH}/VULKAN" | ||||
| create_new_dir "${PW_VULKAN_DIR}" | ||||
|  | ||||
|  | ||||
| export LSPCI_VGA="$(lspci -k | grep -E 'VGA|3D' | tr -d '\n')" | ||||
|  | ||||
| if command -v xrandr &>/dev/null ; then | ||||
|     try_remove_file "${PORT_WINE_TMP_PATH}/tmp_screen_configuration" | ||||
|     export PW_SCREEN_RESOLUTION="$(xrandr | sed -rn 's/^.*primary.* ([0-9]+x[0-9]+).*$/\1/p')" | ||||
|     export PW_SCREEN_PRIMARY="$(xrandr | grep "primary" | awk '{print $1}')" | ||||
|     print_var PW_SCREEN_RESOLUTION PW_SCREEN_PRIMARY | ||||
| else | ||||
|     print_error "xrandr - not found!" | ||||
| fi | ||||
|  | ||||
| cd "${PORT_SCRIPTS_PATH}" | ||||
| . "${PORT_SCRIPTS_PATH}/var" | ||||
|              | ||||
| export STEAM_SCRIPTS="${PORT_WINE_PATH}/steam_scripts" | ||||
| export PW_PLUGINS_PATH="${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}" | ||||
| export PW_GUI_ICON_PATH="${PORT_WINE_PATH}/data/img/gui" | ||||
|  | ||||
| . "${PORT_SCRIPTS_PATH}"/lang | ||||
| . "${PORT_SCRIPTS_PATH}"/yad_gui | ||||
|  | ||||
| export urlg="https://linux-gaming.ru/portproton/" | ||||
| export PW_WINELIB="${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}" | ||||
| try_remove_dir "${PW_WINELIB}/var" | ||||
| export install_ver=`cat "${PORT_WINE_TMP_PATH}/${portname}_ver" | head -n 1` | ||||
| export WINETRICKS_DOWNLOADER="curl" | ||||
| export USER_CONF="${PORT_WINE_PATH}/data/user.conf" | ||||
| check_user_conf  | ||||
| check_variables PW_LOG "0" | ||||
|  | ||||
| if [[ -z "${INSTALLING_PORT}" ]] ; then | ||||
|     if [[ -f "/tmp/portproton.lock" ]] ; then | ||||
|         print_warning "Found lock file: /tmp/portproton.lock" | ||||
|         yad_question "$loc_gui_portproton_lock" || exit 0 | ||||
|     fi | ||||
|     touch "/tmp/portproton.lock" | ||||
|     rm_lock_file () { | ||||
|         echo "Removing the lock file..." | ||||
|         rm -fv "/tmp/portproton.lock" && echo "OK" | ||||
|     } | ||||
|     trap "rm_lock_file" EXIT | ||||
|  | ||||
|     . "${USER_CONF}" | ||||
|     if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] ; then | ||||
|         pw_port_update | ||||
|     fi | ||||
|     unset SKIP_CHECK_UPDATES | ||||
|     pw_check_and_download_plugins | ||||
|     pw_download_libs | ||||
|     export PW_VULKANINFO_PORTABLE="$PW_WINELIB/pressure-vessel/libexec/steam-runtime-tools-0/x86_64-linux-gnu-vulkaninfo" | ||||
|     export VULKAN_API_DRIVER_VERSION="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep "api" | head -n 1 | awk '{print $3}')" | ||||
|     export VULKAN_DRIVER_NAME="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep driverName | awk '{print$3}' | head -1)" | ||||
|     pw_init_db | ||||
|     . "${PORT_SCRIPTS_PATH}"/lang | ||||
|     pw_check_and_download_dxvk_and_vkd3d | ||||
|     . "${USER_CONF}" | ||||
| fi | ||||
| @@ -1,13 +1,13 @@ | ||||
| #!/usr/bin/env bash | ||||
| # Author: linux-gaming.ru | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| . "$(dirname $(readlink -f "$0"))/start.sh" | ||||
|  | ||||
| name_desktop="PortProton" | ||||
| if  grep -i "flatpak" /etc/os-release &>/dev/null ; then | ||||
| if check_flatpak ; then | ||||
| 	echo "[Desktop Entry]"	 					  		 > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Name=${name_desktop}" 				 		 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Version=${install_ver}"						 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Exec=flatpak run com.castrofidel.portproton"	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Exec=flatpak run ru.linux_gaming.PortProton"	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Type=Application" 						 	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Terminal=False" 						 		 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Categories=Game"	    				 		 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| @@ -31,9 +31,7 @@ else | ||||
| 	chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| fi | ||||
|  | ||||
| if [[ ! -f /usr/bin/portproton ]] \ | ||||
| && ! grep -i "flatpak" /etc/os-release &>/dev/null | ||||
| then | ||||
| if [[ ! -f /usr/bin/portproton ]] && ! check_flatpak ; then | ||||
| 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" ${HOME}/.local/share/applications/ | ||||
| fi | ||||
|  | ||||
| @@ -43,7 +41,7 @@ fi | ||||
|  | ||||
| update-desktop-database -q "${HOME}/.local/share/applications" | ||||
|  | ||||
| if ! grep -i "flatpak" /etc/os-release &>/dev/null ; then | ||||
| if ! check_flatpak ; then | ||||
| 	xdg-mime default PortProton.desktop "application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program" | ||||
| fi | ||||
|  | ||||
| @@ -56,9 +54,9 @@ echo "Icon="${PORT_WINE_PATH}/data/img/readme.png""		>> "${PORT_WINE_PATH}/${nam | ||||
| echo "URL=${urlg}" 										>> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|  | ||||
| if [ "${PW_SILENT_INSTALL}" = "1" ] ; then | ||||
| 	if [ "${PW_AUTOPLAY}" = "1" ] ; then | ||||
| 		unset INSTALLING_PORT | ||||
| unset INSTALLING_PORT | ||||
| if [[ "${PW_SILENT_INSTALL}" == 1 ]] ; then | ||||
| 	if [[ "${PW_AUTOPLAY}" == 1 ]] ; then | ||||
| 		if [[ -f "${HOME}/.local/share/applications/PortProton.desktop" ]] && [[ -f /usr/bin/portproton ]] ; then | ||||
| 			try_remove_file "${HOME}/.local/share/applications/PortProton.desktop" | ||||
| 		fi | ||||
| @@ -69,4 +67,3 @@ if [ "${PW_SILENT_INSTALL}" = "1" ] ; then | ||||
| 		echo "Installation completed successfully." | ||||
| 	fi | ||||
| fi | ||||
| unset INSTALLING_PORT | ||||
|   | ||||
| @@ -1,5 +1,23 @@ | ||||
| #!/usr/bin/env bash | ||||
| # Author: linux-gaming.ru | ||||
| # Author: Castro-Fidel (linux-gaming.ru) | ||||
| # Development assistants: Cefeiko; Dezert1r; Taz_mania; Anton_Famillianov; gavr; RidBowt; chal55rus; UserDiscord; Boria138; Vano; Akai | ||||
| ######################################################################## | ||||
| echo ' | ||||
|             █░░ █ █▄░█ █░█ ▀▄▀ ▄▄ █▀▀ ▄▀█ █▀▄▀█ █ █▄░█ █▀▀ ░ █▀█ █░█ | ||||
|             █▄▄ █ █░▀█ █▄█ █░█ ░░ █▄█ █▀█ █░▀░█ █ █░▀█ █▄█ ▄ █▀▄ █▄█ | ||||
|  | ||||
| ██████╗░░█████╗░██████╗░████████╗██████╗░██████╗░░█████╗░████████╗░█████╗░███╗░░██╗ | ||||
| ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗████╗░██║ | ||||
| ██████╔╝██║░░██║██████╔╝░░░██║░░░██████╔╝██████╔╝██║░░██║░░░██║░░░██║░░██║██╔██╗██║ | ||||
| ██╔═══╝░██║░░██║██╔══██╗░░░██║░░░██╔═══╝░██╔══██╗██║░░██║░░░██║░░░██║░░██║██║╚████║ | ||||
| ██║░░░░░╚█████╔╝██║░░██║░░░██║░░░██║░░░░░██║░░██║╚█████╔╝░░░██║░░░╚█████╔╝██║░╚███║ | ||||
| ╚═╝░░░░░░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░░╚════╝░╚═╝░░╚══╝ | ||||
|  | ||||
| ' | ||||
| if [[ $(id -u) = 0 ]] ; then | ||||
|     echo "Do not run this script as root!" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| export PW_START_PID="$$" | ||||
| export NO_AT_BRIDGE=1 | ||||
| @@ -22,9 +40,147 @@ then | ||||
|     MISSING_DESKTOP_FILE=0 | ||||
| fi | ||||
|  | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| . "$(dirname $(readlink -f "$0"))/functions_helper" | ||||
|  | ||||
| if [[ -z "${LANG}" ]] ; then | ||||
|     export LANG=C | ||||
|     export FORCE_ENG_LANG=1 | ||||
| elif [[ "${START_FROM_STEAM}" == 1 ]] ; then | ||||
|     export FORCE_ENG_LANG=1 | ||||
| else | ||||
|     unset FORCE_ENG_LANG | ||||
| fi | ||||
|  | ||||
| create_new_dir "${HOME}/.local/share/applications" | ||||
| if [[ "${PW_SILENT_RESTART}" == 1 ]] || [[ "${START_FROM_STEAM}" == 1 ]] ; then | ||||
|     export PW_GUI_DISABLED_CS=1 | ||||
|     unset PW_SILENT_RESTART | ||||
| else | ||||
|     unset PW_GUI_DISABLED_CS | ||||
| fi | ||||
| unset MANGOHUD MANGOHUD_DLSYM PW_NO_ESYNC PW_NO_FSYNC PW_VULKAN_USE WINEDLLOVERRIDES PW_NO_WRITE_WATCH PW_YAD_SET PW_ICON_FOR_YAD | ||||
| unset PW_CHECK_AUTOINSTAL PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PORTWINE_DB PORTWINE_DB_FILE PW_DISABLED_CREATE_DB RADV_PERFTEST | ||||
| unset CHK_SYMLINK_FILE MESA_GL_VERSION_OVERRIDE PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME PORTWINE_CREATE_SHORTCUT_NAME FLATPAK_IN_USE | ||||
| unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY | ||||
| unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48 | ||||
| unset MANGOHUD_CONFIG PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME | ||||
|  | ||||
| export portname=PortProton | ||||
|  | ||||
| cd "$(dirname "`readlink -f "$0"`")" && export PORT_SCRIPTS_PATH="$(pwd)" | ||||
| cd "${PORT_SCRIPTS_PATH}/../../" && export PORT_WINE_PATH="$(pwd)" | ||||
| export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp" | ||||
|  | ||||
| rm -f $PORT_WINE_TMP_PATH/*{exe,msi,tar}* | ||||
|  | ||||
| echo "" > "${PORT_WINE_TMP_PATH}/tmp_yad_form" | ||||
|  | ||||
| if [[ -d "${PORT_WINE_PATH}/data/dist" ]] ; then | ||||
|     try_remove_file "${PORT_WINE_PATH}/data/dist/VERSION" | ||||
|     orig_IFS="$IFS" | ||||
|     IFS=$'\n' | ||||
|     for dist_dir in $(ls -1 "${PORT_WINE_PATH}/data/dist/") ; do | ||||
|         dist_dir_new=`echo "${dist_dir}" | awk '$1=$1' | sed -e s/[[:blank:]]/_/g` | ||||
|         if [[ ! -d "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}" ]] ; then | ||||
|             mv -- "${PORT_WINE_PATH}/data/dist/$dist_dir" "${PORT_WINE_PATH}/data/dist/${dist_dir_new^^}" | ||||
|         fi | ||||
|     done | ||||
|     IFS="$orig_IFS" | ||||
| else | ||||
|     create_new_dir "${PORT_WINE_PATH}/data/dist" | ||||
| fi | ||||
| create_new_dir "${PORT_WINE_PATH}/data/prefixes/DEFAULT" | ||||
| create_new_dir "${PORT_WINE_PATH}/data/prefixes/DOTNET" | ||||
| create_new_dir "${PORT_WINE_PATH}/data/prefixes/PROGRAMS" | ||||
| try_force_link_dir "${PORT_WINE_PATH}/data/prefixes" "${PORT_WINE_PATH}" | ||||
|  | ||||
| orig_IFS="$IFS" | ||||
| IFS=$'\n' | ||||
| for pfx_dir in $(ls -1 "${PORT_WINE_PATH}/data/prefixes/") ; do | ||||
|     pfx_dir_new=`echo "${pfx_dir}" | awk '$1=$1' | sed -e s/[[:blank:]]/_/g` | ||||
|     if [[ ! -d "${PORT_WINE_PATH}/data/prefixes/${pfx_dir_new^^}" ]] ; then | ||||
|         mv -- "${PORT_WINE_PATH}/data/prefixes/$pfx_dir" "${PORT_WINE_PATH}/data/prefixes/${pfx_dir_new^^}" | ||||
|     fi | ||||
| done | ||||
| IFS="$orig_IFS" | ||||
|  | ||||
| create_new_dir "${PORT_WINE_TMP_PATH}"/gecko | ||||
| create_new_dir "${PORT_WINE_TMP_PATH}"/mono | ||||
|  | ||||
| export PW_VULKAN_DIR="${PORT_WINE_TMP_PATH}/VULKAN" | ||||
| create_new_dir "${PW_VULKAN_DIR}" | ||||
|  | ||||
| export LSPCI_VGA="$(lspci -k | grep -E 'VGA|3D' | tr -d '\n')" | ||||
|  | ||||
| if command -v xrandr &>/dev/null ; then | ||||
|     try_remove_file "${PORT_WINE_TMP_PATH}/tmp_screen_configuration" | ||||
|     export PW_SCREEN_RESOLUTION="$(xrandr | sed -rn 's/^.*primary.* ([0-9]+x[0-9]+).*$/\1/p')" | ||||
|     export PW_SCREEN_PRIMARY="$(xrandr | grep "primary" | awk '{print $1}')" | ||||
|     print_var PW_SCREEN_RESOLUTION PW_SCREEN_PRIMARY | ||||
| else | ||||
|     print_error "xrandr - not found!" | ||||
| fi | ||||
|  | ||||
| cd "${PORT_SCRIPTS_PATH}" | ||||
| . "${PORT_SCRIPTS_PATH}/var" | ||||
|  | ||||
| export STEAM_SCRIPTS="${PORT_WINE_PATH}/steam_scripts" | ||||
| export PW_PLUGINS_PATH="${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}" | ||||
| export PW_GUI_ICON_PATH="${PORT_WINE_PATH}/data/img/gui" | ||||
|  | ||||
| . "${PORT_SCRIPTS_PATH}"/lang | ||||
|  | ||||
| export urlg="https://linux-gaming.ru/portproton/" | ||||
| export PW_WINELIB="${PORT_WINE_TMP_PATH}/libs${PW_LIBS_VER}" | ||||
| try_remove_dir "${PW_WINELIB}/var" | ||||
| export install_ver=`cat "${PORT_WINE_TMP_PATH}/${portname}_ver" | head -n 1` | ||||
| export WINETRICKS_DOWNLOADER="curl" | ||||
| export USER_CONF="${PORT_WINE_PATH}/data/user.conf" | ||||
| check_user_conf | ||||
| check_variables PW_LOG "0" | ||||
|  | ||||
| try_remove_file "${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|  | ||||
| # TODO: remove this later... | ||||
| try_remove_file "${PORT_SCRIPTS_PATH}/runlib" | ||||
| try_remove_file "${PORT_SCRIPTS_PATH}/yad_gui" | ||||
|  | ||||
| if [[ "${INSTALLING_PORT}" == 1 ]] ; then | ||||
|     return 0 | ||||
| fi | ||||
|  | ||||
| . "${USER_CONF}" | ||||
| if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] \ | ||||
| && [[ ! -f "/tmp/portproton.lock" ]] | ||||
| then | ||||
|     pw_port_update | ||||
| fi | ||||
| unset SKIP_CHECK_UPDATES | ||||
|  | ||||
| pw_check_and_download_plugins | ||||
|  | ||||
| if [[ -f "/tmp/portproton.lock" ]] ; then | ||||
|     print_warning "Found lock file: /tmp/portproton.lock" | ||||
|     yad_question "$loc_gui_portproton_lock" || exit 0 | ||||
| fi | ||||
| touch "/tmp/portproton.lock" | ||||
| rm_lock_file () { | ||||
|     echo "Removing the lock file..." | ||||
|     rm -fv "/tmp/portproton.lock" && echo "OK" | ||||
| } | ||||
| trap "rm_lock_file" EXIT | ||||
|  | ||||
| pw_download_libs | ||||
| export PW_VULKANINFO_PORTABLE="$PW_PLUGINS_PATH/portable/bin/x86_64-linux-gnu-vulkaninfo" | ||||
| export VULKAN_API_DRIVER_VERSION="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep "api" | head -n 1 | awk '{print $3}')" | ||||
| export VULKAN_DRIVER_NAME="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep driverName | awk '{print$3}' | head -1)" | ||||
| pw_init_db | ||||
| . "${PORT_SCRIPTS_PATH}"/lang | ||||
| pw_check_and_download_dxvk_and_vkd3d | ||||
| . "${USER_CONF}" | ||||
|  | ||||
| kill_portwine | ||||
| killall -15 yad_v12_3 2>/dev/null | ||||
| killall -15 yad_v13_0 2>/dev/null | ||||
| kill -TERM `pgrep -a yad | grep ${portname} | head -n 1 | awk '{print $1}'` 2>/dev/null | ||||
|  | ||||
| if [[ -f "/usr/bin/portproton" ]] \ | ||||
| @@ -42,14 +198,6 @@ fi | ||||
|  | ||||
| [[ "$MISSING_DESKTOP_FILE" == 1 ]] && portwine_missing_shortcut | ||||
|  | ||||
| # if [[ -f "$portwine_exe" ]] \ | ||||
| # && [[ "${WARN_CYRILLIC_IN_PATH}" != 1 ]] \ | ||||
| # && echo "${portwine_exe}" | grep -e $'[\u0430-\u044F\u0410-\u042F]' &>/dev/null | ||||
| # then | ||||
| #     yad_info "$loc_warn_cyrillic_in_path" | ||||
| #     export WARN_CYRILLIC_IN_PATH="1" | ||||
| # fi | ||||
|  | ||||
| if [[ -f "${PORT_WINE_TMP_PATH}/tmp_main_gui_size" ]] && [[ ! -z "$(cat ${PORT_WINE_TMP_PATH}/tmp_main_gui_size)" ]] ; then | ||||
|     export PW_MAIN_SIZE_W="$(cat ${PORT_WINE_TMP_PATH}/tmp_main_gui_size | awk '{print $1}')" | ||||
|     export PW_MAIN_SIZE_H="$(cat ${PORT_WINE_TMP_PATH}/tmp_main_gui_size | awk '{print $2}')" | ||||
| @@ -89,447 +237,8 @@ if [[ ! -z $(basename "${portwine_exe}" | grep .ppack) ]] ; then | ||||
|     exit 0 | ||||
| fi | ||||
|  | ||||
| portwine_launch () { | ||||
|     start_portwine | ||||
|     PORTWINE_MSI=$(basename "${portwine_exe}" | grep .msi) | ||||
|     PORTWINE_BAT=$(basename "${portwine_exe}" | grep .bat) | ||||
|     if [[ ! -z "${PW_VIRTUAL_DESKTOP}" && "${PW_VIRTUAL_DESKTOP}" == "1" ]] ; then | ||||
|         pw_run explorer "/desktop=PortProton,${PW_SCREEN_RESOLUTION}" ${WINE_WIN_START} "$portwine_exe" | ||||
|     elif [ ! -z "${PORTWINE_MSI}" ]; then | ||||
|         pw_run msiexec /i "$portwine_exe" | ||||
|     elif [[ ! -z "${PORTWINE_BAT}" || -n "${portwine_exe}" ]] ; then | ||||
|         pw_run ${WINE_WIN_START} "$portwine_exe" | ||||
|     else | ||||
|         pw_run winefile | ||||
|     fi | ||||
| } | ||||
| ### CLI ### | ||||
|  | ||||
| portwine_start_debug () { | ||||
|     kill_portwine | ||||
|     export PW_LOG=1 | ||||
|     if [[ -z "$VULKAN_DRIVER_NAME" ]] || [[ "$VULKAN_DRIVER_NAME" == "llvmpipe" ]] ; then | ||||
| 	yad_info "Attention working version of vulkan not detected!\nIt is recommended to run games in OpenGL (low performance possible)!" | ||||
|     fi | ||||
|     echo "${port_deb1}" > "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "${port_deb2}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-------------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "PortWINE version:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     read install_ver < "${PORT_WINE_TMP_PATH}/${portname}_ver" | ||||
|     echo "${portname}-${install_ver}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "------------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Scripts version:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     cat "${PORT_WINE_TMP_PATH}/scripts_ver" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-----------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if [ "${PW_USE_RUNTIME}" = 0 ] ; then | ||||
|         echo "RUNTIME is disabled" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     else | ||||
|         echo "RUNTIME is enabled" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "----------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if [ ! -z "${portwine_exe}" ] ; then | ||||
|         echo "Debug for programm:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|         echo "${portwine_exe}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|         echo "---------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "GLIBC version:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo $(ldd --version | grep -m1 ldd | awk '{print $NF}') >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "--------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if [[ "${PW_VULKAN_USE}" = "0" ]] ; then  | ||||
|         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DX9-11 to ${loc_gui_open_gl}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     elif [[ "${PW_VULKAN_USE}" = "1" ]] ; then | ||||
|         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_STABLE_VER} and VKD3D-PROTON v.${VKD3D_STABLE_VER}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     elif [[ "${PW_VULKAN_USE}" = "2" ]] ; then | ||||
|         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_GIT_VER} and VKD3D-PROTON v.${VKD3D_GIT_VER}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     elif [[ "${PW_VULKAN_USE}" = "3" ]] ; then  | ||||
|         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - native DX9 on MESA drivers" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     elif [[ "${PW_VULKAN_USE}" = "4" ]] ; then | ||||
|         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DirectX to wined3d vulkan" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     else  | ||||
|         echo "PW_VULKAN_USE=${PW_VULKAN_USE}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "--------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Version WINE in use:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "$PW_WINE_USE" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Program bit depth:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if [[ $(file "$portwine_exe") =~ x86-64 ]]; then | ||||
|         echo "64 bit" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-----------------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     else | ||||
|         echo "32 bit" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "--------------------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Date and time of start debug for ${portname}:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     date >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-----------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "The installation path of the ${portname}:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "$PORT_WINE_PATH" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Operating system:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     cat /etc/os-release | grep -oP 'PRETTY_NAME="\K[^"]+' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "--------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Desktop environment:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Desktop session: ${DESKTOP_SESSION}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Current desktop: ${XDG_CURRENT_DESKTOP}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Session type: ${XDG_SESSION_TYPE}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "---------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Kernel:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     uname -r >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "CPU:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "CPU physical cores:$(cat /proc/cpuinfo | grep 'cpu cores' | sort -u | cut -d':' -f2)" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "CPU logical cores: $(cat /proc/cpuinfo | grep 'processor' | wc -l)" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "CPU model name:$(cat /proc/cpuinfo | grep 'model name' | sort -u | cut -d':' -f2)" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "RAM:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     free -m >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-----------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Graphic cards and drivers:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo 'lspci -k | grep -EA3 VGA|3D|Display :' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "$(lspci -k | grep -EA3 'VGA|3D|Display')" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "----" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     [[ `command -v glxinfo` ]] && glxinfo -B >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-----" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "inxi -G:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     "${PW_PLUGINS_PATH}/portable/bin/inxi" -Gc0 >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if echo "$LSPCI_VGA" | grep -i nvidia &>/dev/null ; then  | ||||
|         if command -v ldconfig &>/dev/null ; then | ||||
|             echo "------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|             echo "ldconfig -p | grep libGLX_nvidia" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|             ldconfig -p | grep libGLX_nvidia >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|         fi | ||||
|     fi | ||||
|     echo "----------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "Vulkan info device name:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     "$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep -E '^GPU|deviceName|driverName' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     "${PW_PLUGINS_PATH}/portable/bin/vkcube" --c 50 | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "Vulkan cube test passed successfully" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     else | ||||
|         echo "Vulkan cube test completed with error" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "----------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo 'locale:' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     locale >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "---" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo 'locale -a | grep -i "$(locale | grep -e '^LANG=' | sed 's/LANG=//' | sed  's/\-8//')" :' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     locale -a | grep -i "$(locale | grep -e '^LANG=' | sed 's/LANG=//' | sed  's/\-8//')" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if [[ "${PW_USE_D3D_EXTRAS}" != 1 ]] | ||||
|     then echo "D3D_EXTRAS - disabled" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     else echo "D3D_EXTRAS - enabled" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "winetricks.log:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     cat "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | sed -e /"^d3dcomp*"/d -e /"^d3dx*"/d >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     echo "-----------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if [ ! -z "${PORTWINE_DB_FILE}" ]; then | ||||
|         echo "Use ${PORTWINE_DB_FILE} db file:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|         cat "${PORTWINE_DB_FILE}" | sed '/##/d' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     else | ||||
|         echo "Use ${PORT_SCRIPTS_PATH}/portwine_db/default db file:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|         cat "${PORT_SCRIPTS_PATH}/portwine_db/default" | sed '/##/d' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "----------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     if [ -f "${USER_CONF}" ]; then | ||||
|         cat "${USER_CONF}" | sed '/bash/d' >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|     fi | ||||
|     echo "---------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|  | ||||
|     export DXVK_HUD="full" | ||||
|  | ||||
|     portwine_launch & | ||||
|     sleep 3 | ||||
|     pw_stop_progress_bar_cover | ||||
|     unset PW_TIMER | ||||
|     while read -r line || [[ ! -z $(pgrep -a yad | grep "yad_v12_3 --text-info --tail --button="STOP":0 --title="DEBUG"" | awk '{print $1}') ]] ; do | ||||
|             sleep 0.005 | ||||
|             if [[ ! -z "${line}" ]] && [[ -z "$(echo "${line}" | grep -i "kerberos")" ]] \ | ||||
|                                     && [[ -z "$(echo "${line}" | grep -i "ntlm")" ]] | ||||
|             then | ||||
|                 echo "# ${line}" | ||||
|             fi | ||||
|             if [[ "${PW_TIMER}" != 1 ]] ; then | ||||
|                 sleep 3 | ||||
|                 PW_TIMER=1 | ||||
|             fi | ||||
|     done < "${PORT_WINE_PATH}/${portname}.log" | "${pw_yad_v12_3}" --text-info --tail --button="STOP":0 --title="DEBUG" \ | ||||
|     --skip-taskbar --width=800 --height=400 --text "${port_debug}" 2>/dev/null && | ||||
|     kill_portwine | ||||
|     sed -i '/.fx$/d' "${PORT_WINE_PATH}/${portname}.log" | ||||
|     sed -i '/HACK_does_openvr_work/d' "${PORT_WINE_PATH}/${portname}.log" | ||||
|     sed -i '/Uploading is disabled/d' "${PORT_WINE_PATH}/${portname}.log" | ||||
|     sed -i '/wine: RLIMIT_NICE is <= 20/d' "${PORT_WINE_PATH}/${portname}.log" | ||||
|     sed -i '/ALT_2.24/d' "${PORT_WINE_PATH}/${portname}.log" | ||||
|     sed -i '/UDEV monitor/d' "${PORT_WINE_PATH}/${portname}.log" | ||||
|     deb_text=$(cat "${PORT_WINE_PATH}/${portname}.log"  | awk '! a[$0]++')  | ||||
|     echo "$deb_text" > "${PORT_WINE_PATH}/${portname}.log" | ||||
|     "$pw_yad" --title="${portname}.log" --borders=${YAD_BORDERS} --no-buttons --text-align=center \ | ||||
|     --text-info --show-uri --wrap --width=1200 --height=550  --uri-color=red \ | ||||
|     --filename="${PORT_WINE_PATH}/${portname}.log" | ||||
|     stop_portwine | ||||
| } | ||||
|  | ||||
| pw_winecfg () { | ||||
|     start_portwine | ||||
|     export GST_PLUGIN_SYSTEM_PATH_1_0="" | ||||
|     pw_run winecfg | ||||
| } | ||||
|  | ||||
| pw_winefile () { | ||||
|     start_portwine | ||||
|     pw_run winefile | ||||
| } | ||||
|  | ||||
| pw_winecmd () { | ||||
|     export PW_USE_TERMINAL=1 | ||||
|     start_portwine | ||||
|     cd "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" | ||||
|     ${pw_runtime} env LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" "${PW_PLUGINS_PATH}/portable/bin/xterm" -e "${WINELOADER}" cmd | ||||
|     stop_portwine | ||||
| } | ||||
|  | ||||
| pw_winereg () { | ||||
|     start_portwine | ||||
|     export GST_PLUGIN_SYSTEM_PATH_1_0="" | ||||
|     pw_run regedit | ||||
| } | ||||
|  | ||||
| pw_prefix_manager () { | ||||
|     update_winetricks | ||||
|     start_portwine | ||||
|     if [ ! -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" ] ; then | ||||
|         touch "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" | ||||
|     fi | ||||
|  | ||||
|     pw_start_progress_bar_block "Starting prefix manager..." | ||||
|     "${PORT_WINE_TMP_PATH}/winetricks" dlls list | awk -F'(' '{print $1}' 1> "${PORT_WINE_TMP_PATH}/dll_list" | ||||
|     "${PORT_WINE_TMP_PATH}/winetricks" fonts list | awk -F'(' '{print $1}' 1> "${PORT_WINE_TMP_PATH}/fonts_list" | ||||
|     "${PORT_WINE_TMP_PATH}/winetricks" settings list | awk -F'(' '{print $1}' 1> "${PORT_WINE_TMP_PATH}/settings_list" | ||||
|     pw_stop_progress_bar | ||||
|  | ||||
|     gui_prefix_manager () { | ||||
|         pw_start_progress_bar_block "Starting prefix manager..." | ||||
|         unset SET_FROM_PFX_MANAGER_TMP SET_FROM_PFX_MANAGER | ||||
|         old_IFS=$IFS | ||||
|         IFS=$'\n' | ||||
|         try_remove_file  "${PORT_WINE_TMP_PATH}/dll_list_tmp" | ||||
|         while read PW_BOOL_IN_DLL_LIST ; do | ||||
|             if [[ -z $(echo "${PW_BOOL_IN_DLL_LIST}" | grep -E 'd3d|directx9|dont_use|dxvk|vkd3d|galliumnine|faudio1') ]] ; then | ||||
|                 if grep "^$(echo ${PW_BOOL_IN_DLL_LIST} | awk '{print $1}')$" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" ; then | ||||
|                     echo -e "true\n$(echo ${PW_BOOL_IN_DLL_LIST} | awk '{print $1}')\n`echo ${PW_BOOL_IN_DLL_LIST} | awk '{ $1 = ""; print substr($0, 2) }'`" >> "${PORT_WINE_TMP_PATH}/dll_list_tmp" | ||||
|                 else | ||||
|                     echo -e "false\n`echo "${PW_BOOL_IN_DLL_LIST}" | awk '{print $1}'`\n`echo ${PW_BOOL_IN_DLL_LIST} | awk '{ $1 = ""; print substr($0, 2) }'`" >> "${PORT_WINE_TMP_PATH}/dll_list_tmp" | ||||
|                 fi | ||||
|             fi | ||||
|         done < "${PORT_WINE_TMP_PATH}/dll_list" | ||||
|         try_remove_file  "${PORT_WINE_TMP_PATH}/fonts_list_tmp" | ||||
|         while read PW_BOOL_IN_FONTS_LIST ; do | ||||
|             if [[ -z $(echo "${PW_BOOL_IN_FONTS_LIST}" | grep -E 'dont_use') ]] ; then | ||||
|                 if grep "^$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{print $1}')$" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" ; then | ||||
|                     echo -e "true\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{print $1}')\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{ $1 = ""; print substr($0, 2) }')" >> "${PORT_WINE_TMP_PATH}/fonts_list_tmp" | ||||
|                 else | ||||
|                     echo -e "false\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{print $1}')\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{ $1 = ""; print substr($0, 2) }')" >> "${PORT_WINE_TMP_PATH}/fonts_list_tmp" | ||||
|                 fi | ||||
|             fi | ||||
|         done < "${PORT_WINE_TMP_PATH}/fonts_list" | ||||
|         try_remove_file  "${PORT_WINE_TMP_PATH}/settings_list_tmp" | ||||
|         while read PW_BOOL_IN_FONTS_LIST ; do | ||||
|             if [[ -z $(echo "${PW_BOOL_IN_FONTS_LIST}" | grep -E 'vista|alldlls|autostart_|bad|good|win|videomemory|vd=|isolate_home') ]] ; then | ||||
|                 if grep "^$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{print $1}')$" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" ; then | ||||
|                     echo -e "true\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{print $1}')\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{ $1 = ""; print substr($0, 2) }')" >> "${PORT_WINE_TMP_PATH}/settings_list_tmp" | ||||
|                 else | ||||
|                     echo -e "false\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{print $1}')\n$(echo "${PW_BOOL_IN_FONTS_LIST}" | awk '{ $1 = ""; print substr($0, 2) }')" >> "${PORT_WINE_TMP_PATH}/settings_list_tmp" | ||||
|                 fi | ||||
|             fi | ||||
|         done < "${PORT_WINE_TMP_PATH}/settings_list" | ||||
|         pw_stop_progress_bar | ||||
|  | ||||
|         KEY_EDIT_MANAGER_GUI=$RANDOM | ||||
|         "${pw_yad_v12_3}" --plug=$KEY_EDIT_MANAGER_GUI --tabnum=1 --list --checklist \ | ||||
|         --text="${loc_prefix_manager_comp} <b>\"${PW_PREFIX_NAME}\"</b>, ${loc_prefix_manager_wine} <b>\"${PW_WINE_USE}\"</b>" \ | ||||
|         --column=set --column=dll --column=info < "${PORT_WINE_TMP_PATH}/dll_list_tmp" 1>> "${PORT_WINE_TMP_PATH}/to_winetricks" 2>/dev/null & | ||||
|  | ||||
|         "${pw_yad_v12_3}" --plug=$KEY_EDIT_MANAGER_GUI --tabnum=2 --list --checklist \ | ||||
|         --text="${loc_prefix_manager_font} <b>\"${PW_PREFIX_NAME}\"</b>, ${loc_prefix_manager_wine} <b>\"${PW_WINE_USE}\"</b>" \ | ||||
|         --column=set --column=dll --column=info < "${PORT_WINE_TMP_PATH}/fonts_list_tmp" 1>> "${PORT_WINE_TMP_PATH}/to_winetricks" 2>/dev/null & | ||||
|  | ||||
|         "${pw_yad_v12_3}" --plug=$KEY_EDIT_MANAGER_GUI --tabnum=3 --list --checklist \ | ||||
|         --text="${loc_prefix_manager_conf} <b>\"${PW_PREFIX_NAME}\"</b>" \ | ||||
|         --column=set --column=dll --column=info < "${PORT_WINE_TMP_PATH}/settings_list_tmp" 1>> "${PORT_WINE_TMP_PATH}/to_winetricks" 2>/dev/null & | ||||
|  | ||||
|         "${pw_yad_v12_3}" --key=$KEY_EDIT_MANAGER_GUI --notebook --borders=${YAD_BORDERS} --width=900 --height=800 \ | ||||
|         --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "$loc_pm" --tab-pos=bottom --tab="$loc_pm_dlls" --tab="$loc_pm_fonts" --tab="$loc_pm_settings" 2>/dev/null | ||||
|         YAD_STATUS="$?" | ||||
|         if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then | ||||
|             stop_portwine | ||||
|             exit 0 | ||||
|         fi  | ||||
|         try_remove_file  "${PORT_WINE_TMP_PATH}/dll_list_tmp" | ||||
|         try_remove_file  "${PORT_WINE_TMP_PATH}/fonts_list_tmp" | ||||
|         try_remove_file  "${PORT_WINE_TMP_PATH}/settings_list_tmp" | ||||
|  | ||||
|         for STPFXMNG in $(cat "${PORT_WINE_TMP_PATH}/to_winetricks") ; do | ||||
|             grep $(echo ${STPFXMNG} | awk -F'|' '{print $2}') "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/winetricks.log" &>/dev/null | ||||
|             if [ "$?" == "1" ] ; then | ||||
|                 [[ ! -z "${STPFXMNG}" ]] && SET_FROM_PFX_MANAGER+="$(echo "${STPFXMNG}" | awk -F'|' '{print $2}') " | ||||
|             fi | ||||
|         done | ||||
|         IFS=${old_IFS} | ||||
|         try_remove_file  "${PORT_WINE_TMP_PATH}/to_winetricks" | ||||
|  | ||||
|         if [[ ! -z ${SET_FROM_PFX_MANAGER} ]] ; then | ||||
|             ${pw_runtime} "${PW_PLUGINS_PATH}/portable/bin/xterm" -e env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ | ||||
|             "${PORT_WINE_TMP_PATH}/winetricks" -q -r -f ${SET_FROM_PFX_MANAGER} | ||||
|             gui_prefix_manager | ||||
|         else | ||||
|             print_info "Nothing to do. Restarting PortProton..." | ||||
|             stop_portwine & | ||||
|             /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|             exit 0 | ||||
|         fi | ||||
|     } | ||||
|     gui_prefix_manager | ||||
| } | ||||
|  | ||||
| pw_winetricks () { | ||||
|     update_winetricks | ||||
|     export PW_USE_TERMINAL=1 | ||||
|     start_portwine | ||||
|     pw_stop_progress_bar | ||||
|     echo "WINETRICKS..." > "${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|     unset PW_TIMER | ||||
|     while read -r line || [[ ! -z $(pgrep -a yad | grep "yad_v12_3 --text-info --tail --no-buttons --title="WINETRICKS"" | awk '{print $1}') ]] ; do | ||||
|             sleep 0.005 | ||||
|             if [[ ! -z "${line}" ]] && [[ -z "$(echo "${line}" | grep -i "gstreamer")" ]] \ | ||||
|                                     && [[ -z "$(echo "${line}" | grep -i "kerberos")" ]] \ | ||||
|                                     && [[ -z "$(echo "${line}" | grep -i "ntlm")" ]] | ||||
|             then | ||||
|                 echo "# ${line}" | ||||
|             fi | ||||
|             if [[ "${PW_TIMER}" != 1 ]] ; then | ||||
|                 sleep 3 | ||||
|                 PW_TIMER=1 | ||||
|             fi | ||||
|     done < "${PORT_WINE_TMP_PATH}/update_pfx_log" | "${pw_yad_v12_3}" --text-info --tail --no-buttons --title="WINETRICKS" \ | ||||
|     --auto-close --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y 2>/dev/null & | ||||
|     ${pw_runtime} env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \ | ||||
|     "${PORT_WINE_TMP_PATH}/winetricks" -q -r -f ${PW_DLL_NEED_INSTALL} &>>"${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|     try_remove_file "${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|     kill -s SIGTERM "$(pgrep -a yad_v12_3 | grep "title=WINETRICKS" | awk '{print $1}')" > /dev/null 2>&1     | ||||
|     stop_portwine | ||||
| } | ||||
|  | ||||
| pw_start_cont_xterm () { | ||||
|     cd "$HOME" | ||||
|     unset PW_SANDBOX_HOME_PATH | ||||
|     pw_init_runtime | ||||
|     ${pw_runtime} \ | ||||
|     env PATH="${PATH}" \ | ||||
|     LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" \ | ||||
|     LD_PRELOAD="${PW_LD_PRELOAD}" \ | ||||
|     VK_LAYER_PATH="${PW_VK_LAYER_PATH}" \ | ||||
|     VK_INSTANCE_LAYERS="${PW_VK_INSTANCE_LAYERS}" \ | ||||
|     ${PW_GAMEMODERUN_SLR} \ | ||||
|     ${PW_MANGOHUD_SLR} \ | ||||
|     "${PW_PLUGINS_PATH}/portable/bin/xterm" | ||||
| } | ||||
|  | ||||
| pw_create_prefix_backup () { | ||||
|     cd "$HOME" | ||||
|     PW_PREFIX_TO_BACKUP=$("${pw_yad_v12_3}" --file --directory --borders=${YAD_BORDERS} --width=650 --height=500 --auto-close \ | ||||
|     --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "$loc_create_pfx_backup_path" 2>/dev/null ) | ||||
|     YAD_STATUS="$?" | ||||
|     if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then exit 0 ; fi | ||||
|     if [[ ! -z "$(grep "/${PW_PREFIX_NAME}/" "${PORT_WINE_PATH}"/*.desktop )" ]] ; then | ||||
|         try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut" | ||||
|         grep "/${PW_PREFIX_NAME}/" "${PORT_WINE_PATH}"/*.desktop | awk -F"/${PW_PREFIX_NAME}/" '{print $2}' \ | ||||
|         | awk -F\" '{print $1}' > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut" | ||||
|     fi | ||||
|     unset PW_SANDBOX_HOME_PATH | ||||
|     export PW_ADD_TO_ARGS_IN_RUNTIME="--xterm" | ||||
|     pw_init_runtime | ||||
|     chmod -R u+w "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" | ||||
|     ${pw_runtime} env PATH="${PATH}" LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}" mksquashfs "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" -comp zstd & | ||||
|     sleep 10 | ||||
|     while true ; do | ||||
|         if [[ ! -z $(pgrep -a xterm | grep ".ppack.part" | head -n 1 | awk '{print $1}') ]] ; then | ||||
|             sleep 0.5 | ||||
|         else | ||||
|             kill -TERM $(pgrep -a mksquashfs | grep ".ppack.part" | head -n 1 | awk '{print $1}') | ||||
|             sleep 0.3 | ||||
|             if [[ -z "$(pgrep -a mksquashfs | grep ".ppack.part" | head -n 1 | awk '{print $1}')" ]] | ||||
|             then break | ||||
|             else sleep 0.3 | ||||
|             fi | ||||
|         fi | ||||
|     done | ||||
|     if [[ -f "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" ]] ; then | ||||
|         mv -f "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack" | ||||
|         yad_info "$PW_PFX_BACKUP_SUCCESS $PW_PREFIX_NAME" | ||||
|         if [[ ! -f "${PORT_WINE_TMP_PATH}/pfx_backup_info" ]] ; then | ||||
|             yad_info "$PW_PFX_BACKUP_INFO" | ||||
|             echo "1" > "${PORT_WINE_TMP_PATH}/pfx_backup_info" | ||||
|         fi | ||||
|     else  | ||||
|         yad_error "$PW_PFX_BACKUP_ERROR $PW_PREFIX_NAME" | ||||
|     fi | ||||
|  | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
| pw_edit_db () { | ||||
|     if [[ "${XDG_SESSION_TYPE}" == "wayland" ]] ; then | ||||
|         pw_gui_for_edit_db \ | ||||
|         PW_MANGOHUD PW_MANGOHUD_USER_CONF ENABLE_VKBASALT PW_VKBASALT_USER_CONF PW_NO_ESYNC PW_NO_FSYNC PW_USE_RAY_TRACING \ | ||||
|         PW_USE_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP \ | ||||
|         PW_USE_TERMINAL PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY \ | ||||
|         PW_USE_GSTREAMER PW_FORCE_LARGE_ADDRESS_AWARE PW_USE_SHADER_CACHE PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS \ | ||||
|         PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK PW_USE_GAMESCOPE PW_DISABLE_COMPOSITING PW_USE_RUNTIME | ||||
|     else | ||||
|         pw_gui_for_edit_db \ | ||||
|         PW_MANGOHUD PW_MANGOHUD_USER_CONF ENABLE_VKBASALT PW_VKBASALT_USER_CONF PW_NO_ESYNC PW_NO_FSYNC PW_USE_RAY_TRACING \ | ||||
|         PW_USE_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP \ | ||||
|         PW_USE_TERMINAL PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY\ | ||||
|         PW_USE_US_LAYOUT PW_USE_GSTREAMER PW_FORCE_LARGE_ADDRESS_AWARE PW_USE_SHADER_CACHE PW_USE_WINE_DXGI PW_USE_EAC_AND_BE \ | ||||
|         PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK PW_USE_GAMESCOPE PW_DISABLE_COMPOSITING PW_USE_RUNTIME | ||||
|     fi | ||||
|     if [[ "$?" == 0 ]] ; then | ||||
|         print_info "Restarting PP after update ppdb file..." | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
|     fi | ||||
|     # PW_FORCE_USE_VSYNC HEAP_DELAY_FREE | ||||
| } | ||||
|  | ||||
| pw_autoinstall_from_db () { | ||||
|     export PW_USER_TEMP="${PORT_WINE_TMP_PATH}" | ||||
|     export PW_FORCE_LARGE_ADDRESS_AWARE=1 | ||||
|     export PW_USE_GAMEMODE=0 | ||||
|     export PW_CHECK_AUTOINSTAL=1 | ||||
|     export PW_GUI_DISABLED_CS=1 | ||||
|     export PW_NO_WRITE_WATCH=0 | ||||
|     export PW_VULKAN_USE=1 | ||||
|     export PW_USE_EAC_AND_BE=0 | ||||
|     export PW_NO_FSYNC=1 | ||||
|     export PW_NO_ESYNC=1 | ||||
|     unset PORTWINE_CREATE_SHORTCUT_NAME | ||||
|     export PW_DISABLED_CREATE_DB=1 | ||||
|     export PW_MANGOHUD=0 | ||||
|     export ENABLE_VKBASALT=0 | ||||
|     export PW_USE_D3D_EXTRAS=1 | ||||
|     . "${PORT_SCRIPTS_PATH}/pw_autoinstall/${PW_YAD_SET}" | ||||
| } | ||||
|  | ||||
| gui_credits () { | ||||
|     . "${PORT_SCRIPTS_PATH}/credits" | ||||
| } | ||||
| export -f gui_credits | ||||
|  | ||||
| ###MAIN### | ||||
|  | ||||
| # CLI | ||||
| case "${1}" in | ||||
|     '--help' ) | ||||
|         files_from_autoinstall=$(ls "${PORT_SCRIPTS_PATH}/pw_autoinstall") | ||||
| @@ -553,13 +262,10 @@ use: [--reinstall] [--autoinstall] | ||||
|         exit 0 ;; | ||||
| esac | ||||
|  | ||||
| PW_PREFIX_NAME="$(echo "${PW_PREFIX_NAME}" | sed -e s/[[:blank:]]/_/g)" | ||||
| PW_ALL_PREFIXES=$(ls "${PORT_WINE_PATH}/data/prefixes/" | sed -e s/"${PW_PREFIX_NAME}$"//g) | ||||
| export PW_PREFIX_NAME PW_ALL_PREFIXES | ||||
| ### GUI ### | ||||
|  | ||||
| # if [[ ! -z "${PORTWINE_DB}" ]] && [[ -z `echo "${PW_PREFIX_NAME}" | grep -i "$(echo "${PORTWINE_DB}" | sed -e s/[[:blank:]]/_/g)"` ]] ; then  | ||||
| #     export PW_PREFIX_NAME="${PW_PREFIX_NAME}!`echo "${PORTWINE_DB}" | sed -e s/[[:blank:]]/_/g`" | ||||
| # fi | ||||
| export PW_PREFIX_NAME="$(echo "${PW_PREFIX_NAME}" | sed -e s/[[:blank:]]/_/g)" | ||||
| export PW_ALL_PREFIXES=$(ls "${PORT_WINE_PATH}/data/prefixes/" | sed -e s/"${PW_PREFIX_NAME}$"//g) | ||||
|  | ||||
| unset PW_ADD_PREFIXES_TO_GUI | ||||
| IFS_OLD=$IFS | ||||
| @@ -572,7 +278,8 @@ IFS=$IFS_OLD | ||||
| export PW_ADD_PREFIXES_TO_GUI="${PW_PREFIX_NAME^^}${PW_ADD_PREFIXES_TO_GUI}" | ||||
|  | ||||
| PW_ALL_DIST=$(ls "${PORT_WINE_PATH}/data/dist/" | sed -e s/"${PW_WINE_LG_VER}$//g" | sed -e s/"${PW_PROTON_LG_VER}$//g") | ||||
| if command -v wine &>/dev/null | ||||
| if command -v wine &>/dev/null \ | ||||
| && ! check_flatpak | ||||
| then DIST_ADD_TO_GUI="!USE_SYSTEM_WINE" | ||||
| else unset DIST_ADD_TO_GUI | ||||
| fi | ||||
| @@ -581,10 +288,6 @@ do | ||||
|     export DIST_ADD_TO_GUI="${DIST_ADD_TO_GUI}!${DAIG}" | ||||
| done | ||||
|  | ||||
| # if [[ $VULKAN_API_DRIVER_VERSION == 1.[1-2].* ]] | ||||
| # then check_variables PW_VULKAN_USE "1" | ||||
| # else check_variables PW_VULKAN_USE "2" | ||||
| # fi | ||||
| check_nvidia_rtx && check_variables PW_VULKAN_USE "2" | ||||
|  | ||||
| case "${PW_VULKAN_USE}" in | ||||
| @@ -663,99 +366,6 @@ if [[ -f "${portwine_exe}" ]] ; then | ||||
|         portwine_launch | ||||
|     fi | ||||
| else | ||||
|     button_click () { | ||||
|         [[ ! -z "$1" ]] && echo "$1" > "${PORT_WINE_TMP_PATH}/tmp_yad_form" | ||||
|         if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_v12_3) ]] ; then | ||||
|             kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1 | ||||
|         fi | ||||
|     } | ||||
|     export -f button_click | ||||
|  | ||||
|     run_desktop_b_click () { | ||||
|         [[ ! -z "$1" ]] && echo "$1" > "${PORT_WINE_TMP_PATH}/tmp_yad_form" | ||||
|         if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_v12_3) ]] ; then | ||||
|             kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1 | ||||
|         fi | ||||
|  | ||||
|         if grep -i "flatpak" /etc/os-release &>/dev/null ; | ||||
|         then PW_EXEC_FROM_DESKTOP="$(cat "${PORT_WINE_PATH}/${PW_YAD_SET//¬/" "}" | grep Exec | head -n 1 | sed 's|flatpak run com.castrofidel.portproton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')" | ||||
|         else PW_EXEC_FROM_DESKTOP="$(cat "${PORT_WINE_PATH}/${PW_YAD_SET//¬/" "}" | grep Exec | head -n 1 | awk -F"=env " '{print $2}')" | ||||
|         fi | ||||
|  | ||||
|         print_info "Restarting PP after choose desktop file..." | ||||
|         # stop_portwine | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         /usr/bin/env bash -c "${PW_EXEC_FROM_DESKTOP}" & | ||||
|         exit 0 | ||||
|     } | ||||
|     export -f run_desktop_b_click | ||||
|  | ||||
|     gui_clear_pfx () { | ||||
|         if yad_question "${port_clear_pfx}" ; then | ||||
|             pw_clear_pfx | ||||
|             print_info "Restarting PP after clearing prefix..." | ||||
|             export SKIP_CHECK_UPDATES=1 | ||||
|             /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|             exit 0 | ||||
|         fi | ||||
|     } | ||||
|     export -f gui_clear_pfx | ||||
|  | ||||
|     gui_rm_portproton () { | ||||
|         if yad_question "${port_del2}" ; then | ||||
|             rm -fr "${PORT_WINE_PATH}" | ||||
|             rm -fr "${PORT_WINE_TMP_PATH}" | ||||
|             rm -fr "${HOME}/PortWINE" | ||||
|             rm -f $(grep -il PortProton "${HOME}/.local/share/applications"/*) | ||||
|             update-desktop-database -q "${HOME}/.local/share/applications" | ||||
|         fi | ||||
|         exit 0 | ||||
|     } | ||||
|     export -f gui_rm_portproton | ||||
|  | ||||
|     gui_pw_update () { | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/scripts_update_notifier" | ||||
|         print_info "Restarting PP for check update..." | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
|     } | ||||
|  | ||||
|     change_loc () { | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/${portname}_loc" | ||||
|         print_info "Restarting PP for change language..." | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
|     } | ||||
|  | ||||
|     gui_wine_uninstaller () { | ||||
|         start_portwine | ||||
|         pw_run uninstaller | ||||
|     } | ||||
|     export -f gui_wine_uninstaller | ||||
|  | ||||
|     gui_open_user_conf () { | ||||
|         xdg-open "${PORT_WINE_PATH}/data/user.conf" | ||||
|     } | ||||
|     export -f gui_open_user_conf | ||||
|  | ||||
|     gui_open_scripts_from_backup () { | ||||
|         cd "${PORT_WINE_TMP_PATH}/scripts_backup/" | ||||
|         PW_SCRIPT_FROM_BACKUP=$("${pw_yad_v12_3}" --file --borders=${YAD_BORDERS} --width=650 --height=500 --auto-close \ | ||||
|         --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "SCRIPTS FROM BACKUP" --file-filter="backup_scripts|scripts_v*.tar.gz" 2>/dev/null ) | ||||
|         YAD_STATUS="$?" | ||||
|         if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then exit 0 ; fi | ||||
|         unpack_tar_gz "$PW_SCRIPT_FROM_BACKUP" "${PORT_WINE_PATH}/data/" | ||||
|         echo "0" > "${PORT_WINE_TMP_PATH}/scripts_update_notifier" | ||||
|         print_info "Restarting PP after backup..." | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
|     } | ||||
|     export -f gui_open_scripts_from_backup | ||||
|  | ||||
|  | ||||
|     export KEY="$RANDOM" | ||||
|  | ||||
|     orig_IFS="$IFS" && IFS=$'\n' | ||||
| @@ -776,10 +386,10 @@ else | ||||
|  | ||||
|     IFS="$orig_IFS" | ||||
|     old_IFS=$IFS && IFS="%" | ||||
|     "${pw_yad_v12_3}" --plug=$KEY --tabnum=${PW_GUI_SORT_TABS[4]} --form --columns=3 --align-buttons --keep-icon-size --scroll --separator=" " ${PW_GENERATE_BUTTONS} 2>/dev/null & | ||||
|     "${pw_yad_v13_0}" --plug=$KEY --tabnum=${PW_GUI_SORT_TABS[4]} --form --columns=3 --align-buttons --keep-icon-size --scroll --separator=" " ${PW_GENERATE_BUTTONS} 2>/dev/null & | ||||
|     IFS="$orig_IFS" | ||||
|  | ||||
|     "${pw_yad_v12_3}" --plug=${KEY} --tabnum=${PW_GUI_SORT_TABS[3]} --form --columns=3 --align-buttons --keep-icon-size --separator=";" \ | ||||
|     "${pw_yad_v13_0}" --plug=${KEY} --tabnum=${PW_GUI_SORT_TABS[3]} --form --columns=3 --align-buttons --keep-icon-size --separator=";" \ | ||||
|     --field="   $loc_gui_pw_reinstall_pp"!"$PW_GUI_ICON_PATH/separator.png"!"":"FBTN" '@bash -c "button_click gui_pw_reinstall_pp"' \ | ||||
|     --field="   $loc_gui_rm_pp"!"$PW_GUI_ICON_PATH/separator.png"!"":"FBTN" '@bash -c "button_click gui_rm_portproton"' \ | ||||
|     --field="   $loc_gui_upd_pp"!"$PW_GUI_ICON_PATH/separator.png"!"":"FBTN" '@bash -c "button_click gui_pw_update"' \ | ||||
| @@ -790,7 +400,7 @@ else | ||||
|     --field="   Xterm"!"$PW_GUI_ICON_PATH/separator.png"!"":"FBTN" '@bash -c "button_click pw_start_cont_xterm"' \ | ||||
|     --field="   $loc_gui_credits"!"$PW_GUI_ICON_PATH/separator.png"!"":"FBTN" '@bash -c "button_click gui_credits"'  2>/dev/null & | ||||
|  | ||||
|     "${pw_yad_v12_3}" --plug=${KEY} --tabnum=${PW_GUI_SORT_TABS[2]} --form --columns=3 --align-buttons --keep-icon-size --separator=";" \ | ||||
|     "${pw_yad_v13_0}" --plug=${KEY} --tabnum=${PW_GUI_SORT_TABS[2]} --form --columns=3 --align-buttons --keep-icon-size --separator=";" \ | ||||
|     --field="  3D API  : :CB" "${PW_DEFAULT_VULKAN_USE}" \ | ||||
|     --field="  PREFIX  : :CBE" "${PW_ADD_PREFIXES_TO_GUI}" \ | ||||
|     --field="  WINE    : :CB" "${PW_DEFAULT_WINE_USE}" \ | ||||
| @@ -804,7 +414,7 @@ else | ||||
|     --field="   $loc_gui_wine_cmd"!"$PW_GUI_ICON_PATH/separator.png"!"${loc_winecmd}":"FBTN" '@bash -c "button_click WINECMD"' \ | ||||
|     --field="   $loc_gui_wine_reg"!"$PW_GUI_ICON_PATH/separator.png"!"${loc_winereg}":"FBTN" '@bash -c "button_click WINEREG"' 2>/dev/null 1> "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" & | ||||
|  | ||||
|     "${pw_yad_v12_3}" --plug=$KEY --tabnum=${PW_GUI_SORT_TABS[1]} --form --columns=3 --align-buttons --keep-icon-size --scroll  \ | ||||
|     "${pw_yad_v13_0}" --plug=$KEY --tabnum=${PW_GUI_SORT_TABS[1]} --form --columns=3 --align-buttons --keep-icon-size --scroll  \ | ||||
|     --field="   Dolphin 5.0"!"$PW_GUI_ICON_PATH/dolphin.png"!"${loc_dolphin}":"FBTN" '@bash -c "button_click PW_DOLPHIN"' \ | ||||
|     --field="   MAME"!"$PW_GUI_ICON_PATH/mame.png"!"${loc_mame}":"FBTN" '@bash -c "button_click PW_MAME"' \ | ||||
|     --field="   RetroArch"!"$PW_GUI_ICON_PATH/retroarch.png"!"${loc_retroarch}":"FBTN" '@bash -c "button_click PW_RETROARCH"' \ | ||||
| @@ -820,7 +430,7 @@ else | ||||
|     --field="   xemu"!"$PW_GUI_ICON_PATH/xemu.png"!"${loc_xemu}":"FBTN" '@bash -c "button_click PW_XEMU"' \ | ||||
|     --field="   Demul"!"$PW_GUI_ICON_PATH/demul.png"!"${loc_demul}":"FBTN" '@bash -c "button_click PW_DEMUL"' 2>/dev/null & | ||||
|  | ||||
|     "${pw_yad_v12_3}" --plug=$KEY --tabnum=${PW_GUI_SORT_TABS[0]} --form --columns=3 --align-buttons --keep-icon-size --scroll \ | ||||
|     "${pw_yad_v13_0}" --plug=$KEY --tabnum=${PW_GUI_SORT_TABS[0]} --form --columns=3 --align-buttons --keep-icon-size --scroll \ | ||||
|     --field="   Lesta Game Center"!"$PW_GUI_ICON_PATH/lgc.png"!"":"FBTN" '@bash -c "button_click PW_LGC"' \ | ||||
|     --field="   vkPlay Games Center"!"$PW_GUI_ICON_PATH/mygames.png"!"":"FBTN" '@bash -c "button_click PW_VKPLAY"' \ | ||||
|     --field="   Battle.net Launcher"!"$PW_GUI_ICON_PATH/battle_net.png"!"":"FBTN" '@bash -c "button_click PW_BATTLE_NET"' \ | ||||
| @@ -862,7 +472,7 @@ else | ||||
|  | ||||
|     # if command -v wmctrl &>/dev/null ; then | ||||
|     #     sleep 2 | ||||
|     #     while [[ -n $(pgrep -a yad_v12_3 | head -n 1 | awk '{print $1}' 2>/dev/null) ]] ; do | ||||
|     #     while [[ -n $(pgrep -a yad_v13_0 | head -n 1 | awk '{print $1}' 2>/dev/null) ]] ; do | ||||
|     #         sleep 2 | ||||
|     #         PW_MAIN_GUI_SIZE_TMP="$(wmctrl -lG | grep "PortProton-${install_ver}" | awk '{print $5" "$6}' 2>/dev/null)" | ||||
|     #         if [[ ! -z "${PW_MAIN_GUI_SIZE_TMP}" ]] ; then | ||||
| @@ -874,7 +484,7 @@ else | ||||
|     export START_FROM_PP_GUI=1 | ||||
|  | ||||
|     if [[ -z "${PW_ALL_DF}" ]] ; then | ||||
|         "${pw_yad_v12_3}" --key=$KEY --notebook --borders=${YAD_BORDERS} --width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons --auto-close \ | ||||
|         "${pw_yad_v13_0}" --key=$KEY --notebook --borders=${YAD_BORDERS} --width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons --auto-close \ | ||||
|         --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "${portname}-${install_ver} (${scripts_install_ver})" \ | ||||
|         --tab-pos=bottom --keep-icon-size \ | ||||
|         --tab="$loc_mg_autoinstall"!"$PW_GUI_ICON_PATH/separator.png"!"" \ | ||||
| @@ -884,7 +494,7 @@ else | ||||
|         --tab="$loc_mg_installed"!"$PW_GUI_ICON_PATH/separator.png"!"" 2>/dev/null | ||||
|         YAD_STATUS="$?" | ||||
|     else | ||||
|         "${pw_yad_v12_3}" --key=$KEY --notebook --borders=${YAD_BORDERS} --width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons --auto-close \ | ||||
|         "${pw_yad_v13_0}" --key=$KEY --notebook --borders=${YAD_BORDERS} --width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons --auto-close \ | ||||
|         --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "${portname}-${install_ver} (${scripts_install_ver})" \ | ||||
|         --tab-pos=bottom --keep-icon-size \ | ||||
|         --tab="$loc_mg_installed"!"$PW_GUI_ICON_PATH/separator.png"!"" \ | ||||
| @@ -924,7 +534,9 @@ esac | ||||
| init_wine_ver | ||||
|  | ||||
| if [[ "${PW_DISABLED_CREATE_DB}" != 1 ]] ; then | ||||
|     if [[ ! -z "${PORTWINE_DB}" ]] && [[ -z "${PORTWINE_DB_FILE}" ]] ; then | ||||
|     if [[ ! -z "${PORTWINE_DB}" ]] \ | ||||
|     && [[ -z "${PORTWINE_DB_FILE}" ]] | ||||
|     then | ||||
|         PORTWINE_DB_FILE=$(grep -il "\#${PORTWINE_DB}.exe" "${PORT_SCRIPTS_PATH}/portwine_db"/*) | ||||
|         if [[ -z "${PORTWINE_DB_FILE}" ]] ; then | ||||
|             echo "#!/usr/bin/env bash"  > "${portwine_exe}".ppdb | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| #!/usr/bin/env bash | ||||
| #Author: Castro-Fidel (linux-gaming.ru) | ||||
| #SCRIPTS_NEXT_VERSION=2264 | ||||
| #SCRIPTS_NEXT_VERSION=2272 | ||||
| ######################################################################## | ||||
| export PW_MANGOHUD="0" | ||||
| export DEFAULT_MANGOHUD_CONFIG="cpu_stats,cpu_temp,cpu_mhz,gpu_stats,gpu_temp,gpu_core_clock,gpu_mem_clock,vulkan_driver,gpu_name,vram,ram,frame_timing=1,time,arch,wine,toggle_hud=Shift_R+F12,resolution,vkbasalt,gamemode" | ||||
| export DEFAULT_MANGOHUD_CONFIG="arch,cpu_mhz,cpu_temp,engine_version,gamemode,gpu_core_clock,gpu_mem_clock,gpu_name,gpu_temp,ram,resolution,vkbasalt,vram,vulkan_driver,wine" | ||||
| export PW_VKBASALT_EFFECTS="Curves:cas" | ||||
| export PW_VKBASALT_FFX_CAS="0.66" | ||||
| export ENABLE_VKBASALT=1 | ||||
| @@ -18,7 +18,7 @@ export PW_FORCE_USE_VSYNC="2" | ||||
| export PW_USE_TERMINAL="0" | ||||
| export PW_WINDOWS_VER="10" | ||||
| export WINEARCH="win64" | ||||
| export PW_LIBS_VER="_v46" | ||||
| export PW_LIBS_VER="_v47" | ||||
| export GDK_BACKEND="x11" | ||||
| export PW_USE_GSTREAMER="1" | ||||
| export PW_USE_D3D_EXTRAS="1" | ||||
| @@ -38,21 +38,21 @@ export PW_USE_GAMESCOPE="0" | ||||
| # export GTK_THEME="Adwaita:dark" | ||||
| ###DEFAULT_WINE### | ||||
| export PW_WINE_USE="PROTON_LG" | ||||
| export PW_PLUGINS_VER="_v13" | ||||
| export PW_PLUGINS_VER="_v15" | ||||
| export PW_FAKE_DLSS_VER="230506" | ||||
| export PW_FAKE_DLSS_3_VER="090" | ||||
| export PW_GALLIUM_NINE_VER="0.9" | ||||
| ###WINE_AND_PROTON_LG### | ||||
| export PW_PROTON_LG_VER="PROTON_LG_9-1" | ||||
| export PW_PROTON_LG_VER="PROTON_LG_9-2" | ||||
| export PW_WINE_LG_VER="WINE_LG_9-2" | ||||
| export PW_WINE_FULLSCREEN_FSR="1" | ||||
| ###DXVK_AND_VKD3D### | ||||
| export VKD3D_LIMIT_TESS_FACTORS="64" | ||||
| export D8VK_VER="1.7.1-2367" | ||||
| export DXVK_STABLE_VER="1.10.3-28" | ||||
| export DXVK_GIT_VER="2.3-90" | ||||
| export DXVK_GIT_VER="2.3.1" | ||||
| export VKD3D_STABLE_VER="1.1-2602" | ||||
| export VKD3D_GIT_VER="1.1-3954" | ||||
| export VKD3D_GIT_VER="1.1-3973" | ||||
| ###PREFIX_VERSION### | ||||
| export DOTPFX_VER="48v2" | ||||
| export DEFPFX_VER="v1" | ||||
| @@ -63,11 +63,12 @@ export DXVK_CONFIG_FILE="${PORT_WINE_PATH}/data/dxvk.conf" | ||||
| ################################################################# | ||||
| pw_list_install_dll_in_prefix () | ||||
| { | ||||
|     STANDART_DLL="d3dx9 d3dcompiler_43 d3dcompiler_47 physx mfc42 vcrun2022 sandbox corefonts tahoma lucida calibri faudio" | ||||
|     case $PW_PREFIX_NAME in | ||||
|         DEFAULT)    export PW_MUST_HAVE_DLL="d3dx9 d3dcompiler_43 physx mfc42 vcrun2022 sandbox" ;; | ||||
|         DOTNET)     export PW_MUST_HAVE_DLL="physx mfc42 vcrun2019 faudio dotnet48" ;; | ||||
|         PROGRAMS)   export PW_MUST_HAVE_DLL="d3dx9 d3dcompiler_43 physx mfc42 vcrun2019 riched20 corefonts msxml3 msxml4 msxml6" ;; | ||||
|         *)          export PW_MUST_HAVE_DLL="" ;; | ||||
|         DEFAULT)    export PW_MUST_HAVE_DLL="$STANDART_DLL" ;; | ||||
|         DOTNET)     export PW_MUST_HAVE_DLL="dotnet48" ;; | ||||
|         PROGRAMS)   export PW_MUST_HAVE_DLL="riched20 msxml3 msxml4 msxml6" ;; | ||||
|         *)          export PW_MUST_HAVE_DLL="sandbox" ;; | ||||
|     esac | ||||
| } | ||||
| ######################################################################## | ||||
|   | ||||
| @@ -1,811 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
| # Author: Castro-Fidel (linux-gaming.ru) | ||||
| ######################################################################## | ||||
| yad_info () { | ||||
|     print_info "$@" | ||||
|     if [[ ! -f "${pw_yad_v12_3}" ]] ; then | ||||
|         local pw_yad_v12_3="yad"  | ||||
|         command -v "${pw_yad_v12_3}" &>/dev/null || fatal "yad not found" | ||||
|     fi | ||||
|     "${pw_yad_v12_3}" --no-wrap --text "$@" --width=400 --height=50 --borders=15 --title "INFO" \ | ||||
|     --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --image="$PW_GUI_ICON_PATH/info.png" \ | ||||
|     --center --text-align=center --button=OK 2>/dev/null | ||||
| } | ||||
| export -f yad_info | ||||
|  | ||||
| yad_error () { | ||||
|     print_error "$@" | ||||
|     if [[ ! -f "${pw_yad_v12_3}" ]] ; then | ||||
|         local pw_yad_v12_3="yad"  | ||||
|         command -v "${pw_yad_v12_3}" &>/dev/null || fatal "yad not found" | ||||
|     fi | ||||
|     "${pw_yad_v12_3}" --no-wrap --text "$@" --width=400 --borders=15 --title "ERROR" \ | ||||
|     --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --image="$PW_GUI_ICON_PATH/error.png" \ | ||||
|     --center --text-align=center --button=EXIT 2>/dev/null | ||||
| } | ||||
| export -f yad_error | ||||
|  | ||||
| yad_error_download () { | ||||
|     if [[ ! -f "${pw_yad_v12_3}" ]] ; then | ||||
|         local pw_yad_v12_3="yad"  | ||||
|         command -v "${pw_yad_v12_3}" &>/dev/null || fatal "yad not found" | ||||
|     fi | ||||
|     "${pw_yad_v12_3}" --text "$loc_gui_error_download" --width=400 --borders=15 --title "$loc_gui_error" \ | ||||
|     --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --image="$PW_GUI_ICON_PATH/download.png" \ | ||||
|     --no-wrap --center --text-align=center --button=SKIP:1 --button=REPEAT:0 2>/dev/null | ||||
|     [[ "$?" != 0 ]] && return 1 || return 0 | ||||
| } | ||||
|  | ||||
| yad_question () { | ||||
|     if [[ ! -f "${pw_yad_v12_3}" ]] ; then | ||||
|         local pw_yad_v12_3="yad"  | ||||
|         command -v "${pw_yad_v12_3}" &>/dev/null || fatal "yad not found" | ||||
|     fi | ||||
|     "${pw_yad_v12_3}" --text "${1}" --width=400 --borders=15 --title "${inst_set}." \ | ||||
|     --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --image="$PW_GUI_ICON_PATH/question.png" \ | ||||
|     --no-wrap --center --text-align=center --button=NO:1 --button=YES:0 2>/dev/null | ||||
|     [[ "$?" != 0 ]] && return 1 || return 0 | ||||
| } | ||||
|  | ||||
| pw_start_progress_bar_cover () { | ||||
|     if ! check_start_from_steam ; then | ||||
|         PW_GIF_FILE="$1" | ||||
|         PW_GIF_SIZE_X=`file "${PW_GIF_FILE}" | awk '{print $7 + 20}'` | ||||
|         PW_GIF_SIZE_Y=`file "${PW_GIF_FILE}" | awk '{print $9 + 20}'` | ||||
|         "${pw_yad}" --picture --filename="${PW_GIF_FILE}" --close-on-unfocus --no-buttons --undecorated --center \ | ||||
|         --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y --window-icon="$PW_GUI_ICON_PATH/portproton.svg" > /dev/null 2>&1 & | ||||
|         export PW_YAD_PID_PROGRESS_BAR_COVER="$!" | ||||
|         return 0 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pw_start_progress_bar_cover_block () { | ||||
|     if ! check_start_from_steam ; then | ||||
|         [[ ! -f "${pw_yad}" ]] && local pw_yad="yad" | ||||
|         PW_GIF_FILE="$1" | ||||
|         PW_GIF_SIZE_X=`file "${PW_GIF_FILE}" | awk '{print $7 + 20}'` | ||||
|         PW_GIF_SIZE_Y=`file "${PW_GIF_FILE}" | awk '{print $9 + 20}'` | ||||
|         "${pw_yad}" --picture --filename="${PW_GIF_FILE}" --close-on-unfocus --no-buttons --undecorated --center \ | ||||
|         --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y --window-icon="$PW_GUI_ICON_PATH/portproton.svg" > /dev/null 2>&1 & | ||||
|         export PW_YAD_PID_PROGRESS_BAR_COVER_BLOCK="$!" | ||||
|         return 0 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pw_update_pfx_cover_gui () { | ||||
|     if ! check_start_from_steam && ! pgrep -a yad | grep "yad_v12_3 --notebook --key=$PW_KEY_PROGRESS_BAR_UP" &>/dev/null ; then | ||||
|         PW_KEY_PROGRESS_BAR_UP=$RANDOM | ||||
|         PW_GIF_FILE="${PW_GUI_ICON_PATH}/covers/update_prefix_${update_loc}.gif"  | ||||
|         PW_GIF_SIZE_X=`file "${PW_GIF_FILE}" | awk '{print $7 + 40}'` | ||||
|         PW_GIF_SIZE_Y=`file "${PW_GIF_FILE}" | awk '{print $9 + 80}'` | ||||
|         echo "UPDATE PREFIX..." > "${PORT_WINE_TMP_PATH}/update_pfx_log" | ||||
|         export PW_TIMER=0 | ||||
|         while read -r line || [[ ! -z `pgrep -a yad | grep "yad_v12_3 --notebook --key=$PW_KEY_PROGRESS_BAR_UP" | awk '{print $1}'` ]] ; do | ||||
|                 sleep 0.005 | ||||
|                 if [[ ! -z "${line}" ]] && [[ -z "`echo "${line}" | grep -i "gstreamer"`" ]] \ | ||||
|                                         && [[ -z "`echo "${line}" | grep -i "kerberos"`" ]] \ | ||||
|                                         && [[ -z "`echo "${line}" | grep -i "ntlm"`" ]] | ||||
|                 then | ||||
|                     echo "# ${line}" | ||||
|                 fi | ||||
|                 if [[ "${PW_TIMER}" != 1 ]] ; then | ||||
|                     sleep 3 | ||||
|                     PW_TIMER=1 | ||||
|                 fi | ||||
|         done < "${PORT_WINE_TMP_PATH}/update_pfx_log" | "${pw_yad_v12_3}" --plug=$PW_KEY_PROGRESS_BAR_UP --tabnum="2" --text-info --tail  2>/dev/null & | ||||
|         "${pw_yad_v12_3}" --plug=$PW_KEY_PROGRESS_BAR_UP --tabnum="1" --picture --filename="${PW_GIF_FILE}" --image-on-top 2>/dev/null & | ||||
|  | ||||
|         "${pw_yad_v12_3}" --notebook --key="$PW_KEY_PROGRESS_BAR_UP" --tab=LOGO --tab=TERMINAL --no-buttons --undecorated \ | ||||
|         --center --auto-close --skip-taskbar --width=$PW_GIF_SIZE_X --height=$PW_GIF_SIZE_Y --tab-pos=bottom 2>/dev/null & | ||||
|         export PW_YAD_PID_PFX_COVER_UI="$!" | ||||
|         return 0 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pw_start_progress_bar_cs () { | ||||
|     if ! check_start_from_steam ; then | ||||
|         "${pw_yad}" --progress --progress-text="$@" --pulsate --close-on-unfocus \ | ||||
|         --no-buttons --undecorated --center --skip-taskbar --width=500 --wrap-width=500 &>/dev/null & | ||||
|         export PW_YAD_PID_PROGRESS_BAR_CS="$!" | ||||
|         return 0 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pw_start_progress_bar_block () { | ||||
|     if ! check_start_from_steam ; then | ||||
|         "${pw_yad}" --progress --progress-text="$@" --pulsate \ | ||||
|         --no-buttons --undecorated --center --skip-taskbar --width=500 --wrap-width=500 &>/dev/null & | ||||
|         export PW_YAD_PID_PROGRESS_BAR_BLOCK="$!" | ||||
|         return 0 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pw_stop_progress_bar () { | ||||
|     for PW_KILL_YAD_PID in "$PW_YAD_PID_PROGRESS_BAR_BLOCK" "$PW_YAD_PID_PROGRESS_BAR_CS" \ | ||||
|                            "$PW_YAD_PID_PFX_COVER_UI" "$PW_YAD_PID_PROGRESS_BAR_COVER" | ||||
|     do | ||||
|         kill -s SIGUSR1 "$PW_KILL_YAD_PID" &>/dev/null | ||||
|     done | ||||
|     return 0 | ||||
| } | ||||
| export -f pw_stop_progress_bar | ||||
|  | ||||
| pw_stop_progress_bar_cover () { | ||||
|     kill -s KILL "$PW_YAD_PID_PROGRESS_BAR_COVER" &>/dev/null | ||||
|     return 0 | ||||
| } | ||||
| export -f pw_stop_progress_bar_cover | ||||
|  | ||||
| pw_stop_progress_bar_cover_block () { | ||||
|     kill -s KILL "$PW_YAD_PID_PROGRESS_BAR_COVER_BLOCK" &>/dev/null | ||||
|     return 0 | ||||
| } | ||||
| export -f pw_stop_progress_bar_cover_block | ||||
|  | ||||
| open_changelog () { | ||||
|     "${pw_yad}" --title="$loc_gui_changelog" --borders=${YAD_BORDERS} --no-buttons --text-align=center \ | ||||
|     --text-info --show-uri --wrap --width=1200 --height=700 --uri-color=red \ | ||||
|     --filename="${PORT_WINE_PATH}/data/${PW_CHANGELOG_FILE}" &>/dev/null | ||||
| } | ||||
| export -f open_changelog | ||||
|  | ||||
| pw_tray_icon () { | ||||
|     if [ ! -z "`pgrep -a yad_v12_3 | grep "\--notification" | awk '{print $1}'`" ] ; then | ||||
|         kill -s SIGUSR1 "`pgrep -a yad_v12_3 | grep "\--notification" | awk '{print $1}'`" | ||||
|     fi | ||||
|  | ||||
|     tray_icon_click () { | ||||
|         echo "" | ||||
|     } | ||||
|     export -f tray_icon_click | ||||
|  | ||||
|     pw_tray_winefile () { | ||||
|         pw_run winefile "C:\\users\\${USER}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\" | ||||
|     } | ||||
|     export -f pw_tray_winefile | ||||
|  | ||||
|     pw_tray_taskmgr () { | ||||
|         pw_run taskmgr | ||||
|     } | ||||
|     export -f pw_tray_taskmgr | ||||
|  | ||||
|     tray_icon_click_exit () { | ||||
|         pw_stop_progress_bar | ||||
|         stop_portwine | ||||
|     } | ||||
|     export -f tray_icon_click_exit | ||||
|  | ||||
|     # --window-icon="$PW_GUI_ICON_PATH/portproton_tray.png" \ | ||||
|     "${pw_yad_v12_3}" --notification --no-middle \ | ||||
|     --image="$PW_GUI_ICON_PATH/portproton_tray.png" \ | ||||
|     --command="bash -c tray_icon_click" \ | ||||
|     --tooltip="PortProton" \ | ||||
|     --menu="| \ | ||||
|   ${loc_tray_winefile}!bash -c pw_tray_winefile!"$PW_GUI_ICON_PATH/port_winefile.png"|| \ | ||||
|   ${loc_tray_tascmng}!bash -c pw_tray_taskmgr!"$PW_GUI_ICON_PATH/port_winefile.png"|| \ | ||||
|   ${loc_tray_cangelog}!bash -c open_changelog!"$PW_GUI_ICON_PATH/port_changelog.png"|| \ | ||||
|   ${loc_tray_force_exit}    !bash -c tray_icon_click_exit!"$PW_GUI_ICON_PATH/port_exit.png"||" 2>/dev/null & | ||||
|  | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
| pw_gui_for_edit_db () { | ||||
|     KEY_EDIT_DB_GUI=$RANDOM | ||||
|     if [[ "${PW_WINE_CPU_TOPOLOGY}" == *[0-9]:* ]] && [[ "${PW_WINE_CPU_TOPOLOGY}" != "disabled" ]] ; then | ||||
|         CPU_LIMIT_VAR="`echo ${PW_WINE_CPU_TOPOLOGY%%:*}`" | ||||
|     else | ||||
|         CPU_LIMIT_VAR="disabled" | ||||
|     fi | ||||
|     # if [[ ! -z "${PW_AMD_VULKAN_USE}" ]] && [[ "${PW_AMD_VULKAN_USE}" != "disabled" ]] ; then | ||||
|     #     AMD_VULKAN_VAR="${PW_AMD_VULKAN_USE}" | ||||
|     # else | ||||
|     #     AMD_VULKAN_VAR="disabled" | ||||
|     # fi | ||||
|  | ||||
|     if [[ ! -z "${PW_GPU_USE}" ]] && [[ "${PW_GPU_USE}" != "disabled" ]] ; then | ||||
|         GPU_VAR="${PW_GPU_USE}" | ||||
|     else | ||||
|         GPU_VAR="disabled" | ||||
|     fi | ||||
|  | ||||
|     GET_GPU_NAMES=$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | awk -F '=' '/deviceName/{print $2}' | sed '/llvm/d'| sort -u | sed 's/^ //' | paste -sd '!') | ||||
|  | ||||
|     logical_cores=$(grep -c "^processor" /proc/cpuinfo) | ||||
|     if [[ "${logical_cores}" -le "4" ]] ; then | ||||
|         GET_LOGICAL_CORE="1!$(seq -s! 1 $((${logical_cores} - 1)))" | ||||
|     else | ||||
|         GET_LOGICAL_CORE="1!2!$(seq -s! 4 4 $((${logical_cores} - 1)))" | ||||
|     fi | ||||
|  | ||||
|     unset ADD_CHK_BOX_EDIT_DB | ||||
|     edit_db_field_add () { | ||||
|         for int_to_boole in $@ ; do | ||||
|             if [ "${!int_to_boole}" == "1" ] | ||||
|             then export ${int_to_boole}="TRUE" | ||||
|             else export ${int_to_boole}="FALSE" | ||||
|             fi | ||||
|             TMP_HELP_FOR_GUI="${int_to_boole}_INFO" | ||||
|             int_to_boole_non_pw="`echo ${int_to_boole} | sed 's/^PW_//' `" | ||||
|             ADD_CHK_BOX_EDIT_DB+="--field=  ${int_to_boole_non_pw}    !${!TMP_HELP_FOR_GUI}:CHK%${!int_to_boole}%" | ||||
|         done | ||||
|     } | ||||
|     edit_db_field_add $@ | ||||
|     old_IFS=$IFS | ||||
|     IFS="%" | ||||
|     "${pw_yad_v12_3}" --plug=$KEY_EDIT_DB_GUI --tabnum="1" --form --separator=" " --columns=4 ${ADD_CHK_BOX_EDIT_DB} \ | ||||
|     1> "${PORT_WINE_TMP_PATH}/tmp_output_yad_edit_db" 2>/dev/null & | ||||
|     IFS=$old_IFS | ||||
|  | ||||
|     case ${PW_WINDOWS_VER} in | ||||
|          "7") ADD_WINVER_EDIT_DB="7!10!XP" ;; | ||||
|         "XP") ADD_WINVER_EDIT_DB="XP!7!10" ;; | ||||
|            *) ADD_WINVER_EDIT_DB="10!7!XP" ;; | ||||
|     esac | ||||
|  | ||||
|     # --field="${loc_gui_amd_vulkan_select}!${loc_gui_amd_vulkan_select_help} :CB" "${AMD_VULKAN_VAR}!disabled!amdvlk!amdgpupro!radv!radv_gpl!radv_aco" | ||||
|  | ||||
|     "${pw_yad_v12_3}" --plug=$KEY_EDIT_DB_GUI --tabnum="2" --form --separator="%" --columns=1 \ | ||||
|     --field="${loc_gui_ver_windows}!${loc_gui_ver_windows_help} :CB" "${ADD_WINVER_EDIT_DB}" \ | ||||
|     --field="${loc_gui_aut_winetricks}!${loc_gui_aut_winetricks_help} :CBE" "${PW_DLL_INSTALL}!vcrun2019 corefonts lucida" \ | ||||
|     --field="${loc_gui_winedllover}!${loc_gui_winedllover_help} :CBE" "${WINEDLLOVERRIDES}!libglesv2=!d3dx9_36,d3dx9_42=n,b;mfc120=b,n" \ | ||||
|     --field=":LBL" "" \ | ||||
|     --field="${loc_gui_arg_exe}!${loc_gui_arg_exe_help} :CBE" "\\${LAUNCH_PARAMETERS[@]}!-dx11 -skipintro 1" \ | ||||
|     --field=":LBL" "" \ | ||||
|     --field="${loc_gui_cpu_limit}!${loc_gui_cpu_limit_help} :CB" "${CPU_LIMIT_VAR}!disabled!${GET_LOGICAL_CORE}" \ | ||||
|     --field="${loc_gui_gpu_select}!${loc_gui_gpu_select_help} :CB" "${GPU_VAR}!disabled!${GET_GPU_NAMES}" \ | ||||
|     --field="${loc_gui_arg_gamescope}!${loc_gui_arg_gamescope_help} :CBE" "\\${GAMESCOPE_ARGS}!-r 60 -F fsr!" 2>/dev/null 1> "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" 2>/dev/null & | ||||
|      | ||||
|     "${pw_yad_v12_3}" --paned --key="$KEY_EDIT_DB_GUI" --title "EDIT_DB" --text-align=center --height="800" \ | ||||
|     --text "${loc_gui_edit_db} <b>${PORTWINE_DB}</b>\n ${loc_gui_edit_db_help}" --separator=" " --borders=${YAD_BORDERS} \ | ||||
|     --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
|     --button="${loc_gui_cancel}"!!"${loc_gui_cancel_help}":1 \ | ||||
|     --button="${loc_gui_reset_db}"!!"${loc_gui_reset_db_help}":2 \ | ||||
|     --button="${loc_gui_open_db}"!!"${loc_gui_open_db_help}":150 \ | ||||
|     --button="${loc_gui_save_changes}"!!"${loc_gui_save_changes_help}":0 2>/dev/null | ||||
|     YAD_STATUS="$?" | ||||
|     export SKIP_CHECK_UPDATES=1 | ||||
|     case "$YAD_STATUS" in | ||||
|           1) /usr/bin/env bash -c ${pw_full_command_line[*]} & exit 0 ;; | ||||
|           2) try_remove_file "$portwine_exe".ppdb              | ||||
|              /usr/bin/env bash -c ${pw_full_command_line[*]} & exit 0 ;; | ||||
|         150) xdg-open "${PORTWINE_DB_FILE}" & exit 0 ;; | ||||
|         252) exit 0 ;; | ||||
|     esac | ||||
|     output_yad_edit_db=(`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_edit_db"`) | ||||
|     bool_from_yad=0 | ||||
|     edit_db_field_read () { | ||||
|         for boole_to_int in $@ ; do | ||||
|             export ${boole_to_int}=${output_yad_edit_db[$bool_from_yad]} | ||||
|             if [ "${!boole_to_int}" == "TRUE" ] | ||||
|             then export ${boole_to_int}="1" | ||||
|             else export ${boole_to_int}="0" | ||||
|             fi | ||||
|             export bool_from_yad=$(( ${bool_from_yad} + 1 )) | ||||
|         done | ||||
|     } | ||||
|     edit_db_field_read $@ | ||||
|     PW_WINDOWS_VER="`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $1}'`" | ||||
|     PW_DLL_INSTALL=`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $2}'` | ||||
|     WINEDLLOVERRIDES=`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $3}'` | ||||
|     LAUNCH_PARAMETERS=`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $5}'` | ||||
|     CPU_LIMIT="`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $7}'`" | ||||
|     PW_GPU_USE="`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $8}'`" | ||||
|     GAMESCOPE_ARGS="`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $9}'`" | ||||
|     # PW_AMD_VULKAN_USE="`cat "${PORT_WINE_TMP_PATH}/tmp_output_yad_fps_limit" | awk -F"%" '{print $10}'`" | ||||
|  | ||||
|     if [[ "${CPU_LIMIT}" != "disabled" ]] ; then | ||||
|         export PW_WINE_CPU_TOPOLOGY="${CPU_LIMIT}:$(seq -s, 0 $((${CPU_LIMIT} - 1)))" | ||||
|     else | ||||
|         export PW_WINE_CPU_TOPOLOGY="disabled" | ||||
|     fi | ||||
|     echo "pw_gui_for_edit_db PORTWINE_DB_FILE=$PORTWINE_DB_FILE" | ||||
|     edit_db_from_gui $@ LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL WINEDLLOVERRIDES PW_WINE_CPU_TOPOLOGY GAMESCOPE_ARGS | ||||
|     edit_user_conf_from_gui PW_GPU_USE | ||||
|     # PW_AMD_VULKAN_USE | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
|  | ||||
| gui_proton_downloader () { | ||||
|     if [[ "$PW_WINE_USE" == PROTON_LG ]]  | ||||
|     then export PW_WINE_USE="${PW_PROTON_LG_VER}" | ||||
|     elif [[ "$PW_WINE_USE" == WINE_*_LG ]] || [[ "$PW_WINE_USE" == WINE_LG ]] | ||||
|     then export PW_WINE_USE="${PW_WINE_LG_VER}" | ||||
|     fi | ||||
|     if [[ "$1" == "silent" ]] && [[ -d "${PORT_WINE_PATH}/data/dist/${PW_WINE_USE}" ]] ; then | ||||
|         return 0 | ||||
|     fi | ||||
|     pw_start_progress_bar_block "$loc_gui_check_new_wine" | ||||
|     #PROTON_GE | ||||
|     export PROTON_GE_GIT=($(curl -s "https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases" | grep "browser_download_url.*\.tar\.gz" | cut -d \" -f 4)) | ||||
|     try_remove_file "${PORT_WINE_TMP_PATH}/tmp_proton_ge_git" | ||||
|     if [[ ! -z "${PROTON_GE_GIT}" ]] ; then | ||||
|         for PGEGIT in ${PROTON_GE_GIT[@]} ; do | ||||
|             echo ${PGEGIT} | awk -F/ '{print $NF}' | sed 's/.tar.gz//' >> "${PORT_WINE_TMP_PATH}/tmp_proton_ge_git" | ||||
|         done | ||||
|         sed -i '/Proton-6.5-GE-2/,$d' "${PORT_WINE_TMP_PATH}/tmp_proton_ge_git" | ||||
|         sed -i '/github-action/d' "${PORT_WINE_TMP_PATH}/tmp_proton_ge_git" | ||||
|     fi | ||||
|  | ||||
|     #WINE_KRON4EK | ||||
|     export WINE_KRON4EK=($(curl -s "https://api.github.com/repos/Kron4ek/Wine-Builds/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)) | ||||
|     try_remove_file "${PORT_WINE_TMP_PATH}/tmp_wine_kron4ek_git" | ||||
|     if [[ ! -z "${WINE_KRON4EK}" ]] ; then | ||||
|         for PGEGIT in ${WINE_KRON4EK[@]} ; do | ||||
|             echo ${PGEGIT} | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PORT_WINE_TMP_PATH}/tmp_wine_kron4ek_git" | ||||
|         done | ||||
|         sed -i '/6.3/,$d' "${PORT_WINE_TMP_PATH}/tmp_wine_kron4ek_git" | ||||
|         sed -i '/-x86/d' "${PORT_WINE_TMP_PATH}/tmp_wine_kron4ek_git" | ||||
|     fi | ||||
|  | ||||
|     #WINE_GE_CUSTOM | ||||
|     export WINE_GE_CUSTOM=($(curl -s "https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)) | ||||
|     try_remove_file "${PORT_WINE_TMP_PATH}/tmp_wine_ge_custom_git" | ||||
|     if [[ ! -z "${WINE_GE_CUSTOM}" ]] ; then | ||||
|         for PGEGIT in ${WINE_GE_CUSTOM[@]} ; do | ||||
|             echo ${PGEGIT} | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PORT_WINE_TMP_PATH}/tmp_wine_ge_custom_git" | ||||
|         done | ||||
|         sed -i '/6.23/,$d' "${PORT_WINE_TMP_PATH}/tmp_wine_ge_custom_git" | ||||
|     fi | ||||
|  | ||||
|     #PROTON_LG | ||||
|     export PROTON_PW_GIT=($(curl -s "https://api.github.com/repos/Castro-Fidel/wine_builds/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)) | ||||
|     try_remove_file "${PORT_WINE_TMP_PATH}/tmp_proton_pw_git" | ||||
|     if [[ ! -z "${PROTON_PW_GIT}" ]] ; then | ||||
|         for PPWGIT in ${PROTON_PW_GIT[@]} ; do | ||||
|             echo ${PPWGIT} | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PORT_WINE_TMP_PATH}/tmp_proton_pw_git" | ||||
|         done | ||||
|         sed -i /${PW_WINE_LG_VER}/d "${PORT_WINE_TMP_PATH}/tmp_proton_pw_git" | ||||
|         sed -i '/plugins/d' "${PORT_WINE_TMP_PATH}/tmp_proton_pw_git" | ||||
|     fi | ||||
|     pw_stop_progress_bar | ||||
|     if [[ -z "${PROTON_GE_GIT}" ]] || [[ -z "${PROTON_PW_GIT}" ]] ; then | ||||
|         yad_error "$loc_gui_check_new_wine_error" | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
|     fi | ||||
|     for INSTALLING_VERSION_IN_DIST in `ls "${PORT_WINE_PATH}/data/dist/"` ; do | ||||
|         sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PORT_WINE_TMP_PATH}/tmp_proton_ge_git" | ||||
|         sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PORT_WINE_TMP_PATH}/tmp_proton_pw_git" | ||||
|         sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PORT_WINE_TMP_PATH}/tmp_wine_kron4ek_git" | ||||
|         sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PORT_WINE_TMP_PATH}/tmp_wine_ge_custom_git" | ||||
|     done | ||||
| 	#Installed wine | ||||
| 	ls -l ${PORT_WINE_PATH}/data/dist | awk '{print $9}' | sed '/^$/d' > ${PORT_WINE_TMP_PATH}/tmp_installed_wine | ||||
|     if [[ "$1" != "silent" ]] ; then | ||||
|         #GUI | ||||
|         export KEY_WINE=$RANDOM | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_proton_pw_set" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_kron4ek_set" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_proton_set" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_ge_custom_set" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_installed_wine_set" | ||||
|  | ||||
|         `"${pw_yad}" --plug=$KEY_WINE --tabnum=1 --list --separator="" --listen \ | ||||
|         --column "$loc_gui_set_new_wine" < "${PORT_WINE_TMP_PATH}/tmp_proton_pw_git" 1> "${PORT_WINE_TMP_PATH}/tmp_proton_pw_set" 2>/dev/null` & | ||||
|         `"${pw_yad}" --plug=$KEY_WINE --tabnum=2 --list --separator="" --listen \ | ||||
|         --column "$loc_gui_set_new_wine" < "${PORT_WINE_TMP_PATH}/tmp_wine_kron4ek_git" 1> "${PORT_WINE_TMP_PATH}/tmp_kron4ek_set" 2>/dev/null` & | ||||
|         `"${pw_yad}" --plug=$KEY_WINE --tabnum=3 --list --separator="" --listen \ | ||||
|         --column "$loc_gui_set_new_wine" < "${PORT_WINE_TMP_PATH}/tmp_proton_ge_git" 1> "${PORT_WINE_TMP_PATH}/tmp_proton_set" 2>/dev/null` & | ||||
|         `"${pw_yad}" --plug=$KEY_WINE --tabnum=4 --list --separator="" --listen \ | ||||
|         --column "$loc_gui_set_new_wine" < "${PORT_WINE_TMP_PATH}/tmp_wine_ge_custom_git" 1> "${PORT_WINE_TMP_PATH}/tmp_ge_custom_set" 2>/dev/null` & | ||||
|         `"${pw_yad}" --plug=$KEY_WINE --tabnum=5 --list --separator="" --listen \ | ||||
|         --column "$loc_gui_del_wine" < "${PORT_WINE_TMP_PATH}/tmp_installed_wine" 1> "${PORT_WINE_TMP_PATH}/tmp_installed_wine_set" 2>/dev/null` & | ||||
|         `"${pw_yad}" --key=$KEY_WINE --notebook --width=500 --height=600 --text-align=center \ | ||||
|         --window-icon="$PW_GUI_ICON_PATH/portproton.svg" --title "WINE MANAGER" --separator="" \ | ||||
|         --tab-pos=top --tab="PROTON-LG" --tab="WINE-KRON4EK"  --tab="PROTON-GE" --tab="WINE-GE-CUSTOM" --tab="$loc_gui_installed_wine" 2>/dev/null` | ||||
|         YAD_WINE_STATUS="$?" | ||||
|         if [[ "$YAD_WINE_STATUS" == "1" || "$YAD_WINE_STATUS" == "252" ]] ; then | ||||
|             export SKIP_CHECK_UPDATES=1 | ||||
|             /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|             exit 0 | ||||
|         fi | ||||
|  | ||||
|         if [ ! -z `cat "${PORT_WINE_TMP_PATH}/tmp_proton_set" | awk '{print $1}'` ] ; then | ||||
|             export VERSION_WINE_GIT="`cat "${PORT_WINE_TMP_PATH}/tmp_proton_set"`" | ||||
|         elif [ ! -z `cat "${PORT_WINE_TMP_PATH}/tmp_proton_pw_set" | awk '{print $1}'` ] ; then | ||||
|             export VERSION_WINE_GIT="`cat "${PORT_WINE_TMP_PATH}/tmp_proton_pw_set"`" | ||||
|         elif [ ! -z `cat "${PORT_WINE_TMP_PATH}/tmp_kron4ek_set" | awk '{print $1}'` ] ; then | ||||
|             export VERSION_WINE_GIT="`cat "${PORT_WINE_TMP_PATH}/tmp_kron4ek_set"`" | ||||
|         elif [ ! -z `cat "${PORT_WINE_TMP_PATH}/tmp_ge_custom_set" | awk '{print $1}'` ] ; then | ||||
|             export VERSION_WINE_GIT="`cat "${PORT_WINE_TMP_PATH}/tmp_ge_custom_set"`" | ||||
|         elif [ ! -z `cat "${PORT_WINE_TMP_PATH}/tmp_installed_wine_set" | awk '{print $1}'` ] ; then | ||||
|             export VERSION_INSTALLED_WINE="`cat "${PORT_WINE_TMP_PATH}/tmp_installed_wine_set"`" | ||||
|         else | ||||
|             print_info "Nothing to do." | ||||
|             export SKIP_CHECK_UPDATES=1 | ||||
|             /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|             exit 0 | ||||
|         fi | ||||
|  | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_proton_pw_git" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_wine_kron4ek_git" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_proton_ge_git" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_wine_ge_custom_git" | ||||
|         try_remove_file "${PORT_WINE_TMP_PATH}/tmp_installed_wine" | ||||
|  | ||||
|     elif [[ "$1" == "silent" ]] && [[ ! -z "$2" ]] ; then | ||||
|         VERSION_WINE_GIT="$2" | ||||
|     fi | ||||
|  | ||||
|     for GIVE_WINE_URL in ${PROTON_GE_GIT[@]} ${PROTON_PW_GIT[@]} ${WINE_KRON4EK[@]} ${WINE_GE_CUSTOM[@]} ; do | ||||
|         if [ ! -z `echo ${GIVE_WINE_URL} | grep -i "${VERSION_WINE_GIT}"` ] ; then | ||||
|             export URL_VERSION_PROTON_GIT="${GIVE_WINE_URL}" | ||||
|             break | ||||
|         fi | ||||
|     done | ||||
|  | ||||
| 	if [[ ! -z "${VERSION_INSTALLED_WINE}" ]]; then | ||||
| 		try_remove_dir "${PORT_WINE_PATH}/data/dist/${VERSION_INSTALLED_WINE}" | ||||
| 		unset VERSION_INSTALLED_WINE | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
| 	fi | ||||
|  | ||||
|     print_info "Download and install ${VERSION_WINE_GIT}..." | ||||
|     PW_WINE_ARCHIVE="$(echo ${URL_VERSION_PROTON_GIT} | awk -F'/' '{print $NF}' | awk -F'.tar' '{print $1}')" | ||||
|     if try_download_to_path "${URL_VERSION_PROTON_GIT}" "${PORT_WINE_PATH}/data/tmp/" ; then | ||||
|         for archive_type in "gz" "xz" ; do | ||||
|             if [ -f "${PORT_WINE_PATH}/data/tmp/${PW_WINE_ARCHIVE}.tar.${archive_type}" ] ; then | ||||
|                 if unpack_tar_${archive_type} "${PORT_WINE_PATH}/data/tmp/${PW_WINE_ARCHIVE}.tar.${archive_type}" "${PORT_WINE_PATH}/data/dist/" ; then | ||||
|                     try_remove_file "${PORT_WINE_PATH}/data/tmp/${PW_WINE_ARCHIVE}.tar.${archive_type}" | ||||
|                     if [ ! -z "${portwine_exe}" ]; then | ||||
|                         PW_WINE_USE="$(echo ${VERSION_WINE_GIT} | tr [[:lower:]] [[:upper:]])" | ||||
|                         edit_db_from_gui PW_WINE_USE | ||||
|                     fi | ||||
|                 else | ||||
|                     try_remove_file "${PORT_WINE_PATH}/data/tmp/${PW_WINE_ARCHIVE}.tar.${archive_type}" | ||||
|                     try_remove_dir "${PORT_WINE_PATH}/data/dist/${PW_WINE_ARCHIVE}" | ||||
|                     yad_error_download && gui_proton_downloader || exit 1 | ||||
|                 fi | ||||
|             fi | ||||
|         done | ||||
|     else | ||||
|         yad_error_download && gui_proton_downloader || exit 1 | ||||
|     fi | ||||
|  | ||||
|     if [[ "$1" != "silent" ]] ; then | ||||
|         export SKIP_CHECK_UPDATES=1 | ||||
|         edit_db_from_gui | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
|     else | ||||
|         init_wine_ver | ||||
|     fi | ||||
| } | ||||
| export -f gui_proton_downloader | ||||
|  | ||||
| gui_vkBasalt () { | ||||
|     KEY_FX_GUI=$RANDOM | ||||
|     FILE_VKBASALT_CONF="${PORT_WINE_PATH}/data/vkBasalt.conf" | ||||
|     LIST_FX=(`grep -E '.fx$|.fxh$' "${FILE_VKBASALT_CONF}" | awk '{print $1}'`) | ||||
|     GET_FX_IN_FILE=(`echo ${PW_VKBASALT_EFFECTS} | sed s/"cas:"// | sed s/":"/" "/g`) | ||||
|     unset ADD_GUI_FX GUI_FX_RESULT | ||||
|     for add_list_fx in ${LIST_FX[@]} ; do | ||||
|         PW_VKBASALT_GUI_HELP="PW_${add_list_fx}_INFO" | ||||
|         if [[ ! -z `echo " ${GET_FX_IN_FILE[@]} " | grep " ${add_list_fx} "` ]] ; then | ||||
|             ADD_GUI_FX+="--field=$add_list_fx!${!PW_VKBASALT_GUI_HELP}:CHK%TRUE%" | ||||
|         else | ||||
|             ADD_GUI_FX+="--field=$add_list_fx!${!PW_VKBASALT_GUI_HELP}:CHK%FALSE%" | ||||
|         fi | ||||
|     done | ||||
|     if [[ ! -z "${PW_VKBASALT_FFX_CAS}" ]] ; then | ||||
|         if [[ "$PW_VKBASALT_FFX_CAS" == "0" ]] | ||||
|         then export VKBASALT_FFX_CAS_GUI="0" | ||||
|         elif [[ "$PW_VKBASALT_FFX_CAS" == "1" ]] | ||||
|         then export VKBASALT_FFX_CAS_GUI="100" | ||||
|         elif [[ "$PW_VKBASALT_FFX_CAS" == 0.0* ]] | ||||
|         then export VKBASALT_FFX_CAS_GUI="$(echo "$PW_VKBASALT_FFX_CAS" | awk -F'0.0' '{print $2}')" | ||||
|         else export VKBASALT_FFX_CAS_GUI="$(echo "$PW_VKBASALT_FFX_CAS" | awk -F'0.' '{print $2}')" | ||||
|         fi | ||||
|     else | ||||
|         VKBASALT_FFX_CAS_GUI=66 | ||||
|     fi | ||||
|     export old_IFS=$IFS | ||||
|     export IFS="%" | ||||
|     "${pw_yad_v12_3}" --plug=$KEY_FX_GUI --tabnum="1" --form --columns=5 --separator=" " \ | ||||
|     --text-align=center --text="$loc_gui_vkbasalt_top" \ | ||||
|     ${ADD_GUI_FX} 1> "${PORT_WINE_TMP_PATH}/tmp_yad_basalt_set" 2>/dev/null & | ||||
|     export IFS="${old_IFS}" | ||||
|  | ||||
|     "${pw_yad_v12_3}" --plug=$KEY_FX_GUI --tabnum="2" --separator=" " --form \ | ||||
|     --field="AMD FidelityFX - Contrast Adaptive Sharpening"!"$loc_gui_ffx_cas":SCL "${VKBASALT_FFX_CAS_GUI}" \ | ||||
|     1> "${PORT_WINE_TMP_PATH}/tmp_yad_cas_set" 2>/dev/null & | ||||
|  | ||||
|     "${pw_yad_v12_3}" --paned --key="$KEY_FX_GUI" --height="650" --title="vkBasalt" --center --borders=${YAD_BORDERS} \ | ||||
|     --separator=" " --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
|     --button="$loc_gui_cancel"!!"$loc_gui_cancel_help":1 \ | ||||
|     --button="$loc_gui_disabled_vkbas"!!"$loc_gui_disabled_vkbas_help":180 \ | ||||
|     --button="$loc_gui_save_changes"!!"$loc_gui_save_changes_help":182 2>/dev/null | ||||
|     YAD_VKBASALT_STATUS="$?" | ||||
|     case "${YAD_VKBASALT_STATUS}" in | ||||
|         1|252) | ||||
|             export SKIP_CHECK_UPDATES=1 | ||||
|             /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|             exit 0 ;; | ||||
|         180) | ||||
|             export ENABLE_VKBASALT=0 ;; | ||||
|         182) | ||||
|             export ENABLE_VKBASALT=1 ;; | ||||
|     esac | ||||
|     YAD_BASALT_SET=`cat "${PORT_WINE_TMP_PATH}/tmp_yad_basalt_set"` | ||||
|     YAD_CAS_SET=`cat "${PORT_WINE_TMP_PATH}/tmp_yad_cas_set" | sed s/" "//g` | ||||
|  | ||||
|     INT_COUNT_FX=0 | ||||
|     for read_list_fx in ${YAD_BASALT_SET} ; do | ||||
|         if [[ "$read_list_fx" == "TRUE" ]] ; then | ||||
|             export GUI_FX_RESULT+="${LIST_FX[$INT_COUNT_FX]}:" | ||||
|         fi | ||||
|         ((INT_COUNT_FX++)) | ||||
|     done | ||||
|     GUI_FX_RESULT="${GUI_FX_RESULT}cas" | ||||
|     export PW_VKBASALT_EFFECTS="${GUI_FX_RESULT}" | ||||
|  | ||||
|     if [[ "$YAD_CAS_SET" == "0" ]] | ||||
|     then export PW_VKBASALT_FFX_CAS="0" | ||||
|     elif [[ "$YAD_CAS_SET" == "100" ]] | ||||
|     then export PW_VKBASALT_FFX_CAS="1" | ||||
|     elif [[ "$YAD_CAS_SET" -lt 10 ]] | ||||
|     then export PW_VKBASALT_FFX_CAS="0.0$YAD_CAS_SET" | ||||
|     else export PW_VKBASALT_FFX_CAS="0.$YAD_CAS_SET" | ||||
|     fi | ||||
|     edit_db_from_gui PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS ENABLE_VKBASALT | ||||
|     export SKIP_CHECK_UPDATES=1 | ||||
|     /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|     exit 0 | ||||
| } | ||||
|  | ||||
| gui_MangoHud () { | ||||
|     KEY_MH_GUI=$RANDOM | ||||
|     LIST_MH=( | ||||
|         arch battery battery_icon battery_time battery_watt core_bars core_load | ||||
|         cpu_mhz cpu_power cpu_temp device_battery_icon engine_short_names | ||||
|         engine_version exec_name fcat fps_metrics frame_count frametime full | ||||
|         gamemode gpu_core_clock gpu_fan gpu_junction_temp gpu_mem_clock | ||||
|         gpu_mem_temp gpu_name gpu_power gpu_temp gpu_voltage histogram horizontal | ||||
|         horizontal_stretch hud_compact hud_no_margin io_read io_write no_display | ||||
|         no_small_font procmem procmem_shared procmem_virt ram resolution | ||||
|         show_fps_limit swap temp_fahrenheit throttling_status throttling_status_graph | ||||
|         time version vkbasalt vram vulkan_driver wine | ||||
|     ) | ||||
|     # fps_only | ||||
|      | ||||
|     unset ADD_GUI_MH GUI_MH_RESULT | ||||
|  | ||||
|     GET_REFRESH_RATE="30!45!60!75!120!144!165!240" | ||||
|  | ||||
|     if [[ -z "$FPS_LIMIT" ]]; then | ||||
|         FPS_LIMIT_VAR="disabled" | ||||
|     else | ||||
|         FPS_LIMIT_VAR="${FPS_LIMIT}" | ||||
|     fi | ||||
|  | ||||
|     if [ -n "$MANGOHUD_CONFIG" ]; then | ||||
|         PW_MANGOHUD_CONFIG=($(echo "$MANGOHUD_CONFIG" | tr ',' '\n' | grep -v '=')) | ||||
|     else | ||||
|         PW_MANGOHUD_CONFIG=($(echo "$DEFAULT_MANGOHUD_CONFIG" | tr ',' '\n' | grep -v '=')) | ||||
|     fi | ||||
|  | ||||
|     for add_list_mh in "${LIST_MH[@]}"; do | ||||
|         PW_MH_GUI_HELP="PW_MH_${add_list_mh}_INFO" | ||||
|         if [[ -n "$(grep -wo "$add_list_mh" <<<"${PW_MANGOHUD_CONFIG[@]}")" ]]; then | ||||
|             ADD_GUI_MH+="--field=  $add_list_mh  !${!PW_MH_GUI_HELP}:CHK%TRUE%" | ||||
|         else | ||||
|             ADD_GUI_MH+="--field=  $add_list_mh  !${!PW_MH_GUI_HELP}:CHK%FALSE%" | ||||
|         fi | ||||
|     done | ||||
|  | ||||
|     export old_IFS=$IFS | ||||
|     export IFS="%" | ||||
|     "${pw_yad_v12_3}" --plug=$KEY_MH_GUI --tabnum="1" --form --columns=5 --separator=" " \ | ||||
|         --text-align=center --text="$loc_gui_mh_top" \ | ||||
|         ${ADD_GUI_MH} 1> "${PORT_WINE_TMP_PATH}/tmp_yad_mh_set" 2>/dev/null & | ||||
|     export IFS="${old_IFS}" | ||||
|  | ||||
|     "${pw_yad_v12_3}" --plug=$KEY_MH_GUI --tabnum="2" --separator=" " --form \ | ||||
|         --field="${loc_gui_mango_fps}!${loc_gui_mango_fps_help} :CB" "${FPS_LIMIT_VAR}!disabled!${GET_REFRESH_RATE}" \ | ||||
|         1> "${PORT_WINE_TMP_PATH}/tmp_yad_mh_fps_limit" 2>/dev/null & | ||||
|  | ||||
|     "${pw_yad_v12_3}" --paned --key="$KEY_MH_GUI" --height="650" --title="MangoHud" --center --borders=${YAD_BORDERS} \ | ||||
|         --separator=" " --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
|         --button="$loc_gui_cancel"!!"$loc_gui_cancel_help":1 \ | ||||
|         --button="$loc_gui_disabled_mh"!!"$loc_gui_disabled_mh_help":182 \ | ||||
|         --button="$loc_gui_save_changes"!!"$loc_gui_save_changes_help":184 2>/dev/null | ||||
|     YAD_MANGOHUD_STATUS="$?" | ||||
|  | ||||
|     case "${YAD_MANGOHUD_STATUS}" in | ||||
|         1 | 252) | ||||
|             export SKIP_CHECK_UPDATES=1 | ||||
|             /usr/bin/env bash -c "${pw_full_command_line[*]}" & | ||||
|             exit 0 | ||||
|             ;; | ||||
|         182) | ||||
|             export PW_MANGOHUD=0 | ||||
|             export FPS_LIMIT="disabled" | ||||
|             edit_db_from_gui PW_MANGOHUD FPS_LIMIT | ||||
|             export SKIP_CHECK_UPDATES=1 | ||||
|             /usr/bin/env bash -c "${pw_full_command_line[*]}" & | ||||
|             exit 0 | ||||
|             ;; | ||||
|         184) | ||||
|             export PW_MANGOHUD=1 | ||||
|             ;; | ||||
|     esac | ||||
|  | ||||
|     YAD_MH_SET=$(<"${PORT_WINE_TMP_PATH}/tmp_yad_mh_set") | ||||
|     FPS_LIMIT=$(cat "${PORT_WINE_TMP_PATH}/tmp_yad_mh_fps_limit" | awk '{print $1}') | ||||
|  | ||||
|     MONITOR_HEIGHT="$(echo $PW_SCREEN_RESOLUTION | awk -F'x' '{print $2}')" | ||||
|     MH_FONT_SIZE="font_size=$(( MONITOR_HEIGHT / 45 ))" | ||||
|  | ||||
|  | ||||
|     export INT_COUNT_MH=0 | ||||
|     for read_list_mh in ${YAD_MH_SET} ; do | ||||
|         if [[ "$read_list_mh" == "TRUE" ]] | ||||
|         then export GUI_MH_RESULT+="${LIST_MH[$INT_COUNT_MH]}," | ||||
|         fi | ||||
|         ((INT_COUNT_MH++)) | ||||
|     done | ||||
|  | ||||
|     if [[ -n "$MH_FONT_SIZE" ]] | ||||
|     then GUI_MH_RESULT="${GUI_MH_RESULT}${MH_FONT_SIZE}" | ||||
|     else GUI_MH_RESULT="${GUI_MH_RESULT%,}" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${FPS_LIMIT}" != "disabled" ]] ; then | ||||
|         export GUI_MH_RESULT=${GUI_MH_RESULT},fps_limit=${FPS_LIMIT} | ||||
|         export PW_MANGOHUD=1 | ||||
|     elif [[ "${FPS_LIMIT}" == "disabled" ]] | ||||
|     then export GUI_MH_RESULT="$(echo ${GUI_MH_RESULT} | sed "s/,fps_limit=${FPS_LIMIT_VAR}//" | sed "s/,fps_limit=disabled//")" | ||||
|     fi | ||||
|  | ||||
|     if [[ "${GUI_MH_RESULT}" =~ "fps_only" ]]; then | ||||
|         export GUI_MH_RESULT="fps_only" | ||||
|         print_info "In the MangoHud config fps_only is detected all settings are reseted" | ||||
|     fi | ||||
|      | ||||
|     export MANGOHUD_CONFIG="${GUI_MH_RESULT}" | ||||
|  | ||||
|     edit_db_from_gui MANGOHUD_CONFIG PW_MANGOHUD FPS_LIMIT | ||||
|     export SKIP_CHECK_UPDATES=1 | ||||
|     /usr/bin/env bash -c "${pw_full_command_line[*]}" & | ||||
|     exit 0 | ||||
| } | ||||
|  | ||||
| portwine_create_shortcut () { | ||||
|     pw_create_gui_png | ||||
|     pw_stop_progress_bar | ||||
|  | ||||
|     if [[ "$1" == "block_name" ]] ; then | ||||
|         export name_desktop="${PORTPROTON_NAME}" | ||||
|         OUTPUT=$("${pw_yad}" --title="${inst_set}." --form --borders=${YAD_BORDERS} \ | ||||
|         --window-icon "$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
|         --image "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" \ | ||||
|         --field="${sc_info}":LBL "" \ | ||||
|         --field="  ${name_desktop}":LBL "" \ | ||||
|         --field="  ${sc_menu_desktop}":CHK "TRUE" \ | ||||
|         --field="  ${sc_desktop_desktop}":CHK "TRUE" \ | ||||
|         --field="  ${sc_add_in_steam}":CHK "FALSE" \ | ||||
|         --button="$loc_gui_create_shortcut":0) | ||||
|         PW_YAD_OUT=$? | ||||
|     else | ||||
|         export name_desktop="${PORTPROTON_NAME}" | ||||
|         OUTPUT=$("${pw_yad}" --title="${inst_set}." --form --borders=${YAD_BORDERS} \ | ||||
|         --window-icon "$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
|         --image "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" \ | ||||
|         --field="${sc_info}":LBL "" \ | ||||
|         --field="${sc_name}:" "${name_desktop}" \ | ||||
|         --field="  ${sc_menu_desktop}":CHK "TRUE" \ | ||||
|         --field="  ${sc_desktop_desktop}":CHK "TRUE" \ | ||||
|         --field="  ${sc_add_in_steam}":CHK "FALSE" \ | ||||
|         --button="$loc_gui_create_shortcut":0) | ||||
|         PW_YAD_OUT=$? | ||||
|     fi | ||||
|  | ||||
|     if [[ "$PW_YAD_OUT" == "0" ]] ; then | ||||
|         if [[ "$1" == "block_name" ]] | ||||
|         then name_desktop="$PORTWINE_CREATE_SHORTCUT_NAME" | ||||
|         else name_desktop=$(echo "$OUTPUT" | awk -F'|' '{print $2}') | ||||
|         fi | ||||
|         create_menu_desktop_shortcut=$(echo "$OUTPUT" | awk -F'|' '{print $3}') | ||||
|         create_desktop_desktop_shortcut=$(echo "$OUTPUT" | awk -F'|' '{print $4}') | ||||
|         create_menu_steam_shortcut=$(echo "$OUTPUT" | awk -F'|' '{print $5}') | ||||
|  | ||||
|         try_remove_file "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|  | ||||
|         if [[ "${PORTPROTON_NAME}" != "${name_desktop}" ]] | ||||
|         then mv -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" "${PORT_WINE_PATH}/data/img/${name_desktop}.png" | ||||
|         fi | ||||
|  | ||||
|         echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         echo "Name=${name_desktop}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         if  grep -i "flatpak" /etc/os-release &>/dev/null | ||||
|         then echo "Exec=flatpak run com.castrofidel.portproton \"${portwine_exe}\" " >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         else echo "Exec=env "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" "" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         fi | ||||
|         echo "Type=Application" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         echo "Categories=Game" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         echo "StartupNotify=true" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         echo "Path="${PORT_SCRIPTS_PATH}/"" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         echo "Icon="${PORT_WINE_PATH}/data/img/${name_desktop}.png"" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|         chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|  | ||||
|         if [[ "${create_menu_desktop_shortcut}" == "TRUE" ]] ; then | ||||
|             try_remove_file "${HOME}/.local/share/applications/${name_desktop}.desktop" | ||||
|             cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "${HOME}/.local/share/applications/" | ||||
|         fi | ||||
|  | ||||
|         if [[ "${create_desktop_desktop_shortcut}" == "TRUE" ]] ; then | ||||
|             if [[ -d "${HOME}/Desktop" ]] ; then | ||||
|                 cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "${HOME}/Desktop/" | ||||
|             elif [[ -d "${HOME}/Рабочий стол" ]] ; then | ||||
|                 cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "${HOME}/Рабочий стол/" | ||||
|             elif [[ $(xdg-user-dir DESKTOP) ]] ; then | ||||
|                 cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "$(xdg-user-dir DESKTOP)" | ||||
|             fi | ||||
|         fi | ||||
|  | ||||
|         if [[ "${create_menu_steam_shortcut}" == "TRUE" ]] ; then | ||||
|             export STEAM_SCRIPTS="${PORT_WINE_PATH}/steam_scripts" | ||||
|             create_new_dir "${STEAM_SCRIPTS}" | ||||
|             echo "#!/usr/bin/env bash" > "${STEAM_SCRIPTS}/${name_desktop}.sh" | ||||
|             echo "export START_FROM_STEAM=1" >> "${STEAM_SCRIPTS}/${name_desktop}.sh" | ||||
|             echo "export LD_PRELOAD=" >> "${STEAM_SCRIPTS}/${name_desktop}.sh" | ||||
|             if grep -i "flatpak" /etc/os-release &>/dev/null | ||||
|             then echo "flatpak run com.castrofidel.portproton \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh" | ||||
|             else echo "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${portwine_exe}\" " >> "${STEAM_SCRIPTS}/${name_desktop}.sh" | ||||
|             fi | ||||
|             chmod u+x "${STEAM_SCRIPTS}/${name_desktop}.sh" | ||||
|             export SCVDF="shortcuts.vdf" | ||||
|             for STUIDPATH in "${HOME}"/.local/share/Steam/userdata/*/ ; do | ||||
|                 create_new_dir "${STUIDPATH}/config/" | ||||
|                 export SCPATH="${STUIDPATH}/config/$SCVDF" | ||||
|                 "${PORT_SCRIPTS_PATH}/add_in_steam.sh" | ||||
|             done | ||||
|             if [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && pgrep -i steam &>/dev/null ; then | ||||
|                 if yad_question "$sc_restert_steam" ; then | ||||
|                     pw_start_progress_bar_block "Restarting STEAM... Please wait." | ||||
|                     kill -s SIGTERM $(pgrep -a steam) &>/dev/null | ||||
|                     while pgrep -i steam &>/dev/null ; do | ||||
|                         sleep 0.5 | ||||
|                     done | ||||
|                     steam & | ||||
|                     sleep 5 | ||||
|                     pw_stop_progress_bar | ||||
|                     exit 0 | ||||
|                 fi | ||||
|             fi | ||||
|             unset PW_SKIP_RESTART_STEAM | ||||
|         fi | ||||
|          | ||||
|         [[ "$1" != silent ]] && [[ "${PW_SKIP_RESTART_STEAM}" != 1 ]] && "${PORT_WINE_PATH}" 2>1 >/dev/null & | ||||
|     fi | ||||
| } | ||||
|  | ||||
| portwine_delete_shortcut () { | ||||
|     rm -f "$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop)" &>/dev/null | ||||
|     rm -f "$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop)" &>/dev/null | ||||
|     # rm -f "$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh)" &>/dev/null | ||||
|     if [[ -d "${HOME}/Desktop" ]] ; then | ||||
|         rm -f "$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop)" &>/dev/null | ||||
|     elif [[ -d "${HOME}/Рабочий стол" ]] ; then | ||||
|         rm -f "$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop)" &>/dev/null | ||||
|     elif [[ $(xdg-user-dir DESKTOP) ]] ; then | ||||
|         rm -f "$(grep -il "${portwine_exe}" "$(xdg-user-dir DESKTOP)"/*.desktop)" &>/dev/null | ||||
|     fi | ||||
| } | ||||
|  | ||||
| portwine_missing_shortcut () { | ||||
|     "${pw_yad}" --title="${loc_gui_error}." --form --borders=${YAD_BORDERS} \ | ||||
|     --window-icon "$PW_GUI_ICON_PATH/portproton.svg" \ | ||||
|     --image "$PW_GUI_ICON_PATH/error_file.png" \ | ||||
|     --text "$loc_gui_missing_shortcut" \ | ||||
|     --button="$loc_gui_delete_shortcut":0 \ | ||||
|     --button="$loc_cancel":1 | ||||
|     if [ $? -eq "0" ] ; then | ||||
|         portwine_delete_shortcut | ||||
|     fi | ||||
|     exit 0 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user