forked from CastroFidel/PortWINE
		
	Global changes for PortProton and add use DATABASE
This commit is contained in:
		| @@ -1,49 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| ######################################################################## | ||||
| if [ ! -z "$1" ]; then | ||||
|     PORTPROTON_EXE="$1" | ||||
| else | ||||
|     PORTPROTON_EXE=$(zenity --file-selection --file-filter=""*.exe" "*.bat"" \ | ||||
|     --title="${sc_path}" --filename="${PORT_WINE_PATH}/data/pfx/drive_c/") | ||||
|     if [ $? -eq 1 ];then exit 1; fi | ||||
| fi | ||||
| PORTPROTON_NAME="$(basename "${PORTPROTON_EXE}" | sed s/".exe"/""/g )" | ||||
| PORTPROTON_PATH="$( cd "$( dirname "${PORTPROTON_EXE}" )" >/dev/null 2>&1 && pwd )"  | ||||
| if [ -x "`which wrestool 2>/dev/null`" ]; then | ||||
|     wrestool -x --output="${PORTPROTON_PATH}/" -t14 "${PORTPROTON_EXE}" | ||||
|     cp "$(ls -S -1 "${PORTPROTON_EXE}"*".ico"  | head -n 1)" "${PORTPROTON_EXE}.ico" | ||||
|     cp -f "${PORTPROTON_EXE}.ico" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.ico" | ||||
| fi | ||||
| PORTPROTON_CMD="" | ||||
| # PORTPROTON_CMD=$(zenity --entry --text "${sc_cmd}") | ||||
| # if [ $? -eq 1 ];then exit 1; fi | ||||
| start_settings=`zenity --title  "${ss_title}" --text "${ss_text}" --list --radiolist \ | ||||
| --column="${inst_set}" --column "${ss_ver}" --column "${ss_dr}"  --width=500 --height=220 \ | ||||
| TRUE "DXVK" "${ss_ogl_3}" \ | ||||
| FALSE "VKD3D and OpenGL" "${ss_ogl_2}" ` | ||||
| if [ $? -eq 1 ];then exit 1; fi | ||||
| case $start_settings in | ||||
| "VKD3D and OpenGL")  | ||||
|         dxvk_ogl_var="off" ;; | ||||
| "DXVK")  | ||||
|         dxvk_ogl_var="0" ;; | ||||
| esac   | ||||
| ######################################################################## | ||||
| name_desktop="${PORTPROTON_NAME}"  | ||||
| echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| echo "Name=${PORTPROTON_NAME}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"  | ||||
| echo "Exec="env dxvk_ogl_var=$dxvk_ogl_var launch_parameters=\""${PORTPROTON_CMD}"\" PATH_TO_GAME=\""$PORTPROTON_PATH"\" sh \"${PORT_SCRIPTS_PATH}/start\" \"${PORTPROTON_EXE}\" "" \ | ||||
| >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 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/${PORTPROTON_NAME}.ico"" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| ######################################################################## | ||||
| `zenity --question --title "${inst_set}." --text "${ss_done}" --no-wrap ` > /dev/null 2>&1   | ||||
| if [ $? -eq "0" ]; then | ||||
| 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" /home/${USER}/.local/share/applications/  | ||||
| fi | ||||
| @@ -1,95 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| KILL_PORTWINE | ||||
| export PW_USE_TERMINAL=1 | ||||
| START_PORTWINE | ||||
| echo "${port_deb1}" > "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "${port_deb2}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "--------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "GLIBC version:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "echo $(ldd --version)" | grep ldd >> "${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 "var_dxvk_on = ${var_dxvk_on}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| 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" | ||||
| lsb_release -d | sed s/Description/ОС/g >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "--------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "Desktop Environment" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "$DESKTOP_SESSION" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "${XDG_CURRENT_DESKTOP}" >> "${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" | ||||
| cat /proc/cpuinfo | grep "model name" >> "${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" | ||||
| "${WINELIB}/amd64/usr/bin/glxinfo" -B >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "----------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "Vulkan info device name:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| "${WINELIB}/amd64/usr/bin/vulkaninfo" | grep deviceName >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| "${WINELIB}/amd64/usr/bin/vkcube" --c 50  | ||||
| if [ $? -eq 0 ]; then  | ||||
| 	echo "Vulkan cube test passed successfully" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| else | ||||
| 	echo "Vkcube test completed with error" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| fi | ||||
| echo "---------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| if [ ! -x "`which gamemoderun 2>/dev/null`" ] | ||||
| then | ||||
| 	echo "!!!gamemod not found!!!"  >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| fi | ||||
| echo "--------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "Version WINE in the Port" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| "$WINELOADER" --version 2>&1 | tee -a "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "-------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "log WINE:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|  | ||||
| export PW_LOG=1 | ||||
| export DXVK_HUD="full" | ||||
| export PW_WINEDBG_DISABLE=0 | ||||
|  | ||||
| PW_XTERM="${WINELIB}/amd64/usr/bin/xterm -l -lf ${PORT_WINE_PATH}/${portname}.log.wine -geometry 159x37 -e" | ||||
|  | ||||
| if [ -f "${PORT_WINE_PATH}/${portname}.log.wine" ]; then | ||||
| 	rm -f "${PORT_WINE_PATH}/${portname}.log.wine" | ||||
| fi | ||||
| if [ ! -z "${gamename}" ]; then | ||||
| 	if [ ! -z ${optirun_on} ] | ||||
| 	then | ||||
| 		${PW_XTERM} "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "${gamestart}" ${launch_parameters} 2>&1 & | ||||
| 	else | ||||
| 		${PW_XTERM} "${PW_RUNTIME}" "${port_on_run}" "run" "${gamestart}" ${launch_parameters} 2>&1 & | ||||
| 	fi | ||||
| else | ||||
| 	if [ ! -z ${optirun_on} ] | ||||
| 	then | ||||
| 		${PW_XTERM} "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" explorer 2>&1 & | ||||
| 	else | ||||
| 		${PW_XTERM} "${PW_RUNTIME}" "${port_on_run}" "run" explorer 2>&1 & | ||||
| 	fi | ||||
| fi  | ||||
| zenity --info --title "DEBUG" --text "${port_debug}" --no-wrap && "${WINESERVER}" -k | ||||
| STOP_PORTWINE | sszen | ||||
| cat "${PORT_WINE_PATH}/${portname}.log.wine" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| rm -f "${PORT_WINE_PATH}/${portname}.log.wine" | ||||
| deb_text=$(cat "${PORT_WINE_PATH}/${portname}.log"  | awk '! a[$0]++')  | ||||
| echo "$deb_text" > "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "$deb_text" | zenity --text-info --editable \ | ||||
| --width=800 --height=600 \ | ||||
| --title="${portname}.log" | ||||
| @@ -15,7 +15,8 @@ then | ||||
| 	export ss_ver="Версия?" | ||||
| 	export ss_default_1="Cтандартный запуск" | ||||
| 	export ss_default_2="Старый запуск, с вопросами и логами" | ||||
| 	export ss_ogl_2="Использовать OpenGL и VKD3D. (DX9-DX11 в OpenGL и DX12 в vulkan)" | ||||
| 	export ss_ogl_1="Использовать OpenGL. (DirectX в OpenGL)" | ||||
| 	export ss_ogl_2="Использовать VKD3D. ( DX12 в vulkan)" | ||||
| 	export ss_ogl_3="Использовать DXVK и D9VK. (DX9-DX11 в Vulkan и выключить DX12)" | ||||
| 	export ss_done="Ярлык создан в корневом каталоге порта.\nДобавить его в МЕНЮ -> ИГРЫ?"  | ||||
|  | ||||
| @@ -89,7 +90,8 @@ then | ||||
| 	export ss_ver="Version:" | ||||
| 	export ss_default_1="Standard start" | ||||
| 	export ss_default_2="Old startup, with questions and logs" | ||||
| 	export ss_ogl_2="Use OpenGL and VKD3D. (DX9-DX11 to OpenGL and DX12 to vulkan)" | ||||
| 	export ss_ogl_1="Use OpenGL. (DirectX to OpenGL)" | ||||
| 	export ss_ogl_2="Use VKD3D. (DX12 to vulkan)" | ||||
| 	export ss_ogl_3="Use DXVK and D9VK. (DX9-DX11 to Vulkan)"  | ||||
| 	export ss_done="The shortcut was created in the ${portname} directory.\nAdd it to MENU -> GAMES?"  | ||||
|  | ||||
|   | ||||
							
								
								
									
										444
									
								
								data_from_portwine/scripts/port_on
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										444
									
								
								data_from_portwine/scripts/port_on
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,444 @@ | ||||
| #!/usr/bin/env python3 | ||||
|  | ||||
| #script to launch Wine with the correct environment | ||||
|  | ||||
| import fcntl | ||||
| import array | ||||
| import filecmp | ||||
| import fnmatch | ||||
| import json | ||||
| import os | ||||
| import os.path | ||||
| import shutil | ||||
| import errno | ||||
| import stat | ||||
| import subprocess | ||||
| import sys | ||||
| import tarfile | ||||
|  | ||||
| #To enable debug logging, copy "user_settings.sample.py" to "user_settings.py" | ||||
| #and edit it if needed. | ||||
|  | ||||
| PFX="Proton: " | ||||
| ld_path_var = "LD_LIBRARY_PATH" | ||||
|  | ||||
| def nonzero(s): | ||||
|     return len(s) > 0 and s != "0" | ||||
|  | ||||
| def log(msg): | ||||
|     sys.stderr.write(PFX + msg + os.linesep) | ||||
|     sys.stderr.flush() | ||||
|  | ||||
| def makedirs(path): | ||||
|     try: | ||||
|         os.makedirs(path) | ||||
|     except OSError: | ||||
|         #already exists | ||||
|         pass | ||||
|  | ||||
| def try_copy(src, dst, add_write_perm=True): | ||||
|     try: | ||||
|         if os.path.isdir(dst): | ||||
|             dstfile = dst + "/" + os.path.basename(src) | ||||
|             if os.path.lexists(dstfile): | ||||
|                 os.remove(dstfile) | ||||
|         else: | ||||
|             dstfile = dst | ||||
|             if os.path.lexists(dst): | ||||
|                 os.remove(dst) | ||||
|  | ||||
|         shutil.copy(src, dst) | ||||
|  | ||||
|         if add_write_perm: | ||||
|             new_mode = os.lstat(dstfile).st_mode | stat.S_IWUSR | stat.S_IWGRP | ||||
|             os.chmod(dstfile, new_mode) | ||||
|  | ||||
|     except PermissionError as e: | ||||
|         if e.errno == errno.EPERM: | ||||
|             #be forgiving about permissions errors; if it's a real problem, things will explode later anyway | ||||
|             log('Error while copying to \"' + dst + '\": ' + e.strerror) | ||||
|         else: | ||||
|             raise | ||||
|  | ||||
| def try_copyfile(src, dst): | ||||
|     try: | ||||
|         if os.path.isdir(dst): | ||||
|             dstfile = dst + "/" + os.path.basename(src) | ||||
|             if os.path.lexists(dstfile): | ||||
|                 os.remove(dstfile) | ||||
|         elif os.path.lexists(dst): | ||||
|             os.remove(dst) | ||||
|         shutil.copyfile(src, dst) | ||||
|     except PermissionError as e: | ||||
|         if e.errno == errno.EPERM: | ||||
|             #be forgiving about permissions errors; if it's a real problem, things will explode later anyway | ||||
|             log('Error while copying to \"' + dst + '\": ' + e.strerror) | ||||
|         else: | ||||
|             raise | ||||
|  | ||||
| def getmtimestr(*path_fragments): | ||||
|     path = os.path.join(*path_fragments) | ||||
|     try: | ||||
|         return str(os.path.getmtime(path)) | ||||
|     except IOError: | ||||
|         return "0" | ||||
|  | ||||
| class Proton: | ||||
|     def __init__(self, base_dir): | ||||
|         self.base_dir = os.environ["PW_COMPAT_DATA_PATH"] | ||||
|         self.dist_dir = os.environ["WINEDIR"] | ||||
|         self.bin_dir = self.dist_dir + "/bin/" | ||||
|         self.lib_dir = self.dist_dir + "/lib/" | ||||
|         self.lib64_dir = self.dist_dir + "/lib64/" | ||||
|         self.fonts_dir = self.dist_dir + "/share/fonts/" | ||||
|         self.wine_bin = self.bin_dir + "/wine" | ||||
|         self.wineserver_bin = self.bin_dir + "/wineserver" | ||||
|         self.gamemoderun = "gamemoderun" | ||||
|         self.pw_launch_parameters = os.environ["LAUNCH_PARAMETERS"] | ||||
|  | ||||
|     def path(self, d): | ||||
|         return self.base_dir + d | ||||
|  | ||||
| class CompatData: | ||||
|     def __init__(self, compatdata): | ||||
|         self.base_dir = os.environ["PW_COMPAT_DATA_PATH"] | ||||
|         self.prefix_dir = self.path("pfx/") | ||||
|  | ||||
|     def path(self, d): | ||||
|         return self.base_dir + d | ||||
|  | ||||
|     def create_fonts_symlinks(self): | ||||
|         fontsmap = [ | ||||
|             ( "LiberationSans-Regular.ttf", "arial.ttf" ), | ||||
|             ( "LiberationSans-Bold.ttf", "arialbd.ttf" ), | ||||
|             ( "LiberationSerif-Regular.ttf", "times.ttf" ), | ||||
|             ( "LiberationMono-Regular.ttf", "cour.ttf" ), | ||||
|             ( "SourceHanSansSCRegular.otf", "msyh.ttf" ), | ||||
|         ] | ||||
|  | ||||
|         windowsfonts = self.prefix_dir + "/drive_c/windows/Fonts" | ||||
|         makedirs(windowsfonts) | ||||
|         for p in fontsmap: | ||||
|             lname = os.path.join(windowsfonts, p[1]) | ||||
|             fname = os.path.join(g_proton.fonts_dir, p[0]) | ||||
|             if os.path.lexists(lname): | ||||
|                 if os.path.islink(lname): | ||||
|                     os.remove(lname) | ||||
|                     os.symlink(fname, lname) | ||||
|             else: | ||||
|                 os.symlink(fname, lname) | ||||
|  | ||||
|     def setup_prefix(self): | ||||
|         if not os.path.exists(self.prefix_dir): | ||||
|             makedirs(self.prefix_dir + "/drive_c") | ||||
|             set_dir_casefold_bit(self.prefix_dir + "/drive_c") | ||||
|  | ||||
|         use_wined3d = "wined3d" in g_session.compat_config | ||||
|  | ||||
|         builtin_dll_copy = os.environ.get("PROTON_DLL_COPY", | ||||
|                 # #dxsetup redist | ||||
|                 # "d3dcompiler_*.dll," + | ||||
|                 # "d3dcsx*.dll," + | ||||
|                 # "d3dx*.dll," + | ||||
|                 # "x3daudio*.dll," + | ||||
|                 # "xactengine*.dll," + | ||||
|                 # "xapofx*.dll," + | ||||
|                 # "xaudio*.dll," + | ||||
|                 # "xinput*.dll," + | ||||
|  | ||||
|                 # #vcruntime redist | ||||
|                 "atl1*.dll," + | ||||
|                 # "concrt1*.dll," + | ||||
|                 # "msvcp1*.dll," + | ||||
|                 # "msvcr1*.dll," + | ||||
|                 # "vcamp1*.dll," + | ||||
|                 # "vcomp1*.dll," + | ||||
|                 # "vccorlib1*.dll," + | ||||
|                 # "vcruntime1*.dll," + | ||||
|                 # "api-ms-win-crt-conio-l1-1-0.dll," + | ||||
|                 # "api-ms-win-crt-heap-l1-1-0.dll," + | ||||
|                 # "api-ms-win-crt-locale-l1-1-0.dll," + | ||||
|                 # "api-ms-win-crt-math-l1-1-0.dll," + | ||||
|                 # "api-ms-win-crt-runtime-l1-1-0.dll," + | ||||
|                 # "api-ms-win-crt-stdio-l1-1-0.dll," + | ||||
|                 "ucrtbase.dll," + | ||||
|  | ||||
|                 #some games balk at ntdll symlink(?) | ||||
|                 "ntdll.dll," + | ||||
|  | ||||
|                 #some games require official vulkan loader | ||||
|                 "vulkan-1.dll" | ||||
|                 ) | ||||
|  | ||||
|         #create font files symlinks | ||||
|         self.create_fonts_symlinks() | ||||
|         if "var_pw_vulkan" in os.environ and nonzero(os.environ["var_pw_vulkan"]): | ||||
|             #copy openvr files into place | ||||
|             if os.path.isfile(g_proton.lib_dir + "wine/fakedlls/vrclient.dll"): | ||||
|                 dst = self.prefix_dir + "/drive_c/vrclient/bin/" | ||||
|                 makedirs(dst) | ||||
|                 try_copy(g_proton.lib_dir + "wine/fakedlls/vrclient.dll", dst) | ||||
|                 try_copy(g_proton.lib64_dir + "wine/fakedlls/vrclient_x64.dll", dst) | ||||
|  | ||||
|             if os.path.isfile(g_proton.lib_dir + "wine/dxvk/openvr_api_dxvk.dll"): | ||||
|                 try_copy(g_proton.lib_dir + "wine/dxvk/openvr_api_dxvk.dll", self.prefix_dir + "/drive_c/windows/syswow64/") | ||||
|                 try_copy(g_proton.lib64_dir + "wine/dxvk/openvr_api_dxvk.dll", self.prefix_dir + "/drive_c/windows/system32/") | ||||
|  | ||||
|             if use_wined3d: | ||||
|                 dxvkfiles = [] | ||||
|                 wined3dfiles = ["d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9"] | ||||
|                 if os.path.isfile(g_proton.lib64_dir + "wine/dxvk/dxvk_config.dll"): | ||||
|                     dxvkfiles.append("dxvk_config") | ||||
|                 os.system("echo PW_VULKAN_USE=vkd3d") | ||||
|             else: | ||||
|                 dxvkfiles = ["dxvk_config", "d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9"] | ||||
|                 wined3dfiles = [] | ||||
|                 os.system("echo PW_VULKAN_USE=dxvk") | ||||
|  | ||||
|             #if the user asked for dxvk's dxgi (dxgi=n), then copy it into place | ||||
|             if "PW_DXGI_FROM_DXVK" in os.environ and nonzero(os.environ["PW_DXGI_FROM_DXVK"]): | ||||
|                 dxvkfiles.append("dxgi") | ||||
|             else: | ||||
|                 wined3dfiles.append("dxgi") | ||||
|  | ||||
|             for f in wined3dfiles: | ||||
|                 try_copy(g_proton.lib64_dir + "wine/" + f + ".dll", self.prefix_dir + "drive_c/windows/system32/" + f + ".dll") | ||||
|                 try_copy(g_proton.lib_dir + "wine/" + f + ".dll", self.prefix_dir + "drive_c/windows/syswow64/" + f + ".dll") | ||||
|  | ||||
|             for f in dxvkfiles: | ||||
|                 if os.path.isfile(g_proton.lib64_dir + "wine/dxvk/" + f + ".dll"): | ||||
|                     try_copy(g_proton.lib64_dir + "wine/dxvk/" + f + ".dll", self.prefix_dir + "drive_c/windows/system32/" + f + ".dll") | ||||
|                     try_copy(g_proton.lib_dir + "wine/dxvk/" + f + ".dll", self.prefix_dir + "drive_c/windows/syswow64/" + f + ".dll") | ||||
|                     g_session.dlloverrides[f] = "n" | ||||
|  | ||||
|             if os.path.isfile(g_proton.lib64_dir + "wine/vkd3d-proton/d3d12.dll"): | ||||
|                 try_copy(g_proton.lib64_dir + "wine/vkd3d-proton/d3d12.dll", self.prefix_dir + "drive_c/windows/system32/d3d12.dll") | ||||
|             if os.path.isfile(g_proton.lib_dir + "wine/vkd3d-proton/d3d12.dll"): | ||||
|                 try_copy(g_proton.lib_dir + "wine/vkd3d-proton/d3d12.dll", self.prefix_dir + "drive_c/windows/syswow64/d3d12.dll") | ||||
|         else: | ||||
|             os.system("echo PW_VULKAN_USE=0 - Vulkan is disabled") | ||||
|  | ||||
| def comma_escaped(s): | ||||
|     escaped = False | ||||
|     idx = -1 | ||||
|     while s[idx] == '\\': | ||||
|         escaped = not escaped | ||||
|         idx = idx - 1 | ||||
|     return escaped | ||||
|  | ||||
| class Session: | ||||
|     def __init__(self): | ||||
|         self.env = dict(os.environ) | ||||
|         self.dlloverrides = { | ||||
|                 "winemenubuilder.exe": "",   | ||||
|                 "dotnetfx35.exe": "b",   #replace the broken installer, as does Windows | ||||
|                 "mfplay": "n",           #disable built-in mfplay   | ||||
|                 "steam_api": "n",        #disable built-in steam dll             | ||||
|                 "steam_api64": "n",      #disable built-in steam dll             | ||||
|                 "steamclient": "n",      #disable built-in steam dll             | ||||
|                 "steamclient64": "n",    #disable built-in steam dll             | ||||
|                 "steamworks.net": "n"    #disable built-in steam dll             | ||||
|        } | ||||
|  | ||||
|         self.compat_config = set() | ||||
|         self.cmdlineappend = [] | ||||
|  | ||||
|     def init_wine(self): | ||||
|         self.env.pop("WINEARCH", "") | ||||
|  | ||||
|         if 'ORIG_'+ld_path_var not in os.environ: | ||||
|             # Allow wine to restore this when calling an external app. | ||||
|             self.env['ORIG_'+ld_path_var] = os.environ.get(ld_path_var, '') | ||||
|  | ||||
|         if ld_path_var in os.environ: | ||||
|             self.env[ld_path_var] = g_proton.lib64_dir + ":" + g_proton.lib_dir + ":" + os.environ[ld_path_var] | ||||
|         else: | ||||
|             self.env[ld_path_var] = g_proton.lib64_dir + ":" + g_proton.lib_dir | ||||
|  | ||||
|         self.env["WINEDLLPATH"] = g_proton.lib64_dir + "/wine:" + g_proton.lib_dir + "/wine" | ||||
|  | ||||
|         self.env["GST_PLUGIN_SYSTEM_PATH_1_0"] = g_proton.lib64_dir + "gstreamer-1.0" + ":" + g_proton.lib_dir + "gstreamer-1.0" | ||||
|         self.env["WINE_GST_REGISTRY_DIR"] = g_compatdata.path("/tmp/gstreamer-1.0/") | ||||
|  | ||||
|         if "PW_COMPAT_MEDIA_PATH" in os.environ: | ||||
|             self.env["MEDIACONV_AUDIO_DUMP_FILE"] = os.environ["PW_COMPAT_MEDIA_PATH"] + "/audio.foz" | ||||
|             self.env["MEDIACONV_AUDIO_TRANSCODED_FILE"] = os.environ["PW_COMPAT_MEDIA_PATH"] + "/transcoded_audio.foz" | ||||
|             self.env["MEDIACONV_VIDEO_DUMP_FILE"] = os.environ["PW_COMPAT_MEDIA_PATH"] + "/video.foz" | ||||
|             self.env["MEDIACONV_VIDEO_TRANSCODED_FILE"] = os.environ["PW_COMPAT_MEDIA_PATH"] + "/transcoded_video.foz" | ||||
|  | ||||
|         if "PATH" in os.environ: | ||||
|             self.env["PATH"] = g_proton.bin_dir + ":" + os.environ["PATH"] | ||||
|         else: | ||||
|             self.env["PATH"] = g_proton.bin_dir | ||||
|  | ||||
|     def check_environment(self, env_name, config_name): | ||||
|         if not env_name in self.env: | ||||
|             return False | ||||
|         if nonzero(self.env[env_name]): | ||||
|             self.compat_config.add(config_name) | ||||
|         else: | ||||
|             self.compat_config.discard(config_name) | ||||
|         return True | ||||
|  | ||||
|     def init_session(self): | ||||
|         self.env["WINEPREFIX"] = g_compatdata.prefix_dir | ||||
|  | ||||
|         #load environment overrides | ||||
|      | ||||
|         if "PW_LOG" in os.environ and nonzero(os.environ["PW_LOG"]): | ||||
|             self.env.setdefault("WINEDEBUG", "+timestamp,+pid,+tid,+seh,+debugstr,+mscoree") | ||||
|             self.env.setdefault("DXVK_LOG_LEVEL", "info") | ||||
|             self.env.setdefault("VKD3D_DEBUG", "warn") | ||||
|             self.env.setdefault("WINE_MONO_TRACE", "E:System.NotImplementedException")        | ||||
|         else: | ||||
|             self.env.setdefault("WINEDEBUG", "-all") | ||||
|             self.env.setdefault("DXVK_LOG_LEVEL", "none") | ||||
|             self.env.setdefault("VKD3D_DEBUG", "none") | ||||
|             self.env.setdefault("DXVK_LOG_PATH","none") | ||||
|  | ||||
|         #default wine-mono override for FNA games | ||||
|         self.env.setdefault("WINE_MONO_OVERRIDES", "Microsoft.Xna.Framework.*,Gac=n") | ||||
|  | ||||
|         if "wined3d11" in self.compat_config: | ||||
|             self.compat_config.add("wined3d") | ||||
|  | ||||
|         if not self.check_environment("PW_USE_WINED3D", "wined3d"): | ||||
|             self.check_environment("PW_USE_WINED3D11", "wined3d") | ||||
|         self.check_environment("PW_NO_ESYNC", "noesync") | ||||
|         self.check_environment("PW_NO_FSYNC", "nofsync") | ||||
|         self.check_environment("PW_FORCE_LARGE_ADDRESS_AWARE", "forcelgadd") | ||||
|         self.check_environment("PW_OLD_GL_STRING", "oldglstr") | ||||
|         self.check_environment("PW_NO_WINEMFPLAY", "nomfplay") | ||||
|         self.check_environment("PW_NO_WRITE_WATCH", "nowritewatch") | ||||
|         self.check_environment("PW_DXVK_NO_ASYNC", "dxvknoasync") | ||||
|         self.check_environment("PW_NVAPI_DISABLE", "nonvapi") | ||||
|         self.check_environment("PW_WINEDBG_DISABLE", "nowinedbg") | ||||
|         self.check_environment("PW_HIDE_NVIDIA_GPU", "hidenvgpu") | ||||
|         self.check_environment("PW_VKD3D_FEATURE_LEVEL", "vkd3dfl12") | ||||
|         self.check_environment("PW_DX12_DISABLED", "nod3d12") | ||||
|        | ||||
|         if "noesync" in self.compat_config: | ||||
|             self.env.pop("WINEESYNC", "") | ||||
|         else: | ||||
|             self.env["WINEESYNC"] = "1" | ||||
|  | ||||
|         if "nofsync" in self.compat_config: | ||||
|             self.env.pop("WINEFSYNC", "") | ||||
|         else: | ||||
|             self.env["WINEFSYNC"] = "1" | ||||
|  | ||||
|         if "dxvknoasync" in self.compat_config: | ||||
|             self.env["RADV_DEBUG"] = "llvm" | ||||
|          | ||||
|         if "nowritewatch" in self.compat_config: | ||||
|             self.env["WINE_DISABLE_WRITE_WATCH"] = "1" | ||||
|  | ||||
|         if "oldglstr" in self.compat_config: | ||||
|             #mesa override | ||||
|             self.env["MESA_EXTENSION_MAX_YEAR"] = "2003" | ||||
|             #nvidia override | ||||
|             self.env["__GL_ExtensionStringVersion"] = "17700" | ||||
|  | ||||
|         if "forcelgadd" in self.compat_config: | ||||
|             self.env["WINE_LARGE_ADDRESS_AWARE"] = "1" | ||||
|  | ||||
|         if "vkd3dfl12" in self.compat_config: | ||||
|             if not "VKD3D_FEATURE_LEVEL" in self.env: | ||||
|                 self.env["VKD3D_FEATURE_LEVEL"] = "12_0" | ||||
|  | ||||
|         if "hidenvgpu" in self.compat_config: | ||||
|             self.env["WINE_HIDE_NVIDIA_GPU"] = "1" | ||||
|  | ||||
|         g_compatdata.setup_prefix() | ||||
|              | ||||
|         if "nowritewatch" in self.compat_config: | ||||
|             self.env["WINE_DISABLE_WRITE_WATCH"] = "1" | ||||
|          | ||||
|         if "nonvapi" in self.compat_config: | ||||
|             self.dlloverrides["nvapi"] = "" | ||||
|             self.dlloverrides["nvapi64"] = "" | ||||
|  | ||||
|         if "nowinedbg" in self.compat_config: | ||||
|             self.dlloverrides["winedbg.exe"] = "" | ||||
|          | ||||
|         if "var_pw_vulkan" in os.environ and nonzero(os.environ["var_pw_vulkan"]): | ||||
|             os.system("echo Use vulkan") | ||||
|         else:             | ||||
|             self.dlloverrides["vrclient"] = "" | ||||
|             self.dlloverrides["openvr_api_dxvk"] = "" | ||||
|             self.dlloverrides["dxvk_config"] = "" | ||||
|             self.dlloverrides["dxgi"] = "b" | ||||
|             self.dlloverrides["d3d11"] = "b" | ||||
|             self.dlloverrides["d3d10"] = "b" | ||||
|             self.dlloverrides["d3d10core"] = "b" | ||||
|             self.dlloverrides["d3d10_1"] = "b" | ||||
|             self.dlloverrides["d3d9"] = "b" | ||||
|             self.dlloverrides["d3d12"] = "b" | ||||
|             os.system("echo All d3d dll use as built-in")             | ||||
|  | ||||
|         if "nod3d12" in self.compat_config: | ||||
|             self.dlloverrides["d3d12"] = "" | ||||
|  | ||||
|         s = "" | ||||
|         for dll in self.dlloverrides: | ||||
|             setting = self.dlloverrides[dll] | ||||
|             if len(s) > 0: | ||||
|                 s = s + ";" + dll + "=" + setting | ||||
|             else: | ||||
|                 s = dll + "=" + setting | ||||
|         if "WINEDLLOVERRIDES" in self.env: | ||||
|             self.env["WINEDLLOVERRIDES"] = self.env["WINEDLLOVERRIDES"] + ";" + s | ||||
|         else: | ||||
|             self.env["WINEDLLOVERRIDES"] = s | ||||
|  | ||||
|     def run_proc(self, args, local_env=None): | ||||
|         if local_env is None: | ||||
|             local_env = self.env | ||||
|         subprocess.call(args, env=local_env) | ||||
|  | ||||
|     def run(self): | ||||
|         if "PW_GAMEMODERUN" in os.environ and nonzero(os.environ["PW_GAMEMODERUN"]): | ||||
|             self.run_proc([g_proton.gamemoderun] + [g_proton.wine_bin] + sys.argv[2:] + [g_proton.pw_launch_parameters]) | ||||
|         else: | ||||
|             self.run_proc([g_proton.wine_bin] + sys.argv[2:] + [g_proton.pw_launch_parameters]) | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     if not "PW_COMPAT_DATA_PATH" in os.environ: | ||||
|         log("No compat data path?") | ||||
|         sys.exit(1) | ||||
|  | ||||
|     g_proton = Proton(os.path.dirname(sys.argv[0])) | ||||
|          | ||||
|     g_compatdata = CompatData(os.environ["PW_COMPAT_DATA_PATH"]) | ||||
|  | ||||
|     g_session = Session() | ||||
|  | ||||
|     g_session.init_wine() | ||||
|  | ||||
|     g_session.init_session() | ||||
|  | ||||
|     #determine mode | ||||
|     if sys.argv[1] == "run": | ||||
|         #start target app | ||||
|         g_session.run() | ||||
|     elif sys.argv[1] == "waitforexitandrun": | ||||
|         #wait for wineserver to shut down | ||||
|         g_session.run_proc([g_proton.wineserver_bin, "-w"]) | ||||
|         #then run | ||||
|         g_session.run() | ||||
|     elif sys.argv[1] == "getcompatpath": | ||||
|         #linux -> windows path | ||||
|         path = subprocess.check_output([g_proton.wine_bin, "winepath", "-w", sys.argv[2]], env=g_session.env) | ||||
|         sys.stdout.buffer.write(path) | ||||
|     elif sys.argv[1] == "getnativepath": | ||||
|         #windows -> linux path | ||||
|         path = subprocess.check_output([g_proton.wine_bin, "winepath", sys.argv[2]], env=g_session.env) | ||||
|         sys.stdout.buffer.write(path) | ||||
|     else: | ||||
|         log("Need a verb.") | ||||
|         sys.exit(1) | ||||
|  | ||||
|     sys.exit(0) | ||||
|  | ||||
| #pylint --disable=C0301,C0326,C0330,C0111,C0103,R0902,C1801,R0914,R0912,R0915 | ||||
| # vim: set syntax=python: | ||||
| @@ -1,84 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
|  | ||||
| if [ ! -f "${PORT_WINE_TMP_PATH}/${portname}_ver" ] | ||||
| then | ||||
| 	echo "10" > "${PORT_WINE_TMP_PATH}/${portname}_ver" | ||||
| fi | ||||
|  | ||||
| if [ ! -f "${PORT_WINE_TMP_PATH}/update_notifier" ] | ||||
| then | ||||
| 	echo "1" > "${PORT_WINE_TMP_PATH}/update_notifier" | ||||
| fi  | ||||
| read "update_not" < "${PORT_WINE_TMP_PATH}/update_notifier" | ||||
| if [ "${update_not}" = "1" ]  | ||||
| then | ||||
| 	wget -T 2 --output-document="${PORT_WINE_TMP_PATH}/${portname}_cur_ver" "http://portwine-linux.ru/current_version/${portname}_ver" | ||||
| 	sleep 1 | ||||
| 	if [ -f "${PORT_WINE_TMP_PATH}/${portname}_ver" ] | ||||
| 	then | ||||
| 		read current_ver < "${PORT_WINE_TMP_PATH}/${portname}_cur_ver" | ||||
| 		read install_ver < "${PORT_WINE_TMP_PATH}/${portname}_ver" | ||||
| 		rm -f "${PORT_WINE_TMP_PATH}/${portname}_cur_ver" | ||||
| 		if  [ "${current_ver}" -gt "${install_ver}" ] | ||||
| 		then	 | ||||
| 			xsd=`zenity --title  "${port_upd1}" --text "${port_upd2}" --list --radiolist --height=220 --column="${inst_set}" --column "${port_upd3}" \ | ||||
| 			TRUE "${port_upd4}" \ | ||||
| 			FALSE "${port_upd5}" \ | ||||
| 			FALSE "${port_upd6}" ` | ||||
| 			case $xsd in | ||||
| 				"${port_upd4}") | ||||
| 					"${WINESERVER}" -k | ||||
| 					xdg-open $porturl  | ||||
| 					exit 0 ;; | ||||
| 				"${port_upd5}") | ||||
| 					echo " " ;;	 | ||||
| 				"${port_upd6}") | ||||
| 				echo "0" > "${PORT_WINE_TMP_PATH}/update_notifier" ;; | ||||
| 			esac  | ||||
| 		fi | ||||
| 	fi | ||||
| fi | ||||
| ######################################################################## | ||||
| if [ ! -f "${HOME}/.config/.PortTime" ] | ||||
| then | ||||
| 	echo "10" > "${HOME}/.config/.PortTime" | ||||
| fi | ||||
|  | ||||
| read "port_time" < "${HOME}/.config/.PortTime" | ||||
|  | ||||
| if [ "${port_time}" -gt "1" ] | ||||
| then | ||||
| 	port_time=$((${port_time}-1)) | ||||
| 	echo "${port_time}" > "${HOME}/.config/.PortTime" | ||||
| else | ||||
| 	xsd2=`zenity --title  "${port_time1}" --text "${port_time2}" --list --radiolist --height=240 --column="${inst_set3}" --column "${port_time3}" \ | ||||
| 		TRUE "${port_time4}" \ | ||||
| 		FALSE "${port_time5}" \ | ||||
| 		FALSE "${port_time6}" ` | ||||
| 		if [ $? = 1 ] | ||||
| 		then  | ||||
| 			echo "1" > "${HOME}/.config/.PortTime" | ||||
| 		else | ||||
| 		case $xsd2 in | ||||
| 			"${port_time4}") | ||||
| 				if [ ! -z "$(command -v sensible-browser)" ]; then | ||||
| 					sensible-browser "$urlg" & | ||||
| 				elif [ ! -z "$(command -v xdg-open)" ]; then | ||||
| 					xdg-open "$urlg" & | ||||
| 				elif [ ! -z "$(command -v gnome-open)" ]; then | ||||
| 					gnome-open "$urlg" & | ||||
| 				elif [ ! -z "$(command -v python)" ]; then | ||||
| 					python -m webbrowser "$urlg"  | ||||
| 				fi & | ||||
| 				echo "200" > "${HOME}/.config/.PortTime"  | ||||
| 				sleep 5 | ||||
| 				exit 0 ;; | ||||
| 			"${port_time5}") | ||||
| 				echo "50" > "${HOME}/.config/.PortTime" ;; | ||||
| 			"${port_time6}") | ||||
| 				echo "100" > "${HOME}/.config/.PortTime" ;; | ||||
| 		esac  | ||||
| 		fi | ||||
| fi  | ||||
|  | ||||
| @@ -1,23 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| START_PORTWINE | ||||
| if [ -f "$1" ]; then | ||||
|     export portwine_exe="$(readlink -f "$1")" | ||||
|     export PATH_TO_GAME="$( cd "$( dirname "$1" )" >/dev/null 2>&1 && pwd )" | ||||
|     cd "$PATH_TO_GAME" | ||||
|     if [ ! -z ${optirun_on} ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "$portwine_exe" | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "$portwine_exe" | ||||
|     fi | ||||
| else | ||||
|     cd "${WINEPREFIX}/drive_c/" | ||||
|     if [ ! -z ${optirun_on} ] | ||||
|     then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "explorer"  | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "explorer"  | ||||
|     fi | ||||
| fi | ||||
| STOP_PORTWINE | ||||
| @@ -0,0 +1,8 @@ | ||||
| #!/bin/bash | ||||
| #Author:  | ||||
| #AliceMadnessReturns.exe  | ||||
| #Rating=5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=dxvk | ||||
| export LAUNCH_PARAMETERS="" | ||||
| export PW_DLL_INSTALL="physx" | ||||
							
								
								
									
										9
									
								
								data_from_portwine/scripts/portwine_db/Cyberpunk2077
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								data_from_portwine/scripts/portwine_db/Cyberpunk2077
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE | ||||
| #Cyberpunk2077.exe  | ||||
| #Rating=4 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=vkd3d | ||||
| export LAUNCH_PARAMETERS="" | ||||
| export PULSE_LATENCY_MSEC=60 | ||||
|  | ||||
							
								
								
									
										26
									
								
								data_from_portwine/scripts/portwine_db/DOOM Eternal
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								data_from_portwine/scripts/portwine_db/DOOM Eternal
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE-Linux.ru | ||||
| #DOOMEternalx64vk.exe | ||||
| #Rating=1-5 | ||||
| ################################################ | ||||
| #export PW_VULKAN_USE=dxvk #dxvk, vkd3d or 0 for OpenGL | ||||
| export WINEDLLOVERRIDES="amd_ags_x64=b,n" | ||||
| #export PW_LOG=0             # Enable debug mode fo terminal  | ||||
| export PW_NO_FSYNC=1        # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| export PW_NO_ESYNC=1        # Do not use eventfd-based in-process synchronization primitives | ||||
| export PW_DXVK_NO_ASYNC=1 | ||||
| #export PW_USE_TERMINAL=1 | ||||
| #export PW_OLD_GL_STRING=0 | ||||
| #export PW_NVAPI_DISABLE=1 | ||||
| #export PW_VKD3D_FEATURE_LEVEL=0 | ||||
| #export PW_NO_WRITE_WATCH=0          # Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). | ||||
| #export PW_HIDE_NVIDIA_GPU=0 | ||||
| #export PW_FORCE_USE_VSYNC=2         # Vsync: 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
| #export PW_WINEDBG_DISABLE=1 | ||||
| #export PW_FORCE_DISABLED_GAMEMOD=0              # Force disabele gamemod | ||||
| #export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| #export PULSE_LATENCY_MSEC=60 | ||||
| #export PW_DLL_INSTALL="foo bar" | ||||
| export LAUNCH_PARAMETERS="+com_skipIntroVideo 1 +com_skipSignInManager 1"  | ||||
| #export VK_ICD_FILENAMES="/home/xuser/.PortWINE/libs_v5/usr/lib/x86_64-linux-gnu/amd_icd64.json" | ||||
| #export PW_GUI_DISABLED_CS=1 | ||||
							
								
								
									
										8
									
								
								data_from_portwine/scripts/portwine_db/Death Stranding
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								data_from_portwine/scripts/portwine_db/Death Stranding
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| #!/bin/bash | ||||
| #Author:  | ||||
| #ds.exe  | ||||
| #Rating=5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=vkd3d | ||||
| export LAUNCH_PARAMETERS="" | ||||
| export WINEDLLOVERRIDES="d3dcompiler_47,dxcompiler=n,b" | ||||
| @@ -0,0 +1,8 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE | ||||
| #EpicGamesLauncher.exe  | ||||
| #Rating=5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=dxvk | ||||
| export LAUNCH_PARAMETERS="-opengl -SkipBuildPatchPrereq" | ||||
| export PW_DLL_INSTALL="vcrun2013 vcrun2019 d3dcompiler_43 d3dcompiler_47" | ||||
							
								
								
									
										23
									
								
								data_from_portwine/scripts/portwine_db/Far Cry 1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								data_from_portwine/scripts/portwine_db/Far Cry 1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE-Linux.ru | ||||
| #FarCry.exe | ||||
| #Rating=5 | ||||
| ################################# | ||||
| export PW_VULKAN_USE=dxvk   #dxvk or vkd3d | ||||
| export WINEDLLOVERRIDES="cgD3D9,cgD3D9d=n" | ||||
| #export PW_LOG=0             # Enable debug mode fo terminal  | ||||
| export PW_NO_FSYNC=1        # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| export PW_NO_ESYNC=1        # Do not use eventfd-based in-process synchronization primitives | ||||
| export PW_DXVK_ASYNC=0 | ||||
| #export PW_USE_TERMINAL=0 | ||||
| export PW_OLD_GL_STRING=1 | ||||
| #export PW_NVAPI_DISABLE=1 | ||||
| #export PW_NO_WRITE_WATCH=0          # Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). | ||||
| #export PW_HIDE_NVIDIA_GPU=0 | ||||
| #export PW_FORCE_USE_VSYNC=2         # Vsync: 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
| #export PW_WINEDBG_DISABLE=1 | ||||
| #export PW_FORCE_DISABLED_GAMEMOD=0              # Force disabele gamemod | ||||
| #export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| #export PULSE_LATENCY_MSEC=60 | ||||
| #export PW_DLL_INSTALL="" | ||||
| #export LAUNCH_PARAMETERS="-d3d9" | ||||
							
								
								
									
										12
									
								
								data_from_portwine/scripts/portwine_db/Frozen Throne
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								data_from_portwine/scripts/portwine_db/Frozen Throne
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| #!/bin/bash | ||||
| #Author:  | ||||
| #Frozen Throne.exe  | ||||
| #Rating=4 - no video | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=0 | ||||
| export LAUNCH_PARAMETERS="" | ||||
| export PW_GUI_DISABLED_CS=1 | ||||
| if [ -d "${PATH_TO_GAME}"/Movies ] ; then | ||||
|     mv "${PATH_TO_GAME}"/Movies "${PATH_TO_GAME}"/Movies_bak | ||||
| fi | ||||
|  | ||||
							
								
								
									
										7
									
								
								data_from_portwine/scripts/portwine_db/Game-TS3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								data_from_portwine/scripts/portwine_db/Game-TS3
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| #!/bin/bash | ||||
| #Author:  | ||||
| #Game-TS3.exe  | ||||
| #Rating=5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=0 | ||||
| export LAUNCH_PARAMETERS="" | ||||
							
								
								
									
										24
									
								
								data_from_portwine/scripts/portwine_db/Horizon Zero Dawn
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										24
									
								
								data_from_portwine/scripts/portwine_db/Horizon Zero Dawn
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE-Linux.ru | ||||
| #HorizonZeroDawn.exe | ||||
| #Rating=5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=vkd3d #dxvk or vkd3d | ||||
| export WINEDLLOVERRIDES="nvngx_dlss=;amd_ags_x64=b,n;d3dcompiler_47=n" | ||||
| #export PW_LOG=0             # Enable debug mode fo terminal  | ||||
| #export PW_NO_FSYNC=1        # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| export PW_NO_ESYNC=1        # Do not use eventfd-based in-process synchronization primitives | ||||
| #export PW_USE_TERMINAL=0 | ||||
| #export PW_OLD_GL_STRING=0 | ||||
| #export PW_NVAPI_DISABLE=1 | ||||
| #export PW_NO_WRITE_WATCH=0          # Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). | ||||
| #export PW_HIDE_NVIDIA_GPU=0 | ||||
| #export PW_FORCE_USE_VSYNC=2         # Vsync: 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
| #export PW_WINEDBG_DISABLE=1 | ||||
| #export PW_FORCE_DISABLED_GAMEMOD=1              # Force disabele gamemod | ||||
| #export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| export PW_DLL_INSTALL="d3dx9 d3dcompiler_47 vcrun2019" | ||||
| export LAUNCH_PARAMETERS="-EpicPortal" | ||||
| #export RADV_DEBUG=llvm | ||||
| export PW_DXVK_NO_ASYNC=1 | ||||
|  | ||||
							
								
								
									
										7
									
								
								data_from_portwine/scripts/portwine_db/Mafia DE
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								data_from_portwine/scripts/portwine_db/Mafia DE
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE-Linux.ru | ||||
| #mafiadefinitiveedition.exe | ||||
| #Rating=4 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=dxvk | ||||
| export PULSE_LATENCY_MSEC=60 | ||||
							
								
								
									
										8
									
								
								data_from_portwine/scripts/portwine_db/Origin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								data_from_portwine/scripts/portwine_db/Origin
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE | ||||
| #Origin.exe  | ||||
| #Rating= | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=vkd3d | ||||
| export LAUNCH_PARAMETERS="" | ||||
| sed -i 's%key="EnableIgo" value="true"%key="EnableIgo" value="false"%g' "${WINEPREFIX}/drive_c/users/steamuser/Application Data/Origin/local_"*".xml" | ||||
							
								
								
									
										6
									
								
								data_from_portwine/scripts/portwine_db/Terminator Resistance
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								data_from_portwine/scripts/portwine_db/Terminator Resistance
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE-Linux.ru | ||||
| #Rating=5 | ||||
| #Terminator.exe | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=dxvk | ||||
							
								
								
									
										7
									
								
								data_from_portwine/scripts/portwine_db/This War of Mine
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								data_from_portwine/scripts/portwine_db/This War of Mine
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| #!/bin/bash | ||||
| #Author:  | ||||
| #This War of Mine.exe  | ||||
| #Rating=5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=0 | ||||
| export LAUNCH_PARAMETERS="" | ||||
							
								
								
									
										8
									
								
								data_from_portwine/scripts/portwine_db/avengers
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								data_from_portwine/scripts/portwine_db/avengers
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| #!/bin/bash | ||||
| #Author:  | ||||
| #avengers.exe  | ||||
| #Rating=1-5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=dxvk | ||||
| export LAUNCH_PARAMETERS="" | ||||
| export WINEDLLOVERRIDES="amd_ags_x64=b" | ||||
							
								
								
									
										26
									
								
								data_from_portwine/scripts/portwine_db/default
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								data_from_portwine/scripts/portwine_db/default
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE-Linux.ru | ||||
| #name_exe_file.exe | ||||
| #Rating=1-5 | ||||
| #export PW_COMMENT_DB="blablabla" | ||||
| ################################################ | ||||
| #export PW_VULKAN_USE=dxvk #dxvk, vkd3d or 0 for OpenGL | ||||
| #export WINEDLLOVERRIDES="blabla=n,b" | ||||
| #export PW_LOG=0             # Enable debug mode fo terminal  | ||||
| #export PW_NO_FSYNC=1        # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| #export PW_NO_ESYNC=1        # Do not use eventfd-based in-process synchronization primitives | ||||
| #export PW_DXVK_NO_ASYNC=1 | ||||
| #export PW_USE_TERMINAL=0 | ||||
| #export PW_OLD_GL_STRING=0 | ||||
| #export PW_NVAPI_DISABLE=1 | ||||
| #export PW_VKD3D_FEATURE_LEVEL=0 | ||||
| #export PW_NO_WRITE_WATCH=0          # Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). | ||||
| #export PW_HIDE_NVIDIA_GPU=0 | ||||
| #export PW_FORCE_USE_VSYNC=2         # Vsync: 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
| #export PW_WINEDBG_DISABLE=1 | ||||
| #export PW_FORCE_DISABLED_GAMEMOD=0              # Force disabele gamemod | ||||
| #export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| #export PULSE_LATENCY_MSEC=60 | ||||
| #export PW_DLL_INSTALL="foo bar" | ||||
| #export LAUNCH_PARAMETERS="-d3d9" | ||||
| #export PW_GUI_DISABLED_CS=1 | ||||
							
								
								
									
										27
									
								
								data_from_portwine/scripts/portwine_db/setup
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								data_from_portwine/scripts/portwine_db/setup
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| #!/bin/bash | ||||
| #Author: PortWINE-Linux.ru | ||||
| #setup.exe | ||||
| #.msi | ||||
| #Rating=5 | ||||
| #export PW_COMMENT_DB="blablabla" | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=0 #dxvk or vkd3d | ||||
| #export WINEDLLOVERRIDES="blabla=n,b" | ||||
| #export PW_LOG=0             # Enable debug mode fo terminal  | ||||
| export PW_NO_FSYNC=1        # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| export PW_NO_ESYNC=1        # Do not use eventfd-based in-process synchronization primitives | ||||
| #export PW_DXVK_NO_ASYNC=1 | ||||
| #export PW_USE_TERMINAL=0 | ||||
| #export PW_OLD_GL_STRING=0 | ||||
| #export PW_NVAPI_DISABLE=1 | ||||
| export PW_VKD3D_FEATURE_LEVEL=0 | ||||
| export PW_NO_WRITE_WATCH=0          # Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). | ||||
| #export PW_HIDE_NVIDIA_GPU=0 | ||||
| #export PW_FORCE_USE_VSYNC=2         # Vsync: 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
| export PW_WINEDBG_DISABLE=0 | ||||
| export PW_FORCE_DISABLED_GAMEMOD=1             # Force disabele gamemod | ||||
| export PW_FORCE_LARGE_ADDRESS_AWARE=0          # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| #export PULSE_LATENCY_MSEC=60 | ||||
| export PW_DLL_INSTALL="vcrun6 mfc42 cmd" | ||||
| #export LAUNCH_PARAMETERS="-d3d9" | ||||
| export PW_GUI_DISABLED_CS=1 | ||||
| @@ -2,8 +2,8 @@ | ||||
| # Author: PortWINE-Linux.ru | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| KILL_PORTWINE | ||||
| if [ -e "${PORT_WINE_TMP_PATH}/dxvk_on" ]; then | ||||
|     rm -f "${PORT_WINE_TMP_PATH}/dxvk_on" | ||||
| if [ -e "${PORT_WINE_TMP_PATH}/pw_vulkan" ]; then | ||||
|     rm -f "${PORT_WINE_TMP_PATH}/pw_vulkan" | ||||
| fi | ||||
| START_PORTWINE | ||||
| STOP_PORTWINE | sszen | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| clear && echo ' | ||||
| echo ' | ||||
| ████─████─████─███─█───█─███─█──█─███ | ||||
| █──█─█──█─█──█──█──█───█──█──██─█─█ | ||||
| ████─█──█─████──█──█─█─█──█──█─██─███ | ||||
| @@ -19,6 +19,18 @@ fi | ||||
| sszen() { | ||||
| zenity --progress --title="Settings..." --text="Updating parameters" --no-cancel --pulsate --auto-close --width 400  | ||||
| }  | ||||
| PW_START_PROGRESS_BAR () | ||||
| { | ||||
| "${pw_yad}" --progress --progress-text="Start ${portname}... Please wait..." --pulsate --close-on-unfocus \ | ||||
| --no-buttons --undecorated --center --skip-taskbar --width=600 --wrap-width=500 & | ||||
| export start_progress_yad_pid=$(echo $!) | ||||
| } | ||||
| PW_STOP_PROGRESS_BAR () | ||||
| { | ||||
| if [ ! -z "${start_progress_yad_pid}" ] ; then | ||||
|     kill "${start_progress_yad_pid}" | ||||
| fi | ||||
| } | ||||
| ######################################################################## | ||||
| cd "$(dirname "`readlink -f "$0"`")" | ||||
| export PORT_SCRIPTS_PATH="$(pwd)" | ||||
| @@ -44,8 +56,8 @@ if [ ! -e "${PORT_WINE_TMP_PATH}/${portname}_loc" ]; then | ||||
| 	echo "${SET_LANG}" > "${PORT_WINE_TMP_PATH}/${portname}_loc" | ||||
| fi | ||||
| if [ "${portname}" = "PortProton" ]; then | ||||
|     if [ -e "${PORT_WINE_TMP_PATH}/dxvk_on" ]; then | ||||
|         rm -f "${PORT_WINE_TMP_PATH}/dxvk_on" | ||||
|     if [ -e "${PORT_WINE_TMP_PATH}/pw_vulkan" ]; then | ||||
|         rm -f "${PORT_WINE_TMP_PATH}/pw_vulkan" | ||||
|     fi | ||||
| fi | ||||
| ######################################################################## | ||||
| @@ -54,8 +66,9 @@ if [ ! -e "${PORT_WINE_TMP_PATH}/${portname}_ver" ]; then | ||||
| 	echo "10" > "${PORT_WINE_TMP_PATH}/${portname}_ver" | ||||
| fi | ||||
| ######################################################################## | ||||
| export LAUNCH_PARAMETERS="" | ||||
| export pw_libs_ver="_v5" | ||||
| export port_on_run="${PORT_WINE_PATH}/data/port_on" | ||||
| export port_on_run="${PORT_SCRIPTS_PATH}/port_on" | ||||
| export WINEDIR="${PORT_WINE_PATH}"/data/dist | ||||
| export WINELIB="${HOME}/.PortWINE/libs${pw_libs_ver}" | ||||
| export WINEARCH=win64 | ||||
| @@ -63,14 +76,12 @@ export WINEPREFIX="${PORT_WINE_PATH}/data/pfx/" | ||||
| export PW_COMPAT_DATA_PATH="${PORT_WINE_PATH}/data/" | ||||
| export PW_COMPAT_MEDIA_PATH="${PORT_WINE_TMP_PATH}/" | ||||
| export PW_RUNTIME="$WINELIB/run.sh" | ||||
| export PW_GUI_ICON_PATH="${PORT_WINE_PATH}/data/img/gui" | ||||
| ######################################################################## | ||||
| export urlg="https://portwine-linux.ru/portwine-faq/" | ||||
| export PW_FTP_URL="https://portwine-linux.ru/ftp" | ||||
| ######################################################################## | ||||
| export PW_TERM="" | ||||
| #if [ ! -f "${PORT_WINE_TMP_PATH}/init_run_suc" ]; then | ||||
| #    export PW_USE_TERMINAL="1" | ||||
| #fi | ||||
| for pw_dist in "dxvk" "vkd3d" | ||||
| do | ||||
|     if [ -d "${WINEDIR}"_"${pw_dist}"/share/wine/ ]; then | ||||
| @@ -99,7 +110,7 @@ if [ -f "${WINEDIR}"_vkd3d/version ]; then | ||||
|     zen_width=1000 | ||||
| fi | ||||
| ######################################################################## | ||||
| if [ ! -e "${WINELIB}/run.sh" ]; then  | ||||
| if [ ! -e "${WINELIB}/run.sh" ] || [ ! -e "${WINELIB}/usr/bin/yad" ] || [ ! -e "${WINELIB}/amd64/usr/bin/vkcube" ] || [ ! -e "${WINELIB}/amd64/usr/bin/xterm" ]; then  | ||||
|     echo "Download and install libraries..." | ||||
|     wget -c -T 2 --output-document="${HOME}/.PortWINE/tmp/libs${pw_libs_ver}.tar.xz" "${PW_FTP_URL}"/dist/libs${pw_libs_ver}.tar.xz | sszen && | ||||
|     tar -Jxvf "${HOME}/.PortWINE/tmp/libs${pw_libs_ver}.tar.xz" -C "${HOME}/.PortWINE/" | sszen && | ||||
| @@ -110,11 +121,29 @@ if [ -e "${WINELIB}/run.sh" ]; then | ||||
|     echo "######################################################" | ||||
|     echo "Runtime libraries is enabled" | ||||
|     pw_yad="${WINELIB}/usr/bin/yad" | ||||
|     PW_XTERM="${WINELIB}/amd64/usr/bin/xterm -geometry 159x37 -e" | ||||
| else | ||||
|     echo "######################################################" | ||||
|     echo "Runtime libraries is disabled" | ||||
| fi | ||||
| ######################################################################## | ||||
| if [ ! -z "${gamestart}" ]; then | ||||
|     export PORTWINE_DB=`echo "${gamestart}" | awk -F '/' 'NF>1{print $NF}' | awk -F '.exe' '{print $1}'` | ||||
| elif [ ! -z "${portwine_exe}" ]; then | ||||
|     export PORTWINE_DB=`echo "${portwine_exe}" | awk -F '/' 'NF>1{print $NF}' | awk -F '.exe' '{print $1}'` | ||||
|     export PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )" | ||||
| fi | ||||
| if [ ! -z "${PORTWINE_DB}" ]; then | ||||
|     PORTWINE_DB_FILE=`grep -il "${PORTWINE_DB}" "${PORT_SCRIPTS_PATH}/portwine_db"/* | awk -F '.exe' '{print $1}'` | ||||
|     if [ ! -z "${PORTWINE_DB_FILE}" ]; then | ||||
|         . "${PORTWINE_DB_FILE}" | ||||
|         echo "Use ${PORTWINE_DB_FILE} db file." | ||||
|     else | ||||
|         . "${PORT_SCRIPTS_PATH}/portwine_db/default" | ||||
|         echo "Use default db file." | ||||
|     fi | ||||
| fi | ||||
| ######################################################################## | ||||
| START_PORTWINE () | ||||
| { | ||||
| if [ "${PW_USE_TERMINAL}" = "1"  ]; then | ||||
| @@ -126,32 +155,28 @@ if [ "${PW_USE_TERMINAL}" = "1"  ]; then | ||||
|         export PW_TERM="gnome-terminal -- $SHELL -c"  | ||||
|     elif [ -x "`which lxterminal 2>/dev/null`" ]; then | ||||
|         export PW_TERM="lxterminal -e"  | ||||
| #    elif [ -x "`which xfce4-terminal 2>/dev/null`" ]; then | ||||
| #        export PW_TERM="xfce4-terminal -x" #test | ||||
|     else | ||||
|         export PW_TERM="${PW_XTERM}" | ||||
|     fi | ||||
| fi | ||||
| sh "${PORT_SCRIPTS_PATH}"/port_update  | ||||
| PW_UPDATE | ||||
| ######################################################################## | ||||
| if [ ! -z $dxvk_ogl_var ]; then | ||||
|     var_dxvk_on="${dxvk_ogl_var}" | ||||
| if [ ! -z "${PW_VULKAN_USE}" ]; then | ||||
|     export var_pw_vulkan="${PW_VULKAN_USE}" | ||||
|     echo "${var_pw_vulkan}" > "${PORT_WINE_TMP_PATH}/pw_vulkan" | ||||
| else | ||||
|     if [ ! -f "${PORT_WINE_TMP_PATH}/dxvk_on" ]; then | ||||
|         start_settings=`zenity --title  "${ss_title}" --text "${ss_text}" --list --radiolist \ | ||||
|         --column="${inst_set}" --column "${ss_ver}" --column "${ss_dr}"  --width=$zen_width --height=220 \ | ||||
|         TRUE "DXVK ${PW_WINE_VER_DXVK}" "${ss_ogl_3}" \ | ||||
|         FALSE "VKD3D ${PW_WINE_VER_VKD3D}" "${ss_ogl_2}" `  | ||||
|         if [ $? -eq 1 ];then exit 1; fi | ||||
|         case $start_settings in | ||||
|         "VKD3D ${PW_WINE_VER_VKD3D}")  | ||||
|                 echo "off" > "${PORT_WINE_TMP_PATH}/dxvk_on" ;;    | ||||
|         "DXVK ${PW_WINE_VER_DXVK}")  | ||||
|                 echo "0" > "${PORT_WINE_TMP_PATH}/dxvk_on" ;; | ||||
|         esac   | ||||
|     fi | ||||
|     read "var_dxvk_on" < "${PORT_WINE_TMP_PATH}/dxvk_on" | ||||
|     read "var_pw_vulkan" < "${PORT_WINE_TMP_PATH}/pw_vulkan" | ||||
|     export var_pw_vulkan | ||||
| fi | ||||
|  | ||||
| if [ "${var_dxvk_on}" != "off" ]; then | ||||
| PW_START_PROGRESS_BAR  | ||||
| if [ "${var_pw_vulkan}" = "0" ]; then | ||||
|     if [ -d "${WINEDIR}_dxvk" ]; then | ||||
|         export WINEDIR="${WINEDIR}_dxvk" | ||||
|         export MESA_GLSL_CACHE_DIR="${PORT_WINE_TMP_PATH}" | ||||
|         export mesa_glthread=true | ||||
|         echo "Use OpenGL" | ||||
|     fi | ||||
| elif [ "${var_pw_vulkan}" = "dxvk" ]; then | ||||
|     export PW_USE_WINED3D=0 | ||||
|     export PW_DXGI_FROM_DXVK=1 | ||||
|     export PW_DX12_DISABLED=1 | ||||
| @@ -161,11 +186,10 @@ if [ "${var_dxvk_on}" != "off" ]; then | ||||
|     echo "Use DXVK and D9VK (DX9-DX11 to Vulkan)" | ||||
| else | ||||
|     export PW_USE_WINED3D=1 | ||||
|     export PW_VKD3D_FEATURE_LEVEL=1 | ||||
|     if [ -d "${WINEDIR}_vkd3d" ]; then | ||||
|         export WINEDIR="${WINEDIR}_vkd3d" | ||||
|     fi | ||||
|     echo "Use OpenGL and VKD3D (DX9-DX11 to OpenGL and DX12 to vulkan)" | ||||
|     echo "Use VKD3D (DX12 to vulkan)" | ||||
| fi | ||||
| export WINELOADER="${WINEDIR}/bin/wine" | ||||
| export WINEDLLPATH="${WINEDIR}/lib64/wine:${WINEDIR}/lib/wine" | ||||
| @@ -200,16 +224,14 @@ if [ ! -z "${PW_NVIDIA}" ] && [ "${check_optimus_manager}" != "intel" ]; then | ||||
|     fi | ||||
|     export __NV_PRIME_RENDER_OFFLOAD=1 | ||||
|     export __GLX_VENDOR_LIBRARY_NAME=nvidia | ||||
|     export __GL_SHADER_DISK_CACHE_PATH="${PATH_TO_GAME}"  | ||||
|     export __GL_SHADER_DISK_CACHE_PATH="${PORT_WINE_TMP_PATH}"  | ||||
|     export __GL_SHADER_DISK_CACHE=1 | ||||
|     export __GL_SHADER_DISK_CACHE_SIZE=1000000000 | ||||
|     export __GL_THREADED_OPTIMIZATIONS=1 | ||||
|     export __GL_DXVK_OPTIMIZATIONS=1 | ||||
| else | ||||
|     export VK_ICD_FILENAMES | ||||
|     export DRI_PRIME=1 | ||||
|     export VKD3D_CONFIG=force_bindless_texel_buffer | ||||
| #    export MESA_GLSL_CACHE_DIR="${PATH_TO_GAME}" | ||||
| #    export mesa_glthread=true | ||||
| fi | ||||
| case "$PW_FORCE_USE_VSYNC" in  # 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
|     "0") | ||||
| @@ -219,7 +241,7 @@ case "$PW_FORCE_USE_VSYNC" in  # 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
|     export vblank_mode=1 | ||||
|     export __GL_SYNC_TO_VBLANK=1 ;;   | ||||
| esac | ||||
| export DXVK_CONFIG_FILE="${PORT_WINE_PATH}/data/dxvk.conf" | ||||
| #export DXVK_CONFIG_FILE="${PORT_WINE_PATH}/data/" | ||||
| ######################################################################## | ||||
| export int_xneur=0 | ||||
| if [ $(pgrep xneur)>'0' ]; then | ||||
| @@ -232,8 +254,8 @@ if [ ! -z ${PW_XKBD} ]; then | ||||
| fi | ||||
| ######################################################################## | ||||
| if [ -x "`which "gamemoderun" 2>/dev/null`" ] && [ "$PW_FORCE_DISABLED_GAMEMOD" -eq "0" ]; then | ||||
|     systemctl --user enable gamemoded.service  | ||||
|     systemctl --user restart gamemoded.service | ||||
|     # systemctl --user enable gamemoded.service  | ||||
|     # systemctl --user restart gamemoded.service | ||||
|     export PW_GAMEMODERUN=1 | ||||
|     echo "Gamemod will be launched." | ||||
| else | ||||
| @@ -242,49 +264,15 @@ else | ||||
| fi | ||||
| echo "######################################################" | ||||
| ######################################################################## | ||||
| sed -i '/HKCU,Software\\Valve\\Steam/d' "${WINEDIR}"*/share/wine/wine.inf && | ||||
| sed -i '/HKLM,Software\\Wow6432Node\\Valve\\Steam/d' "${WINEDIR}"*/share/wine/wine.inf && | ||||
| sed -i '/HKLM,Software\\Wow6432Node\\Valve\\Steam/d' "${WINEDIR}"*/share/wine/wine.inf && | ||||
| sed -i '/HKCR,steam\\shell\\open\\command/d' "${WINEDIR}"*/share/wine/wine.inf && | ||||
| sed -i '/HKCR,steam\\shell\\open\\command/d' "${WINEDIR}"*/share/wine/wine.inf && | ||||
|  | ||||
| rm -f  "${WINEDIR}"*/lib*/*steam* && | ||||
| rm -f  "${WINEDIR}"*/lib*/wine/*steam* && | ||||
| rm -f  "${WINEDIR}"*/lib*/wine/fakedlls/*steam* && | ||||
| # if [ ! -d "${WINEPREFIX}" ] || [ ! -d "${WINEPREFIX}"/dosdevices ] || [ ! -d "${WINEPREFIX}"/drive_c/windows ] || [ ! -f "${WINEPREFIX}"/system.reg ] || [ ! -f "${WINEPREFIX}"/user.reg ] || [ ! -f "${WINEPREFIX}"/userdef.reg ]; then | ||||
| #     if [ ! -z "$(cat /etc/locale.gen | grep "^en_US.UTF-8")" ]; then  | ||||
| #     export PW_LANG_OS="${LANG}" | ||||
| #     export LANG=en_US.UTF-8 | ||||
| #     fi | ||||
| #     $PW_TERM "${PW_RUNTIME}"  "${WINELOADER}" wineboot -u && | ||||
| #     export LANG="${PW_LANG_OS}" | ||||
| # fi | ||||
| sed -i '/steamclient/d' "${WINEPREFIX}"/*.reg && | ||||
| sed -i '/SteamPath/d' "${WINEPREFIX}"/*.reg && | ||||
|  | ||||
| rm -f "${WINEPREFIX}/drive_c/windows/system32"/steam* && | ||||
| rm -f "${WINEPREFIX}/drive_c/windows/syswow64"/steam* && | ||||
| ######################################################################## | ||||
| #if [ ! -f "${PORT_WINE_TMP_PATH}/init_run_suc" ]; then | ||||
| #    "${PW_RUNTIME}" "${port_on_run}" "init_run" | ||||
| #    if [ -f "${PORT_WINE_TMP_PATH}"/winetricks ]; then | ||||
| #        rm -f "${PORT_WINE_TMP_PATH}"/winetricks | ||||
| #    fi | ||||
| #    wget -T 3 --output-document=${PORT_WINE_TMP_PATH}/winetricks https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks | ||||
| #    chmod +x "${PORT_WINE_TMP_PATH}/winetricks" | ||||
| #    PW_INIT_RUN  | ||||
| #    echo "#####################PW_INIT_RUN######################" | ||||
| #    cat "${PORT_WINE_TMP_PATH}/init_run_suc" | ||||
| #    echo "######################################################" | ||||
| #fi | ||||
| ######################################################################## | ||||
| PW_CREATE_PFX | ||||
| RUN_WINETRICKS_FROM_DB  | ||||
| ADD_IN_START_PORTWINE | ||||
| }  | ||||
| ######################################################################## | ||||
| WAIT_WINESERVER () | ||||
| { | ||||
| sleep 3 | ||||
| while [ $(pgrep wineserver)>'0' ]; do | ||||
| while [ ! -z "$(ls -l /proc/*/exe 2>/dev/null | grep -ie ${portname} | grep -E 'wine(64)?-preloader|wineserver' | awk -F/ '{print $3}')" ] ; do | ||||
| 	sleep 1 | ||||
| done | ||||
| } | ||||
| @@ -292,7 +280,7 @@ done | ||||
| KILL_PORTWINE ()  | ||||
| { | ||||
| wine_pids=$(ls -l /proc/*/exe 2>/dev/null | grep -ie ${portname} | grep -E 'wine(64)?-preloader|wineserver' | awk -F/ '{print $3}') #modded by Cefeiko | ||||
| if  ! [ -z "${wine_pids}" ] ; then  | ||||
| if  [ ! -z "${wine_pids}" ] ; then  | ||||
|     kill -9 ${wine_pids}  | ||||
| fi | ||||
| } | ||||
| @@ -307,6 +295,158 @@ fi | ||||
| if [ ! -z ${PW_XKBD} ]; then | ||||
|     setxkbmap ${PW_XKBD} | ||||
| fi | ||||
| PW_STOP_PROGRESS_BAR | ||||
| rm -f "${PORT_WINE_PATH}"/1 | ||||
| rm -f "${PORT_SCRIPTS_PATH}"/1 | ||||
| rm -f "${PORT_WINE_PATH}"/0 | ||||
| rm -f "${PORT_SCRIPTS_PATH}"/0 | ||||
| } | ||||
| ######################################################################## | ||||
| UPDATE_WINETRICKS () | ||||
| { | ||||
| W_TRX_URL="https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks" | ||||
| W_TRX_EXT_VER="$(curl -s --list-only ${W_TRX_URL} | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')" | ||||
| if  ! [[ -f "${PORT_WINE_TMP_PATH}/winetricks" ]]  | ||||
| then | ||||
|     wget -T 3 --output-document=${PORT_WINE_TMP_PATH}/winetricks ${W_TRX_URL} | ||||
|     chmod u+x "${PORT_WINE_TMP_PATH}/winetricks" | ||||
| else | ||||
| W_TRX_INT_VER="$(cat "${PORT_WINE_TMP_PATH}/winetricks" | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')" | ||||
|         if  [[ $W_TRX_INT_VER != $W_TRX_EXT_VER ]] | ||||
|         then | ||||
|             rm -f "${PORT_WINE_TMP_PATH}/winetricks" | ||||
|             wget -T 3 --output-document=${PORT_WINE_TMP_PATH}/winetricks ${W_TRX_URL} | ||||
|             chmod u+x "${PORT_WINE_TMP_PATH}/winetricks" | ||||
|         fi | ||||
| fi #modded by Cefeiko | ||||
| } | ||||
| ######################################################################## | ||||
| RUN_WINETRICKS_FROM_DB () | ||||
| { | ||||
| if [ ! -z "${PW_DLL_INSTALL}" ]; then   | ||||
|     export USE_WT_FROM_DB=0 | ||||
|     if [ -e "${WINEPREFIX}/winetricks.log" ] ; then | ||||
|         for need_install_dll_to_pfx in ${PW_DLL_INSTALL} ; do | ||||
|             grep "${need_install_dll_to_pfx}" "${WINEPREFIX}/winetricks.log" | ||||
|             if [ "$?" == "1" ] ; then | ||||
|                 export USE_WT_FROM_DB=1 | ||||
|                 break | ||||
|             fi   | ||||
|         done | ||||
|     else | ||||
|         export USE_WT_FROM_DB=1 | ||||
|     fi | ||||
|     if [ "${USE_WT_FROM_DB}" == "1" ] ; then | ||||
|         UPDATE_WINETRICKS | ||||
|         PW_STOP_PROGRESS_BAR | ||||
|         ${PW_XTERM} "${PW_RUNTIME}" "${PORT_WINE_TMP_PATH}/winetricks" -q ${PW_DLL_INSTALL} | ||||
|         PW_START_PROGRESS_BAR | ||||
|     fi | ||||
| fi | ||||
| } | ||||
| ######################################################################## | ||||
| PW_UPDATE () | ||||
| { | ||||
|     if [ ! -f "${PORT_WINE_TMP_PATH}/${portname}_ver" ] | ||||
| then | ||||
| 	echo "10" > "${PORT_WINE_TMP_PATH}/${portname}_ver" | ||||
| fi | ||||
|  | ||||
| if [ ! -f "${PORT_WINE_TMP_PATH}/update_notifier" ] | ||||
| then | ||||
| 	echo "1" > "${PORT_WINE_TMP_PATH}/update_notifier" | ||||
| fi  | ||||
| read "update_not" < "${PORT_WINE_TMP_PATH}/update_notifier" | ||||
| if [ "${update_not}" = "1" ]  | ||||
| then | ||||
| 	wget -T 2 --output-document="${PORT_WINE_TMP_PATH}/${portname}_cur_ver" "http://portwine-linux.ru/current_version/${portname}_ver" | ||||
| 	sleep 1 | ||||
| 	if [ -f "${PORT_WINE_TMP_PATH}/${portname}_ver" ] | ||||
| 	then | ||||
| 		read current_ver < "${PORT_WINE_TMP_PATH}/${portname}_cur_ver" | ||||
| 		read install_ver < "${PORT_WINE_TMP_PATH}/${portname}_ver" | ||||
| 		rm -f "${PORT_WINE_TMP_PATH}/${portname}_cur_ver" | ||||
| 		if  [ "${current_ver}" -gt "${install_ver}" ] | ||||
| 		then	 | ||||
| 			xsd=`zenity --title  "${port_upd1}" --text "${port_upd2}" --list --radiolist --height=220 --column="${inst_set}" --column "${port_upd3}" \ | ||||
| 			TRUE "${port_upd4}" \ | ||||
| 			FALSE "${port_upd5}" \ | ||||
| 			FALSE "${port_upd6}" ` | ||||
| 			case $xsd in | ||||
| 				"${port_upd4}") | ||||
| 					"${WINESERVER}" -k | ||||
| 					xdg-open $porturl  | ||||
| 					exit 0 ;; | ||||
| 				"${port_upd5}") | ||||
| 					echo " " ;;	 | ||||
| 				"${port_upd6}") | ||||
| 				echo "0" > "${PORT_WINE_TMP_PATH}/update_notifier" ;; | ||||
| 			esac  | ||||
| 		fi | ||||
| 	fi | ||||
| fi | ||||
| ######################################################################## | ||||
| if [ ! -f "${HOME}/.config/.PortTime" ] | ||||
| then | ||||
| 	echo "10" > "${HOME}/.config/.PortTime" | ||||
| fi | ||||
|  | ||||
| read "port_time" < "${HOME}/.config/.PortTime" | ||||
|  | ||||
| if [ "${port_time}" -gt "1" ] | ||||
| then | ||||
| 	port_time=$((${port_time}-1)) | ||||
| 	echo "${port_time}" > "${HOME}/.config/.PortTime" | ||||
| else | ||||
| 	xsd2=`zenity --title  "${port_time1}" --text "${port_time2}" --list --radiolist --height=240 --column="${inst_set3}" --column "${port_time3}" \ | ||||
| 		TRUE "${port_time4}" \ | ||||
| 		FALSE "${port_time5}" \ | ||||
| 		FALSE "${port_time6}" ` | ||||
| 		if [ $? = 1 ] | ||||
| 		then  | ||||
| 			echo "1" > "${HOME}/.config/.PortTime" | ||||
| 		else | ||||
| 		case $xsd2 in | ||||
| 			"${port_time4}") | ||||
| 				if [ ! -z "$(command -v sensible-browser)" ]; then | ||||
| 					sensible-browser "$urlg" & | ||||
| 				elif [ ! -z "$(command -v xdg-open)" ]; then | ||||
| 					xdg-open "$urlg" & | ||||
| 				elif [ ! -z "$(command -v gnome-open)" ]; then | ||||
| 					gnome-open "$urlg" & | ||||
| 				elif [ ! -z "$(command -v python)" ]; then | ||||
| 					python -m webbrowser "$urlg"  | ||||
| 				fi & | ||||
| 				echo "300" > "${HOME}/.config/.PortTime"  | ||||
| 				sleep 5 | ||||
| 				exit 0 ;; | ||||
| 			"${port_time5}") | ||||
| 				echo "75" > "${HOME}/.config/.PortTime" ;; | ||||
| 			"${port_time6}") | ||||
| 				echo "150" > "${HOME}/.config/.PortTime" ;; | ||||
| 		esac  | ||||
| 		fi | ||||
| fi  | ||||
| } | ||||
| PW_CREATE_PFX () | ||||
| { | ||||
| sed -i '/HKCU,Software\\Valve\\Steam/d' "${WINEDIR}"*/share/wine/wine.inf  | ||||
| sed -i '/HKLM,Software\\Wow6432Node\\Valve\\Steam/d' "${WINEDIR}"*/share/wine/wine.inf  | ||||
| sed -i '/HKLM,Software\\Wow6432Node\\Valve\\Steam/d' "${WINEDIR}"*/share/wine/wine.inf  | ||||
| sed -i '/HKCR,steam\\shell\\open\\command/d' "${WINEDIR}"*/share/wine/wine.inf  | ||||
| sed -i '/HKCR,steam\\shell\\open\\command/d' "${WINEDIR}"*/share/wine/wine.inf  | ||||
|  | ||||
| rm -f  "${WINEDIR}"*/lib*/*steam*  | ||||
| rm -f  "${WINEDIR}"*/lib*/wine/*steam*  | ||||
| rm -f  "${WINEDIR}"*/lib*/wine/fakedlls/*steam*  | ||||
| if [ ! -d "${WINEPREFIX}" ] || [ ! -d "${WINEPREFIX}"/drive_c/windows ]; then | ||||
|     PW_STOP_PROGRESS_BAR | ||||
|     ${PW_XTERM} "${PW_RUNTIME}" "${WINELOADER}" wineboot -u  | ||||
|     PW_START_PROGRESS_BAR | ||||
| fi | ||||
| sed -i '/steamclient/d' "${WINEPREFIX}"/*.reg  | ||||
| sed -i '/SteamPath/d' "${WINEPREFIX}"/*.reg  | ||||
|  | ||||
| rm -f "${WINEPREFIX}/drive_c/windows/system32"/steam*  | ||||
| rm -f "${WINEPREFIX}/drive_c/windows/syswow64"/steam*  | ||||
| } | ||||
| @@ -1,89 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
| ########################## | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| KILL_PORTWINE | ||||
| ########################## | ||||
| PW_WINECFG () | ||||
| { | ||||
| START_PORTWINE | ||||
| $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "winecfg" | ||||
| }  | ||||
| ########################## | ||||
| PW_WINEFILE () | ||||
| { | ||||
| START_PORTWINE | ||||
| cd "${WINEPREFIX}/drive_c/" | ||||
| if [ ! -z ${optirun_on} ] | ||||
| then | ||||
|     $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "explorer"  | ||||
| else | ||||
|     $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "explorer"  | ||||
| fi | ||||
| } | ||||
| ########################## | ||||
| PW_WINECMD () | ||||
| { | ||||
| export PW_USE_TERMINAL=1 | ||||
| START_PORTWINE | ||||
| if [ ! -z ${optirun_on} ] | ||||
| then | ||||
|     $PW_TERM "${PW_RUNTIME}" "${optirun_on}" "${port_on_run}" "run" "cmd" | ||||
| else | ||||
|     $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "cmd" | ||||
| fi | ||||
| } | ||||
| ########################## | ||||
| PW_WINEREG () | ||||
| { | ||||
| START_PORTWINE | ||||
| $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "regedit" | ||||
| } | ||||
| ########################## | ||||
| PW_WINETRICKS () | ||||
| { | ||||
| W_TRX_URL="https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks" | ||||
| W_TRX_EXT_VER="$(curl -s --list-only ${W_TRX_URL} | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')" | ||||
| if  ! [[ -f "${PORT_WINE_TMP_PATH}/winetricks" ]]  | ||||
| then | ||||
|     wget -T 3 --output-document=${PORT_WINE_TMP_PATH}/winetricks ${W_TRX_URL} | ||||
|     chmod u+x "${PORT_WINE_TMP_PATH}/winetricks" | ||||
| else | ||||
| W_TRX_INT_VER="$(cat "${PORT_WINE_TMP_PATH}/winetricks" | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')" | ||||
|         if  [[ $W_TRX_INT_VER != $W_TRX_EXT_VER ]] | ||||
|         then | ||||
|             rm -f "${PORT_WINE_TMP_PATH}/winetricks" | ||||
|             wget -T 3 --output-document=${PORT_WINE_TMP_PATH}/winetricks ${W_TRX_URL} | ||||
|             chmod u+x "${PORT_WINE_TMP_PATH}/winetricks" | ||||
|         fi | ||||
| fi #modded by Cefeiko | ||||
| export PW_USE_TERMINAL=1 | ||||
| START_PORTWINE | ||||
| $PW_TERM "${PW_RUNTIME}" "${PORT_WINE_TMP_PATH}/winetricks" -q --force | ||||
| } | ||||
| ########################## | ||||
| OUTPUT=$("${pw_yad}"  --borders=20 --form --center  \ | ||||
| --title "SETTINGS"  --image "winecfg" --separator=";" \ | ||||
| --field="WINE:CB" "DXVK ${PW_WINE_VER_DXVK}"!"VKD3D ${PW_WINE_VER_VKD3D}" \ | ||||
| --button='WINECFG'!!"Run winecfg for $portname":100 \ | ||||
| --button='WINEFILE'!!'проверка подсказки1':102 \ | ||||
| --button='WINECMD'!!'проверка подсказки2':104 \ | ||||
| --button='WINEREG'!!'проверка подсказки3':106 \ | ||||
| --button='WINETRICKS'!!'проверка подсказки4 - бла бла бла бла бла ла ла ла =)':108 ) | ||||
|  | ||||
| PW_YAD_SET="$?" | ||||
| export VULKAN_MOD=$(echo $OUTPUT | awk 'BEGIN {FS=";" } { print $1 }') | ||||
| if [ "${VULKAN_MOD}" = "DXVK ${PW_WINE_VER_DXVK}" ]; then | ||||
|     echo "0" > "${PORT_WINE_TMP_PATH}/dxvk_on" | ||||
| else | ||||
|     echo "off" > "${PORT_WINE_TMP_PATH}/dxvk_on"     | ||||
| fi | ||||
| case "$PW_YAD_SET" in | ||||
|     100) PW_WINECFG ;; | ||||
|     102) PW_WINEFILE ;; | ||||
|     104) PW_WINECMD ;; | ||||
|     106) PW_WINEREG ;; | ||||
|     108) PW_WINETRICKS ;; | ||||
| esac | ||||
| ########################## | ||||
| STOP_PORTWINE | ||||
| @@ -6,23 +6,40 @@ rm -f "${PORT_WINE_PATH}/"*".log" | ||||
| rm -f "${PORT_WINE_TMP_PATH}/update_notifier" | ||||
| rm -f "${PORT_WINE_TMP_PATH}/init_run_suc" | ||||
| rm -fr "${PORT_WINE_PATH}/data/pfx/dosdevices"  | ||||
| rm -fr "${PORT_WINE_PATH}/data/port_on"  | ||||
| rm -fr "${PORT_WINE_PATH}/data/dxvk.conf"  | ||||
| rm -f "${PORT_WINE_PATH}/Create_shortcut_PP.desktop" | ||||
| rm -f "${PORT_WINE_PATH}/Proton.desktop" | ||||
| rm -f "${PORT_WINE_PATH}/settings.desktop" | ||||
| rm -f "${PORT_WINE_PATH}/settings.desktop" | ||||
| rm -f "${PORT_WINE_PATH}/debug.desktop" | ||||
|  | ||||
| if [ -d "${PORT_WINE_PATH}/Settings" ]; then | ||||
| 	rm -fr "${PORT_WINE_PATH}/Settings" | ||||
| fi | ||||
|  | ||||
| if [ ! -z "${PATH_TO_GAME}" ]; then | ||||
| 	rm -f "${PATH_TO_GAME}"/*.dxvk-cache | ||||
| fi | ||||
| if [ -f "${PORT_WINE_PATH}/restart.desktop" ]; then | ||||
| 	rm "${PORT_WINE_PATH}/restart.desktop" | ||||
| fi | ||||
| if [ ! -d "/home/${USER}/.local/share/applications" ] | ||||
| then | ||||
| 	mkdir -p "/home/${USER}/.local/share/applications" | ||||
| else | ||||
| 	if [ -e "/home/${USER}/.local/share/applications/Create_shortcut_PP.desktop" ]; then  | ||||
| 		rm -f "/home/${USER}/.local/share/applications/Create_shortcut_PP.desktop" | ||||
| 	fi | ||||
| 	if [ -e "/home/${USER}/.local/share/applications/Proton.desktop" ]; then  | ||||
| 		rm -f "/home/${USER}/.local/share/applications/Proton.desktop" | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
|  | ||||
|  | ||||
| if [ ! -z "${gamename}" ]; then | ||||
| if ! [ "${portname}" = "PortProton" ]; then | ||||
| 	name_desktop="${gamename}"  | ||||
| 	echo "[Desktop Entry]"	 				  > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Name=${name_desktop}" 				 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Exec=env "${PORT_SCRIPTS_PATH}/start""	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Exec=env "${PORT_SCRIPTS_PATH}/start.sh""	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	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" | ||||
| @@ -34,28 +51,14 @@ else | ||||
| 	name_desktop="PortProton"  | ||||
| 	echo "[Desktop Entry]"	 				  > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Name=${name_desktop}" 				 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Exec=env "${PORT_SCRIPTS_PATH}/portproton.sh %U""	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Exec=env "${PORT_SCRIPTS_PATH}/start.sh %U""	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	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 "MimeType=application/x-ms-dos-executable;application/x-wine-extension-msp;"  >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "MimeType=application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi"  >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Path="${PORT_SCRIPTS_PATH}/""		 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Icon="${PORT_WINE_PATH}/data/img/w.png""   	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" /home/${USER}/.local/share/applications/  | ||||
|  | ||||
|     name_desktop="Create_shortcut_PP"  | ||||
| 	echo "[Desktop Entry]"	 				  > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Name=${name_desktop}" 				 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Exec=env "${PORT_SCRIPTS_PATH}/create_shortcut %U""	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	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 "MimeType=application/x-ms-dos-executable;application/x-wine-extension-msp;"  >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Path="${PORT_SCRIPTS_PATH}/""		 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "Icon="${PORT_WINE_PATH}/data/img/w.png""   	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	echo "NoDisplay=true"   	 >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" /home/${USER}/.local/share/applications/ | ||||
| fi | ||||
|  | ||||
| @@ -68,7 +71,7 @@ echo "Icon="${PORT_WINE_PATH}/data/img/readme.png""	>> "${PORT_WINE_PATH}/${name | ||||
| echo "URL=${urlg}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|  | ||||
| for name_desktop in "debug" "reset" | ||||
| for name_desktop in "reset" | ||||
| do | ||||
| 	echo ""[Desktop Entry]" | ||||
| 	"Name=${name_desktop}" | ||||
| @@ -81,17 +84,6 @@ do | ||||
| 	chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| done | ||||
|  | ||||
| name_desktop="settings" | ||||
| echo ""[Desktop Entry]" | ||||
| "Name=settings" | ||||
| "Exec=env "${PORT_SCRIPTS_PATH}/${name_desktop}.sh"" | ||||
| "Type=Application" | ||||
| "Categories=Game" | ||||
| "StartupNotify=true" | ||||
| "Path="${PORT_SCRIPTS_PATH}/"" | ||||
| "Icon="${PORT_WINE_PATH}/data/img/s.png""" > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
|  | ||||
| chmod u+x "${PORT_SCRIPTS_PATH}/"* | ||||
|  | ||||
| if [ ! -d "${PORT_WINE_PATH}/drive_c" ]; then | ||||
| @@ -113,14 +105,6 @@ fi | ||||
| sed -i "s/xuser/${USER}/g" "${PORT_WINE_PATH}/data/pfx/"*.reg | ||||
| sed -i "s/vagrant/${USER}/g" "${PORT_WINE_PATH}/data/pfx/"*.reg | ||||
|  | ||||
| if [ ! -z "${PATH_TO_GAME}" ]; then | ||||
| 	rm -f "${PATH_TO_GAME}"/*.dxvk-cache | ||||
| fi | ||||
|  | ||||
| if [ -f "${PORT_WINE_PATH}/restart.desktop" ]; then | ||||
| 	rm "${PORT_WINE_PATH}/restart.desktop" | ||||
| fi | ||||
|  | ||||
| if [ "${s_install}" = "1" ]; then | ||||
| 	echo "Installation completed successfully." | ||||
| else | ||||
|   | ||||
| @@ -1,20 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| if [ ! -z "$1" ]; then | ||||
|     KILL_PORTWINE | ||||
|     START_PORTWINE | ||||
|     if [ ! -z $optirun_on ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "$1" ${launch_parameters}  | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "$1" ${launch_parameters}  | ||||
|     fi | ||||
| else  | ||||
|     START_PORTWINE | ||||
|     if [ ! -z $optirun_on ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "${gamestart}" ${launch_parameters}  | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "${gamestart}" ${launch_parameters} | ||||
|     fi | ||||
| fi | ||||
| STOP_PORTWINE | ||||
							
								
								
									
										308
									
								
								data_from_portwine/scripts/start.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										308
									
								
								data_from_portwine/scripts/start.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,308 @@ | ||||
| #!/bin/bash | ||||
| # Author: PortWINE-Linux.ru | ||||
| if [ -f "$1" ]; then | ||||
|     export portwine_exe="$(readlink -f "$1")" | ||||
| fi | ||||
| . "$(dirname $(readlink -f "$0"))/runlib" | ||||
| ######################################################################## | ||||
| PORTWINE_LAUNCH () | ||||
| { | ||||
| KILL_PORTWINE | ||||
| START_PORTWINE | ||||
| PORTWINE_MSI=`basename "${portwine_exe}" | grep .msi` | ||||
| if [ ! -z "${PORTWINE_MSI}" ]; then    | ||||
|     echo "PORTWINE_MSI=${PORTWINE_MSI}" | ||||
|     export PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )" | ||||
|     cd "$PATH_TO_GAME" | ||||
|     if [ ! -z ${optirun_on} ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" msiexec /i "$portwine_exe"  | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" msiexec /i "$portwine_exe" | ||||
|     fi | ||||
| elif [ ! -z "${portwine_exe}" ]; then | ||||
|     export PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )" | ||||
|     cd "$PATH_TO_GAME" | ||||
|     if [ ! -z ${optirun_on} ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "$portwine_exe"  | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "$portwine_exe"  | ||||
|     fi | ||||
| elif [ -z "${gamestart}" ]; then   | ||||
|     if [ ! -z $optirun_on ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" explorer  | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" explorer | ||||
|     fi | ||||
| else | ||||
|     if [ ! -z $optirun_on ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "${gamestart}"   | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "${gamestart}" | ||||
|     fi | ||||
| fi | ||||
| } | ||||
| ######################################################################## | ||||
| PORTWINE_CREATE_SHORTCUT () | ||||
| { | ||||
| if [ ! -z "${portwine_exe}" ]; then | ||||
|     PORTPROTON_EXE="${portwine_exe}" | ||||
| else | ||||
|     PORTPROTON_EXE=$(zenity --file-selection --file-filter=""*.exe" "*.bat"" \ | ||||
|     --title="${sc_path}" --filename="${PORT_WINE_PATH}/data/pfx/drive_c/") | ||||
|     if [ $? -eq 1 ];then exit 1; fi | ||||
| fi | ||||
| PORTPROTON_NAME="$(basename "${PORTPROTON_EXE}" | sed s/".exe"/""/g )" | ||||
| PORTPROTON_PATH="$( cd "$( dirname "${PORTPROTON_EXE}" )" >/dev/null 2>&1 && pwd )"  | ||||
| if [ -x "`which wrestool 2>/dev/null`" ]; then | ||||
|     wrestool -x --output="${PORTPROTON_PATH}/" -t14 "${PORTPROTON_EXE}" | ||||
|     cp "$(ls -S -1 "${PORTPROTON_EXE}"*".ico"  | head -n 1)" "${PORTPROTON_EXE}.ico" | ||||
|     cp -f "${PORTPROTON_EXE}.ico" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.ico" | ||||
|     rm -f "${PORTPROTON_PATH}/"*.ico | ||||
| fi | ||||
| PORTPROTON_CMD="" | ||||
| PORTPROTON_CMD=$(zenity --entry --text "${sc_cmd}") | ||||
| if [ $? -eq 1 ];then exit 1; fi | ||||
| export PW_VULKAN_TO_DB=`cat "${PORT_WINE_TMP_PATH}/pw_vulkan"` | ||||
| if [ ! -z "${PORTWINE_DB}" ]; then | ||||
|     PORTWINE_DB_FILE=`grep -il "${PORTWINE_DB}" "${PORT_SCRIPTS_PATH}/portwine_db"/* | awk -F '.exe' '{print $1}'` | ||||
|     if [ ! -z "${PORTWINE_DB_FILE}" ] && [ -z "${PW_VULKAN_USE}" ]; then | ||||
|         echo "export PW_VULKAN_USE=${PW_VULKAN_TO_DB}" >> "${PORTWINE_DB_FILE}" | ||||
|     elif [ -z "${PORTWINE_DB_FILE}" ]; then | ||||
|         echo "#!/bin/bash | ||||
| #Author:  | ||||
| #"${PORTWINE_DB}.exe"  | ||||
| #Rating=1-5 | ||||
| ################################################ | ||||
| export PW_VULKAN_USE=${PW_VULKAN_TO_DB} | ||||
| export LAUNCH_PARAMETERS=\"${PORTPROTON_CMD}\"" > "${PORT_SCRIPTS_PATH}/portwine_db/$PORTWINE_DB" | ||||
|     fi | ||||
| fi | ||||
| name_desktop="${PORTPROTON_NAME}"  | ||||
| echo "[Desktop Entry]" > "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| echo "Name=${PORTPROTON_NAME}" >> "${PORT_WINE_PATH}/${name_desktop}.desktop"  | ||||
| echo "Exec=env PW_GUI_DISABLED_CS=1 "\"${PORT_SCRIPTS_PATH}/start.sh\" \"${PORTPROTON_EXE}\" "" \ | ||||
| >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| 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/${PORTPROTON_NAME}.ico"" >> "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| `zenity --question --title "${inst_set}." --text "${ss_done}" --no-wrap ` > /dev/null 2>&1   | ||||
| if [ $? -eq "0" ]; then | ||||
| 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" /home/${USER}/.local/share/applications/  | ||||
| fi | ||||
| xdg-open "${PORT_WINE_PATH}" 2>1 >/dev/null & | ||||
| } | ||||
| ######################################################################## | ||||
| PORTWINE_DEBUG () | ||||
| { | ||||
| KILL_PORTWINE | ||||
| export PW_USE_TERMINAL=1 | ||||
| START_PORTWINE | ||||
| echo "${port_deb1}" > "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "${port_deb2}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "--------------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "GLIBC version:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "echo $(ldd --version)" | grep ldd >> "${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 "var_pw_vulkan = ${var_pw_vulkan}" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| 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" | ||||
| lsb_release -d | sed s/Description/ОС/g >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "--------------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "Desktop Environment" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "$DESKTOP_SESSION" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "${XDG_CURRENT_DESKTOP}" >> "${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" | ||||
| cat /proc/cpuinfo | grep "model name" >> "${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" | ||||
| "${WINELIB}/amd64/usr/bin/glxinfo" -B >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "----------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "Vulkan info device name:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| "${WINELIB}/amd64/usr/bin/vulkaninfo" | grep deviceName >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| "${WINELIB}/amd64/usr/bin/vkcube" --c 50  | ||||
| if [ $? -eq 0 ]; then  | ||||
| 	echo "Vulkan cube test passed successfully" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| else | ||||
| 	echo "Vkcube test completed with error" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| fi | ||||
| echo "---------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| if [ ! -x "`which gamemoderun 2>/dev/null`" ] | ||||
| then | ||||
| 	echo "!!!gamemod not found!!!"  >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| fi | ||||
| echo "--------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "Version WINE in the Port" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| "$WINELOADER" --version 2>&1 | tee -a "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "-------------------------------------------" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "log WINE:" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
|  | ||||
| export PW_LOG=1 | ||||
| export DXVK_HUD="full" | ||||
| export PW_WINEDBG_DISABLE=0 | ||||
| export PW_XTERM="${WINELIB}/amd64/usr/bin/xterm -l -lf ${PORT_WINE_PATH}/${portname}.log.wine -geometry 159x37 -e" | ||||
|  | ||||
| if [ -f "${PORT_WINE_PATH}/${portname}.log.wine" ]; then | ||||
| 	rm -f "${PORT_WINE_PATH}/${portname}.log.wine" | ||||
| fi | ||||
| if [ ! -z "${portwine_exe}" ]; then | ||||
|     export PATH_TO_GAME="$( cd "$( dirname "${portwine_exe}" )" >/dev/null 2>&1 && pwd )" | ||||
|     cd "$PATH_TO_GAME" | ||||
|     if [ ! -z ${optirun_on} ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "$portwine_exe" ${LAUNCH_PARAMETERS} 2>&1 & | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "$portwine_exe" ${LAUNCH_PARAMETERS} 2>&1 & | ||||
|     fi | ||||
| elif [ -z "${gamestart}" ]; then   | ||||
|     if [ ! -z $optirun_on ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" explorer 2>&1 & | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" explorer 2>&1 & | ||||
|     fi | ||||
| else | ||||
|     if [ ! -z $optirun_on ]; then | ||||
|         $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "${gamestart}" ${LAUNCH_PARAMETERS} 2>&1 & | ||||
|     else | ||||
|         $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "${gamestart}" ${LAUNCH_PARAMETERS} 2>&1 & | ||||
|     fi | ||||
| fi | ||||
| zenity --info --title "DEBUG" --text "${port_debug}" --no-wrap && "${WINESERVER}" -k | ||||
| STOP_PORTWINE | sszen | ||||
| cat "${PORT_WINE_PATH}/${portname}.log.wine" >> "${PORT_WINE_PATH}/${portname}.log" | ||||
| rm -f "${PORT_WINE_PATH}/${portname}.log.wine" | ||||
| deb_text=$(cat "${PORT_WINE_PATH}/${portname}.log"  | awk '! a[$0]++')  | ||||
| echo "$deb_text" > "${PORT_WINE_PATH}/${portname}.log" | ||||
| echo "$deb_text" | zenity --text-info --editable \ | ||||
| --width=800 --height=600 \ | ||||
| --title="${portname}.log" | ||||
| } | ||||
| ######################################################################## | ||||
| PW_WINECFG () | ||||
| { | ||||
| START_PORTWINE | ||||
| $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "winecfg" | ||||
| }  | ||||
| ######################################################################## | ||||
| PW_WINEFILE () | ||||
| { | ||||
| START_PORTWINE | ||||
| cd "${WINEPREFIX}/drive_c/" | ||||
| if [ ! -z ${optirun_on} ] | ||||
| then | ||||
|     $PW_TERM "${PW_RUNTIME}" ${optirun_on} "${port_on_run}" "run" "explorer"  | ||||
| else | ||||
|     $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "explorer"  | ||||
| fi | ||||
| } | ||||
| ######################################################################## | ||||
| PW_WINECMD () | ||||
| { | ||||
| export PW_USE_TERMINAL=1 | ||||
| START_PORTWINE | ||||
| if [ ! -z ${optirun_on} ] | ||||
| then | ||||
|     $PW_TERM "${PW_RUNTIME}" "${optirun_on}" "${port_on_run}" "run" "cmd" | ||||
| else | ||||
|     $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "cmd" | ||||
| fi | ||||
| } | ||||
| ######################################################################## | ||||
| PW_WINEREG () | ||||
| { | ||||
| START_PORTWINE | ||||
| $PW_TERM "${PW_RUNTIME}" "${port_on_run}" "run" "regedit" | ||||
| } | ||||
| ######################################################################## | ||||
| PW_WINETRICKS () | ||||
| { | ||||
| UPDATE_WINETRICKS | ||||
| export PW_USE_TERMINAL=1 | ||||
| START_PORTWINE | ||||
| $PW_TERM "${PW_RUNTIME}" "${PORT_WINE_TMP_PATH}/winetricks" -q --force | ||||
| } | ||||
| ######################################################################## | ||||
| if [ ! -z "${portwine_exe}" ]; then | ||||
|     if [ -z "${PW_GUI_DISABLED_CS}" ] || [ "${PW_GUI_DISABLED_CS}" = 0 ] ; then | ||||
|         if [ ! -z "${PORTWINE_DB_FILE}" ] && [ ! -z "${PW_VULKAN_USE}" ]; then | ||||
|             if [ -z "${PW_COMMENT_DB}" ] ; then | ||||
|                 PW_COMMENT_DB="PortWINE database file for "\"${PORTWINE_DB}"\" was found." | ||||
|             fi | ||||
|             OUTPUT_START=$("${pw_yad}" --text-align=center --text "$PW_COMMENT_DB" --wrap-width=150 --borders=15 --form --center  \ | ||||
|             --title "$portname"  --image "$PW_GUI_ICON_PATH/port_proton.png" --separator=";" \ | ||||
|             --button='CREATE  SHORTCUT'!!"111":100 \ | ||||
|             --button='DEBUG'!!'проверка подсказки1':102 \ | ||||
|             --button='LAUNCH'!!'проверка подсказки3':106 ) | ||||
|             PW_YAD_SET="$?" | ||||
|         else | ||||
|             OUTPUT_START=$("${pw_yad}" --wrap-width=250 --borders=15 --form --center  \ | ||||
|             --title "$portname"  --image "$PW_GUI_ICON_PATH/port_proton.png" --separator=";" \ | ||||
|             --field="WINE:CB" "DXVK ${PW_WINE_VER_DXVK}"!"VKD3D ${PW_WINE_VER_VKD3D}"!"OPENGL ${PW_WINE_VER_DXVK}" \ | ||||
|             --button='CREATE  SHORTCUT'!!"111":100 \ | ||||
|             --button='DEBUG'!!'проверка подсказки1':102 \ | ||||
|             --button='LAUNCH'!!'проверка подсказки3':106 ) | ||||
|             PW_YAD_SET="$?" | ||||
|         fi | ||||
|     elif [ ! -z "${PORTWINE_DB_FILE}" ]; then | ||||
|         PORTWINE_LAUNCH | ||||
|     else | ||||
|         OUTPUT_START=$("${pw_yad}" --wrap-width=250 --borders=15 --form --center  \ | ||||
|         --title "$portname"  --image "$PW_GUI_ICON_PATH/port_proton.png" --separator=";" \ | ||||
|         --field="WINE:CB" "DXVK ${PW_WINE_VER_DXVK}"!"VKD3D ${PW_WINE_VER_VKD3D}"!"OPENGL ${PW_WINE_VER_DXVK}" \ | ||||
|         --button='CREATE  SHORTCUT'!!"111":100 \ | ||||
|         --button='DEBUG'!!'проверка подсказки1':102 \ | ||||
|         --button='LAUNCH'!!'проверка подсказки3':106 ) | ||||
|         PW_YAD_SET="$?" | ||||
|     fi | ||||
| else | ||||
|     OUTPUT_START=$("${pw_yad}" --wrap-width=250 --borders=15 --form --center  \ | ||||
|     --title "$portname"  --image "$PW_GUI_ICON_PATH/port_proton.png" --separator=";" \ | ||||
|     --field="WINE:CB" "DXVK ${PW_WINE_VER_DXVK}"!"VKD3D ${PW_WINE_VER_VKD3D}"!"OPENGL ${PW_WINE_VER_DXVK}" \ | ||||
|     --button='CREATE  SHORTCUT'!!"111":100 \ | ||||
|     --button='DEBUG'!!'проверка подсказки1':102 \ | ||||
|     --button='LAUNCH'!!'проверка подсказки3':106 \ | ||||
|     --button='WINECFG'!!"Run winecfg for $portname":108 \ | ||||
|     --button='WINEFILE'!!'проверка подсказки1':110 \ | ||||
|     --button='WINECMD'!!'проверка подсказки2':112 \ | ||||
|     --button='WINEREG'!!'проверка подсказки3':114 \ | ||||
|     --button='WINETRICKS'!!'проверка подсказки4 - бла бла бла бла бла ла ла ла =)':116 ) | ||||
|     PW_YAD_SET="$?" | ||||
| fi | ||||
| export VULKAN_MOD=$(echo $OUTPUT_START | awk 'BEGIN {FS=";" } { print $1 }') | ||||
| if [ "${VULKAN_MOD}" = "DXVK ${PW_WINE_VER_DXVK}" ]; then | ||||
|     echo "dxvk" > "${PORT_WINE_TMP_PATH}/pw_vulkan" | ||||
| elif [ "${VULKAN_MOD}" = "VKD3D ${PW_WINE_VER_VKD3D}" ]; then | ||||
|     echo "vkd3d" > "${PORT_WINE_TMP_PATH}/pw_vulkan" | ||||
| else    | ||||
|     echo "0" > "${PORT_WINE_TMP_PATH}/pw_vulkan" | ||||
| fi | ||||
| case "$PW_YAD_SET" in | ||||
|     100) PORTWINE_CREATE_SHORTCUT ;; | ||||
|     102) PORTWINE_DEBUG ;; | ||||
|     106) PORTWINE_LAUNCH ;; | ||||
|     108) PW_WINECFG ;; | ||||
|     110) PW_WINEFILE ;; | ||||
|     112) PW_WINECMD ;; | ||||
|     114) PW_WINEREG ;; | ||||
|     116) PW_WINETRICKS ;; | ||||
| esac | ||||
| ######################################################################## | ||||
| STOP_PORTWINE | ||||
| @@ -1,10 +1,8 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export gamedir="Battle.net" | ||||
| export gamename="Battle.net" | ||||
| export portname="PortBattleNET" | ||||
| export porturl="http://portwine-linux.ru/battle-net-linux/" | ||||
| export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}" | ||||
| export gamestart="${PATH_TO_GAME}/Battle.net Launcher.exe" | ||||
| @@ -29,7 +27,7 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="" | ||||
| export LAUNCH_PARAMETERS="" | ||||
| cd "${PATH_TO_GAME}" | ||||
| rm -fr "${PORT_WINE_PATH}/data/pfx/drive_c/ProgramData/Agent/data" | ||||
| rm -fr "${PORT_WINE_PATH}/data/pfx/drive_c/users/steamuser/Blizzard Entertainment/Battle.net/Cache" | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export portname="PortEpic" | ||||
| export gamename="Epic_Games" | ||||
| export gamedir="Epic Games/Launcher/Portal/Binaries/Win32/" | ||||
| export porturl="http://portwine-linux.ru/epic-games-linux/" | ||||
| @@ -29,7 +27,7 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="-opengl -SkipBuildPatchPrereq" | ||||
| export LAUNCH_PARAMETERS="-opengl -SkipBuildPatchPrereq" | ||||
| cd "${PATH_TO_GAME}" | ||||
| } | ||||
| ######################################################################## | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export portname="PortGoG" | ||||
| export gamename="GOG Galaxy" | ||||
| export gamedir="GOG Galaxy" | ||||
| export porturl="http://portwine-linux.ru/" | ||||
| @@ -41,7 +39,7 @@ done | ||||
|  | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="/runWithoutUpdating /deelevated" | ||||
| export LAUNCH_PARAMETERS="/runWithoutUpdating /deelevated" | ||||
| GalaxyCommunication & | ||||
| cd "${PATH_TO_GAME}" | ||||
| } | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export portname="PortLoL" | ||||
| export gamename="League_of_Legends" | ||||
| export gamedir="Riot Games/Riot Client" | ||||
| export porturl="http://portwine-linux.ru/league-of-legends-linux/" | ||||
| @@ -28,7 +26,7 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=0 | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="--launch-product=league_of_legends --launch-patchline=live" | ||||
| export LAUNCH_PARAMETERS="--launch-product=league_of_legends --launch-patchline=live" | ||||
| cd "${PATH_TO_GAME}" | ||||
|  | ||||
| if [ "$(cat /proc/sys/abi/vsyscall32)" -ne 0 ] | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export portname="PortMailRu" | ||||
| export gamename="GameMailRu" | ||||
| export gamedir="GameCenter" | ||||
| export porturl="http://portwine-linux.ru/mail-ru-linux" | ||||
| @@ -26,7 +24,7 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1 | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="" | ||||
| export LAUNCH_PARAMETERS="" | ||||
| cd "${PATH_TO_GAME}" | ||||
| } | ||||
| ######################################################################## | ||||
|   | ||||
| @@ -1,14 +1,10 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export portname="PortOSU" | ||||
| export gamename="OSU!" | ||||
| export gamedir="osu!" | ||||
| export porturl="http://portwine-linux.ru/osu-linux/" | ||||
| if [ ! -z ${gamedir} ]; then | ||||
|     export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}" | ||||
| fi | ||||
| export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}" | ||||
| export gamestart="${PATH_TO_GAME}/osu!.exe" | ||||
| ######################################################################## | ||||
| #export MESA_GL_VERSION_OVERRIDE=4.4COMPAT | ||||
| @@ -31,7 +27,7 @@ export PULSE_LATENCY_MSEC=40 | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="" | ||||
| export LAUNCH_PARAMETERS="" | ||||
| export STAGING_AUDIO_DURATION=5000 | ||||
| cd "${PATH_TO_GAME}" | ||||
| } | ||||
|   | ||||
| @@ -1,14 +1,10 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export portname="PortOrigin" | ||||
| export gamename="Origin" | ||||
| export gamedir="Origin" | ||||
| if [ ! -z "${gamedir}" ]; then | ||||
|     export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}" | ||||
| fi | ||||
| export gamestart="Origin.exe" | ||||
| export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}" | ||||
| export gamestart="${PATH_TO_GAME}/Origin.exe" | ||||
| export porturl="http://portwine-linux.ru/origin-linux/" | ||||
| ######################################################################## | ||||
| #export MESA_GL_VERSION_OVERRIDE=4.4COMPAT | ||||
| @@ -31,7 +27,7 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="" | ||||
| export LAUNCH_PARAMETERS="" | ||||
| cd "${PATH_TO_GAME}" | ||||
| sed -i 's%key="EnableIgo" value="true"%key="EnableIgo" value="false"%g' "${WINEPREFIX}/drive_c/users/steamuser/Application Data/Origin/local_"*".xml" | ||||
| } | ||||
|   | ||||
| @@ -1,21 +1,14 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export gamename= | ||||
| export gamedir= | ||||
| if [ ! -z "${gamedir}" ]; then | ||||
|     export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}" | ||||
| fi | ||||
| export gamestart="${PATH_TO_GAME}/.exe" | ||||
| export porturl="http://portwine-linux.ru/" | ||||
| ######################################################################## | ||||
| #export MESA_GL_VERSION_OVERRIDE=4.4COMPAT | ||||
| export WINEDLLOVERRIDES="" | ||||
| export PW_LOG=0             # Enable debug mode fo terminal  | ||||
| export PW_NO_FSYNC=0        # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| export PW_NO_ESYNC=1        # Do not use eventfd-based in-process synchronization primitives | ||||
| export PW_DXVK_ASYNC=0 | ||||
| export PW_NO_FSYNC=0        # Do not use futex-based in-process synchronization primitives. Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| export PW_NO_ESYNC=0        # Do not use eventfd-based in-process synchronization primitives | ||||
| export PW_DXVK_NO_ASYNC=0 | ||||
| export PW_USE_TERMINAL=0 | ||||
| export PW_OLD_GL_STRING=0 | ||||
| export PW_NVAPI_DISABLE=1 | ||||
| @@ -23,10 +16,12 @@ export PW_NO_WRITE_WATCH=0          # Disable support for memory write watches i | ||||
| export PW_HIDE_NVIDIA_GPU=0 | ||||
| export PW_FORCE_USE_VSYNC=2         # Vsync: 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
| export PW_WINEDBG_DISABLE=1 | ||||
| export PW_VKD3D_FEATURE_LEVEL=0 | ||||
| export PW_FORCE_DISABLED_GAMEMOD=0              # Force disabele gamemod | ||||
| export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| export PULSE_LATENCY_MSEC=60 | ||||
| #export MANGOHUD=1 | ||||
| #export MANGOHUD_CONFIG=full,height=500,font_size=32,position=top-right,toggle_hud=F9 | ||||
| #export DXVK_HUD=fps,devinfo | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| @@ -39,22 +34,6 @@ ADD_IN_STOP_PORTWINE () | ||||
| echo " " | ||||
| } | ||||
| ######################################################################## | ||||
| PW_INIT_RUN () | ||||
| { | ||||
| export PW_DLL_INSTALL="vb5run vb6run vcrun6 vcrun6sp6 b1ab1ab1a" | ||||
| for dll_install in $PW_DLL_INSTALL | ||||
| do | ||||
|     echo "######################################################" | ||||
|     echo "winetricks -q --force ${dll_install}" | ||||
|     "${PW_RUNTIME}" "${PORT_WINE_TMP_PATH}/winetricks" -q --force ${dll_install}  | ||||
|     if [ $? -eq 0 ]; then | ||||
|         echo "OK: ${dll_install}" >> "${PORT_WINE_TMP_PATH}/init_run_suc" | ||||
|     else | ||||
|         echo "ERROR: ${dll_install}" >> "${PORT_WINE_TMP_PATH}/init_run_suc" | ||||
|     fi | ||||
| done | ||||
| } | ||||
| ######################################################################## | ||||
| ADD_IN_POST_INSTALL () | ||||
| { | ||||
| update-desktop-database -q "${HOME}/.local/share/applications" | ||||
|   | ||||
| @@ -1,8 +1,6 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export portname=PortUplay | ||||
| export gamename=Uplay | ||||
| export gamedir="Ubisoft/Ubisoft Game Launcher" | ||||
| export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Program Files (x86)/${gamedir}" | ||||
| @@ -29,7 +27,7 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="" | ||||
| export LAUNCH_PARAMETERS="" | ||||
| cd "${PATH_TO_GAME}" | ||||
| } | ||||
| ######################################################################## | ||||
|   | ||||
| @@ -1,10 +1,8 @@ | ||||
| #!/bin/bash | ||||
| # License GPL | ||||
| # Author: Tergoev M.A. | ||||
| # Author: PortWINE-Linux.ru | ||||
| ######################################################################## | ||||
| export gamedir="WGC" | ||||
| export gamename="WGC" | ||||
| export portname="PortWGC" | ||||
| export porturl="http://portwine-linux.ru/port-wargaming-game-center/" | ||||
| export PATH_TO_GAME="${PORT_WINE_PATH}/data/pfx/drive_c/Games/${gamedir}" | ||||
| export gamestart="${PATH_TO_GAME}/wgc.exe" | ||||
| @@ -29,7 +27,7 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE | ||||
| ######################################################################## | ||||
| ADD_IN_START_PORTWINE () | ||||
| { | ||||
| export launch_parameters="" | ||||
| export LAUNCH_PARAMETERS="" | ||||
| cd "${PATH_TO_GAME}" | ||||
| sed -i 's/true/false/g' "${PORT_WINE_PATH}/data/pfx/drive_c/Games/WGC/preferences.xml" | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user