Global changes for PortProton and add use DATABASE

This commit is contained in:
castro-fidel
2021-01-17 05:05:36 +03:00
parent 62fa3a10de
commit 8f825cd484
46 changed files with 876 additions and 981 deletions

View File

@ -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

View File

@ -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"

View File

@ -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?"

View 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:

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,8 @@
#!/bin/bash
#Author:
#AliceMadnessReturns.exe
#Rating=5
################################################
export PW_VULKAN_USE=dxvk
export LAUNCH_PARAMETERS=""
export PW_DLL_INSTALL="physx"

View 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

View 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

View 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"

View File

@ -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"

View 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"

View 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

View File

@ -0,0 +1,7 @@
#!/bin/bash
#Author:
#Game-TS3.exe
#Rating=5
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""

View 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

View 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

View 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"

View File

@ -0,0 +1,6 @@
#!/bin/bash
#Author: PortWINE-Linux.ru
#Rating=5
#Terminator.exe
################################################
export PW_VULKAN_USE=dxvk

View File

@ -0,0 +1,7 @@
#!/bin/bash
#Author:
#This War of Mine.exe
#Rating=5
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""

View 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"

View 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

View 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

View File

@ -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

View File

@ -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*
}

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View File

@ -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"

View File

@ -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}"
}
########################################################################

View File

@ -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}"
}

View File

@ -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 ]

View File

@ -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}"
}
########################################################################

View File

@ -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}"
}

View File

@ -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"
}

View File

@ -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"

View File

@ -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}"
}
########################################################################

View File

@ -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"
}