diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index f3bf3d8..1875c15 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -110,8 +110,8 @@ try_copy_file () { export -f try_copy_file try_copy_dir () { - if [ ! -d "$1" ] ; then print_info "directory $1 not found for copy" - elif [ -z "$2" ] ; then print_error "no way to copy directory $1" + if [ ! -d "$1" ] ; then print_info "directory $1 not found for copy" + elif [ -z "$2" ] ; then print_error "no way to copy directory $1" else cp -fr "$1" "$2" [ "$?" != 0 ] && print_error "failed to copy directory $1 to $2" || return 0 @@ -145,7 +145,7 @@ create_new_dir () { try_force_link_file () { if [ ! -f "$1" ] ; then : - elif [ -z "$2" ] ; then print_error "no way to link file $1" + elif [ -z "$2" ] ; then print_error "no way to link file $1" else ln -s -f -r "$1" "$2" [ "$?" != 0 ] && print_error "failed to link file $1 to $2" || return 0 @@ -169,8 +169,8 @@ check_symlink () { export -f check_symlink try_force_link_dir () { - if [ ! -d "$1" ] ; then print_info "directory $1 not found for link" - elif [ -z "$2" ] ; then print_error "no way to link directory $1" + if [ ! -d "$1" ] ; then print_info "directory $1 not found for link" + elif [ -z "$2" ] ; then print_error "no way to link directory $1" else ln -s -f -r "$1" "$2" [ "$?" != 0 ] && print_error "failed to link directory $1 to $2" || return 0 @@ -444,8 +444,6 @@ check_user_conf () { # export DXVK_HUD=full" # export GALLIUM_HUD=fps" EOF - elif grep "optirun_on" "${USER_CONF}" &>/dev/null ; then - sed -i '/optirun_on/d' "${USER_CONF}" fi } @@ -539,20 +537,18 @@ init_wine_ver () { fi done - grep 'Global,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' "${WINEDIR}/share/wine/wine.inf" &> /dev/null - if [[ "$?" != "0" ]] ; then + if ! grep 'Global,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' "${WINEDIR}/share/wine/wine.inf" &> /dev/null ; then echo 'HKLM,Software\NVIDIA Corporation\Global,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' >> "${WINEDIR}/share/wine/wine.inf" echo 'HKLM,System\ControlSet001\Services\nvlddmkm,"{41FCC608-8496-4DEF-B43E-7D9BD675A6FF}",0x10001,0x00000001' >> "${WINEDIR}/share/wine/wine.inf" sed -i '/Steam.exe/d' "${WINEDIR}/share/wine/wine.inf" sed -i '/\\Valve\\Steam/d' "${WINEDIR}/share/wine/wine.inf" sed -i '/winemenubuilder/d' "${WINEDIR}/share/wine/wine.inf" + rm -f "${WINEDIR}"/lib*/*steam* &>/dev/null + rm -f "${WINEDIR}"/lib*/wine/*/*steam* &>/dev/null + rm -f "${WINEDIR}"/lib*/wine/*-windows/winemenubuilder.exe &>/dev/null fi fi - rm -f "${WINEDIR}"/lib*/*steam* &>/dev/null - rm -f "${WINEDIR}"/lib*/wine/*/*steam* &>/dev/null - rm -f "${WINEDIR}"/lib*/wine/*-windows/winemenubuilder.exe &>/dev/null - export WINEDLLPATH="${WINEDIR}/lib64/wine:${WINEDIR}/lib/wine" if [[ -d "${PATH_TO_GAME}" ]] ; then export WINEDLLPATH+=":${PATH_TO_GAME}" @@ -844,6 +840,7 @@ stop_portwine () { kill -s SIGUSR1 "$(pgrep -a $PW_YAD_BIN | grep "\--notification" | awk '{print $1}')" 2>/dev/null fi add_in_stop_portwine + unset SKIP_CHECK_UPDATES exit 0 } export -f stop_portwine @@ -1263,8 +1260,6 @@ pw_init_db () { fi done fi - # rename var ENABLE_VKBASALT to PW_VKBASALT - sed -i 's/ENABLE_VKBASALT/PW_VKBASALT/g' "${PORTWINE_DB_FILE}" fi [[ "${START_FROM_STEAM}" == 1 ]] && export PW_GUI_DISABLED_CS=1 @@ -1447,26 +1442,29 @@ edit_user_conf_from_gui () { } pw_create_gui_png () { - if [[ ! -z "${PORTWINE_CREATE_SHORTCUT_NAME}" ]] ; then - PORTPROTON_NAME="${PORTWINE_CREATE_SHORTCUT_NAME}" - else - PW_PRODUCTNAME=$(env PERL5LIB="${PW_PLUGINS_PATH}/portable/lib/perl5" "${PW_PLUGINS_PATH}/portable/bin/exiftool" -ProductName "${portwine_exe}" 2>/dev/null | sed -n 's/^Product Name\s*:\s*//p') - if [[ "$PW_PRODUCTNAME" =~ "Launcher" ]] \ - || [[ "$PW_PRODUCTNAME" =~ "RU" ]] - then - PW_PRODUCTNAME="$(echo "$PW_PRODUCTNAME" | sed 's/Launcher\|RU//g')" - fi - - if [[ ! -z "$PW_PRODUCTNAME" ]] \ - && [[ "$PW_PRODUCTNAME" != Bootstrap* ]] \ - && ! echo "${portwine_exe}" | grep -i "setup" &>/dev/null - then - PORTPROTON_NAME="$PW_PRODUCTNAME" + if [[ -z "$PORTPROTON_NAME" ]] ; then + if [[ ! -z "${PORTWINE_CREATE_SHORTCUT_NAME}" ]] ; then + PORTPROTON_NAME="${PORTWINE_CREATE_SHORTCUT_NAME}" else - PORTPROTON_NAME="$(basename "${portwine_exe}" .exe)" + PW_PRODUCTNAME=$(env PERL5LIB="${PW_PLUGINS_PATH}/portable/lib/perl5" "${PW_PLUGINS_PATH}/portable/bin/exiftool" -ProductName "${portwine_exe}" 2>/dev/null | sed -n 's/^Product Name\s*:\s*//p') + if [[ "$PW_PRODUCTNAME" =~ "Launcher" ]] \ + || [[ "$PW_PRODUCTNAME" =~ "RU" ]] + then + PW_PRODUCTNAME="$(echo "$PW_PRODUCTNAME" | sed 's/Launcher\|RU//g')" + fi + + if [[ ! -z "$PW_PRODUCTNAME" ]] \ + && [[ "$PW_PRODUCTNAME" != Bootstrap* ]] \ + && ! echo "${portwine_exe}" | grep -i "setup" &>/dev/null + then + PORTPROTON_NAME="$PW_PRODUCTNAME" + else + PORTPROTON_NAME="$(basename "${portwine_exe}" .exe)" + fi fi + export PORTPROTON_NAME + edit_db_from_gui PORTPROTON_NAME fi - export PORTPROTON_NAME PW_RESIZE_TO="128" try_remove_file "${PORT_WINE_PATH}/data/img/setup.png" try_remove_file "${PORT_WINE_PATH}/data/img/Setup.png" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 8b1c93a..93ec4ce 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -2,6 +2,7 @@ # Author: Castro-Fidel (linux-gaming.ru) # Development assistants: Cefeiko; Dezert1r; Taz_mania; Anton_Famillianov; gavr; RidBowt; chal55rus; UserDiscord; Boria138; Vano; Akai # shellcheck disable=SC2140,SC2119,SC2206 +export START=$(date +%s.%N) ######################################################################## echo ' █░░ █ █▄░█ █░█ ▀▄▀ ▄▄ █▀▀ ▄▀█ █▀▄▀█ █ █▄░█ █▀▀ ░ █▀█ █░█ @@ -61,7 +62,9 @@ fi source "${PORT_SCRIPTS_PATH}/functions_helper" create_new_dir "${HOME}/.local/share/applications" -if [[ "${PW_SILENT_RESTART}" == 1 ]] || [[ "${START_FROM_STEAM}" == 1 ]] ; then +if [[ "${PW_SILENT_RESTART}" == 1 ]] \ +|| [[ "${START_FROM_STEAM}" == 1 ]] +then export PW_GUI_DISABLED_CS=1 unset PW_SILENT_RESTART else @@ -70,7 +73,7 @@ fi unset MANGOHUD MANGOHUD_DLSYM PW_NO_ESYNC PW_NO_FSYNC PW_VULKAN_USE WINEDLLOVERRIDES PW_NO_WRITE_WATCH PW_YAD_SET PW_ICON_FOR_YAD unset PW_CHECK_AUTOINSTAL PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PORTWINE_DB PORTWINE_DB_FILE PW_DISABLED_CREATE_DB RADV_PERFTEST -unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME FLATPAK_IN_USE +unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_TO_GAME PW_START_DEBUG PORTPROTON_NAME unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48 unset MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR @@ -113,21 +116,6 @@ create_new_dir "${PORT_WINE_TMP_PATH}"/mono export PW_VULKAN_DIR="${PORT_WINE_TMP_PATH}/VULKAN" create_new_dir "${PW_VULKAN_DIR}" -LSPCI_VGA="$(lspci -k 2>/dev/null | grep -E 'VGA|3D' | tr -d '\n')" -export LSPCI_VGA - -if command -v xrandr &>/dev/null ; then - try_remove_file "${PORT_WINE_TMP_PATH}/tmp_screen_configuration" - if [[ $(xrandr | grep "primary" | awk '{print $1}') ]] ; then - PW_SCREEN_RESOLUTION="$(xrandr | sed -rn 's/^.*primary.* ([0-9]+x[0-9]+).*$/\1/p')" - PW_SCREEN_PRIMARY="$(xrandr | grep "primary" | awk '{print $1}')" - fi - export PW_SCREEN_PRIMARY PW_SCREEN_RESOLUTION - print_var PW_SCREEN_RESOLUTION PW_SCREEN_PRIMARY -else - print_error "xrandr - not found!" -fi - cd "${PORT_SCRIPTS_PATH}" || fatal # shellcheck source=./var @@ -200,16 +188,29 @@ if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] \ && [[ ! -f "/tmp/portproton.lock" ]] then pw_port_update + pw_check_and_download_plugins + export PW_VULKANINFO_PORTABLE="$PW_PLUGINS_PATH/portable/bin/x86_64-linux-gnu-vulkaninfo" + VULKAN_DRIVER_NAME="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep driverName | awk '{print$3}' | head -1)" + LSPCI_VGA="$(lspci -k 2>/dev/null | grep -E 'VGA|3D' | tr -d '\n')" + export LSPCI_VGA VULKAN_DRIVER_NAME + + if command -v xrandr &>/dev/null ; then + try_remove_file "${PORT_WINE_TMP_PATH}/tmp_screen_configuration" + if [[ $(xrandr | grep "primary" | awk '{print $1}') ]] ; then + PW_SCREEN_RESOLUTION="$(xrandr | sed -rn 's/^.*primary.* ([0-9]+x[0-9]+).*$/\1/p')" + PW_SCREEN_PRIMARY="$(xrandr | grep "primary" | awk '{print $1}')" + fi + export PW_SCREEN_PRIMARY PW_SCREEN_RESOLUTION + echo "" + print_var PW_SCREEN_RESOLUTION PW_SCREEN_PRIMARY + else + print_error "xrandr - not found!" + fi + echo "" else scripts_install_ver=$(head -n 1 "${PORT_WINE_TMP_PATH}/scripts_ver") export scripts_install_ver fi -unset SKIP_CHECK_UPDATES - -pw_check_and_download_plugins -export PW_VULKANINFO_PORTABLE="$PW_PLUGINS_PATH/portable/bin/x86_64-linux-gnu-vulkaninfo" -VULKAN_DRIVER_NAME="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep driverName | awk '{print$3}' | head -1)" -export VULKAN_DRIVER_NAME # create lock file if [[ -f "/tmp/portproton.lock" ]] ; then @@ -234,21 +235,23 @@ pw_check_and_download_dxvk_and_vkd3d # shellcheck source=/dev/null source "${USER_CONF}" -kill_portwine -killall -15 $PW_YAD_BIN 2>/dev/null -kill -TERM "$(pgrep -a yad | grep PortProton | head -n 1 | awk '{print $1}')" 2>/dev/null +if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] ; then + kill_portwine + killall -15 $PW_YAD_BIN 2>/dev/null + kill -TERM "$(pgrep -a yad | grep PortProton | head -n 1 | awk '{print $1}')" 2>/dev/null -if [[ -f "/usr/bin/portproton" ]] \ -&& [[ -f "${HOME}/.local/share/applications/PortProton.desktop" ]] -then - rm -f "${HOME}/.local/share/applications/PortProton.desktop" -fi + if [[ -f "/usr/bin/portproton" ]] \ + && [[ -f "${HOME}/.local/share/applications/PortProton.desktop" ]] + then + rm -f "${HOME}/.local/share/applications/PortProton.desktop" + fi -if grep "SteamOS" "/etc/os-release" &>/dev/null \ -&& [[ ! -f "${HOME}/.local/share/applications/PortProton.desktop" ]] -then - cp -f "${PORT_WINE_PATH}/PortProton.desktop" "${HOME}/.local/share/applications/" - update-desktop-database -q "${HOME}/.local/share/applications" + if grep "SteamOS" "/etc/os-release" &>/dev/null \ + && [[ ! -f "${HOME}/.local/share/applications/PortProton.desktop" ]] + then + cp -f "${PORT_WINE_PATH}/PortProton.desktop" "${HOME}/.local/share/applications/" + update-desktop-database -q "${HOME}/.local/share/applications" + fi fi [[ "$MISSING_DESKTOP_FILE" == 1 ]] && portwine_missing_shortcut @@ -349,8 +352,6 @@ for DAIG in ./* ; do done popd 1>/dev/null || fatal -check_nvidia_rtx && check_variables PW_VULKAN_USE "2" - [[ "${PW_DGVOODOO2}" == "1" ]] && DGV2_TXT='dgVoodoo2 ' || unset DGV2_TXT [[ "${PW_VKBASALT}" == "1" ]] && VKBASALT_TXT='vkBasalt ' || unset VKBASALT_TXT [[ "${PW_MANGOHUD}" == "1" ]] && MANGOHUD_TXT='MangoHud ' || unset MANGOHUD_TXT @@ -443,6 +444,8 @@ if [[ -f "${portwine_exe}" ]] ; then export TAB_START=1 fi +print_error "START 449: $(echo "$(date +%s.%N) - $START" | bc)" + "${pw_yad}" --key=$KEY_START --notebook --center --active-tab=$TAB_START --width="800" --tab-pos=right \ --title "PortProton-${install_ver} (${scripts_install_ver})" --expand --buttons-layout=expand \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \