Compare commits

...
Author SHA1 Message Date
Boria138 5384104542 feat: launch Epic games through EGL wrapper
Code check / Check code (pull_request) Failing after 2m30s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-07 23:26:55 +05:00
4 changed files with 35 additions and 5 deletions

No files matched your search

@@ -533,6 +533,21 @@ try_download () {
return 0
}
prepare_epic_wrapper () {
local expected_hash="1feb21e21e19cbb34e881791c8f2557769f59231e46850915d49a6d0c1ce4583"
export PW_EPIC_WRAPPER_EXE="${PORT_WINE_TMP_PATH}/plugins${PW_PLUGINS_VER}/epic/EpicGamesLauncher.exe"
if [[ ! -f "$PW_EPIC_WRAPPER_EXE" ]] ; then
create_new_dir "$(dirname "$PW_EPIC_WRAPPER_EXE")"
try_download \
"https://github.com/BananaWorks07/heroic-epic-integration/releases/download/v${PW_EPIC_WRAPPER_VER}/EpicGamesLauncher.exe" \
"$PW_EPIC_WRAPPER_EXE" no_mirror || return 1
fi
if [[ "$(sha256sum "$PW_EPIC_WRAPPER_EXE" | awk '{print $1}')" != "$expected_hash" ]] ; then
try_remove_file "$PW_EPIC_WRAPPER_EXE"
fatal "Epic launcher wrapper checksum verification failed"
fi
}
var_winedlloverride_update () {
export WINEDLLOVERRIDES="${1}${WINEDLLOVERRIDES:+;$WINEDLLOVERRIDES}"
}
@@ -4155,7 +4170,12 @@ EOF
else
case "${PW_EXE_FILE,,}" in
*.exe)
pw_run "${PW_VD_TMP[@]}" ${WINE_WIN_START} "${PW_EXE_FILE}"
if [[ -n "${PW_EPIC_WRAPPER_EXE:-}" ]] ; then
pw_run "${PW_VD_TMP[@]}" "${PW_EPIC_WRAPPER_EXE}" \
"${PW_EXE_FILE}" "$@"
else
pw_run "${PW_VD_TMP[@]}" ${WINE_WIN_START} "${PW_EXE_FILE}"
fi
;;
*.bat|*.cmd)
PW_USE_TERMINAL=1
+10 -3
View File
@@ -73,6 +73,9 @@ fi
export PW_START_PID="$$"
# shellcheck source=/dev/null
source "${PORT_SCRIPTS_PATH}/var"
read -r -a pw_full_command_line <<< "$0 $*"
export pw_full_command_line
export orig_IFS="$IFS"
@@ -119,6 +122,9 @@ elif [[ "$1" =~ ^--(debug|launch|edit-db)$ && "${2,,}" =~ \.(exe|bat|cmd|msi|reg
elif [[ -f "$OLDPWD/$2" ]] ; then
PW_EXE_FILE="$(realpath -s "$OLDPWD/$2")"
fi
elif [[ "$1" == "--epic-wrapper" && "${2,,}" =~ \.exe$ ]] ; then
prepare_epic_wrapper || fatal "Failed to prepare Epic launcher wrapper"
PW_EXE_FILE="$(realpath -s "$2")"
fi
export PW_EXE_FILE
@@ -164,9 +170,6 @@ export PW_VULKAN_DIR="${PORT_WINE_TMP_PATH}/VULKAN"
create_new_dir "${PW_VULKAN_DIR}"
cd "${PORT_SCRIPTS_PATH}" || fatal "Scripts directory not found: ${PORT_SCRIPTS_PATH}"
# shellcheck source=/dev/null
source "${PORT_SCRIPTS_PATH}/var"
# HACK: Avoid inheriting a system scripts cwd in pressure-vessel.
cd "${XDG_DATA_HOME:-$HOME}" || fatal "Data directory not found: ${XDG_DATA_HOME:-$HOME}"
@@ -576,6 +579,10 @@ Usage examples:
portwine_launch
stop_portproton
;;
--epic-wrapper)
portwine_launch "${@:3}"
stop_portproton
;;
--stop)
start_path="$(realpath "$0")"
pgrep -f -- "${start_path}.*--autoinstall" | while read -r autoinstall_pid ; do
+1
View File
@@ -16,6 +16,7 @@ export VKD3D_SAREK_VER="sarek-2.6.0"
export PW_LSFG_VK_VER="2.0.0-dev25-p11"
export PW_OPTISCALER_VER="v03-0.9.0-pre8"
export PW_SPECIALK_VER="SK_26_5_15"
export PW_EPIC_WRAPPER_VER="0.4"
export PW_GALLIUM_NINE_VER="0.10"
export DOTPFX_VER="48v9"
export DEFPFX_VER="v1"
+3 -1
View File
@@ -148,6 +148,7 @@ if [ -n "$LIST" ]; then
fi
"""
class MainWindow(
MainWindowControlHintsMixin,
MainWindowAutoInstallTabMixin,
@@ -2754,8 +2755,9 @@ class MainWindow(
)
return
try:
wrapper = shlex.join([self.start_sh[0], "--epic-wrapper"])
command = self.egs_api.build_command([
"launch", app_id, "--json", "--wrapper", self.start_sh[0],
"launch", app_id, "--json", "--wrapper", wrapper,
"--no-wine", "--skip-version-check",
])
process = subprocess.Popen(