From ead33bc910ecb0de1a889d704cbdd58b92ebb963 Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Tue, 25 Feb 2025 23:25:10 +0500 Subject: [PATCH] Fix LAUNCH_PARAMETERS with backslashes (VKP or mods) --- data_from_portwine/scripts/functions_helper | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index f37c9794..0cf6807e 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -2913,12 +2913,13 @@ edit_db_from_gui () { fi fi - # Escaping backslashes and quotes for Windows paths + # HACK: Escaping backslashes and quotes for Windows paths proxy_mod_db=$(echo "$proxy_mod_db" | sed 's/\\/\\\\\\\\/g; s/"/\\"/g') + proxy_mod_db_escaped=$(printf '%s\n' "$proxy_mod_db" | sed 's/[\/&]/\\&/g') if [[ $(<"${PORTWINE_DB_FILE}") =~ export\ ${mod_db}= ]] - then sed -i "s|export ${mod_db}=.*|export ${mod_db}=\"$proxy_mod_db\"|g" "${PORTWINE_DB_FILE}" - else echo "export ${mod_db}=\"$proxy_mod_db\"" >> "${PORTWINE_DB_FILE}" + then sed -i "s|export ${mod_db}=.*|export ${mod_db}=\"${proxy_mod_db_escaped}\"|g" "${PORTWINE_DB_FILE}" + else echo "export ${mod_db}=\"${proxy_mod_db}\"" >> "${PORTWINE_DB_FILE}" fi done fi @@ -3541,6 +3542,8 @@ start_portwine () { export PW_GAMEMODERUN_SLR="" fi + # TODO: Add org.freedesktop.ScreenSaver.SimulateUserActivity for Flatpak support + # org.freedesktop.ScreenSaver.Inhibit doesn`t work because the Inhibit method is released as soon as the D-Bus connection is released if command -v systemd-inhibit &>/dev/null \ && [[ "$GAMEMODERUN" != "1" ]] then @@ -4327,6 +4330,7 @@ pw_run () { print_var "WINEDIR" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_WINE_USE" "PW_VULKAN_USE" "VULKAN_DRIVER_NAME" print_var "VKD3D_CONFIG" "PW_LD_LIBRARY_PATH" "PATH" "WINEESYNC" "WINEFSYNC" "WINEFSYNC_FUTEX2" print_var "WINEDLLPATH" "WINE_CPU_TOPOLOGY" "PW_RUN_GAMESCOPE" "LD_LIBRARY_PATH" "PW_VK_ICD_FILENAMES" + proxy_launch_parameters=${LAUNCH_PARAMETERS//\\\\/\\} if [[ "$PW_USE_RUNTIME" == 1 ]] \ && [[ "$PW_WINE_USE" != "USE_SYSTEM_WINE" ]] then @@ -4349,7 +4353,7 @@ pw_run () { ${PW_GAMEMODERUN_SLR} \ ${PW_MANGOHUD_SLR} \ ${PW_DISPLAY} \ - "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS} &>>"${PW_LOG_TO_FILE}" + "${WINELOADER}" "$@" ${proxy_launch_parameters} &>>"${PW_LOG_TO_FILE}" else if [[ "$PW_USE_TERMINAL" == 1 ]] ; then PW_ADD_TO_ARGS_IN_RUNTIME="--xterm" @@ -4368,7 +4372,7 @@ pw_run () { ${PW_GAMEMODERUN_SLR} \ ${PW_MANGOHUD_SLR} \ ${PW_DISPLAY} \ - "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS} &>>"${PW_LOG_TO_FILE}" + "${WINELOADER}" "$@" ${proxy_launch_parameters} &>>"${PW_LOG_TO_FILE}" print_info "Update prefix log:" [[ -f "${PW_TMPFS_PATH}/update_pfx_log" ]] && cat "${PW_TMPFS_PATH}/update_pfx_log" echo @@ -4396,7 +4400,7 @@ pw_run () { ${PW_MANGOHUD_SLR} \ ${PW_DISPLAY} \ ${PW_INHIBIT_SLR}\ - "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS} &>>"${PW_LOG_TO_FILE}" + "${WINELOADER}" "$@" ${proxy_launch_parameters} &>>"${PW_LOG_TO_FILE}" wait_wineserver else print_info "Update prefix log:" @@ -4415,7 +4419,7 @@ pw_run () { ${PW_MANGOHUD_SLR} \ ${PW_DISPLAY} \ ${PW_INHIBIT_SLR}\ - "${WINELOADER}" "$@" ${LAUNCH_PARAMETERS} + "${WINELOADER}" "$@" ${proxy_launch_parameters} wait_wineserver fi fi