Added dgVoodoo2 gui, fix images in yad 13 and migrate, added the ability to select gui when starting the game

This commit is contained in:
2024-06-06 16:31:20 +05:00
parent d21f4f112c
commit 0065abf109
3 changed files with 312 additions and 127 deletions

View File

@ -13,8 +13,8 @@ echo '
██╔═══╝░██║░░██║██╔══██╗░░░██║░░░██╔═══╝░██╔══██╗██║░░██║░░░██║░░░██║░░██║██║╚████║
██║░░░░░╚█████╔╝██║░░██║░░░██║░░░██║░░░░░██║░░██║╚█████╔╝░░░██║░░░╚█████╔╝██║░╚███║
╚═╝░░░░░░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░░░░╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░░╚════╝░╚═╝░░╚══╝
'
if [[ $(id -u) = 0 ]] ; then
echo "Do not run this script as root!"
exit 1
@ -70,11 +70,11 @@ 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 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 FLATPAK_IN_USE
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
unset PW_LOCALE_SELECT
unset PW_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}*
@ -184,6 +184,17 @@ if [[ "${INSTALLING_PORT}" == 1 ]] ; then
return 0
fi
# choose gui start
if [[ -z "$PW_GUI_START" ]]
then
echo 'export PW_GUI_START="NOTEBOOK"' >> "$USER_CONF"
export PW_GUI_START="NOTEBOOK"
elif [[ -z "$PW_GUI_START" ]] ; then
echo 'export PW_GUI_START="PANED"' >> "$USER_CONF"
export PW_GUI_START="PANED"
fi
print_info "The first gui start in used: $PW_GUI_START\n"
# check skip update
if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] \
&& [[ ! -f "/tmp/portproton.lock" ]]
@ -236,8 +247,8 @@ 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"
cp -f "${PORT_WINE_PATH}/PortProton.desktop" "${HOME}/.local/share/applications/"
update-desktop-database -q "${HOME}/.local/share/applications"
fi
[[ "$MISSING_DESKTOP_FILE" == 1 ]] && portwine_missing_shortcut
@ -337,12 +348,25 @@ popd 1>/dev/null || fatal
check_nvidia_rtx && check_variables PW_VULKAN_USE "2"
[[ "${PW_USE_DGVOODOO2}" == "1" ]] && DGV_TXT="$(eval_gettext 'and dgVoodoo2 ')" || unset DGV_TXT
SORT_OPENGL="$(eval_gettext 'WineD3D OpenGL ${DGV_TXT}(For video cards without Vulkan)')"
SORT_VULKAN="$(eval_gettext 'WineD3D Vulkan ${DGV_TXT}(Damavand experimental)')"
SORT_LEGACY="$(eval_gettext 'Legacy DXVK ${DGV_TXT}(Vulkan v1.1)')"
SORT_STABLE="$(eval_gettext 'Stable DXVK, VKD3D ${DGV_TXT}(Vulkan v1.2)')"
SORT_NEWEST="$(eval_gettext 'Newest DXVK, VKD3D, D8VK ${DGV_TXT}(Vulkan v1.3+)')"
[[ "${PW_DGVOODOO2}" == "1" ]] && DGV2_TXT="$(eval_gettext '<b>dgVoodoo2 </b>')" || unset DGV2_TXT
[[ "${PW_VKBASALT}" == "1" ]] && VKBASALT_TXT="$(eval_gettext '<b>vkBasalt </b>')" || unset VKBASALT_TXT
[[ "${PW_MANGOHUD}" == "1" ]] && MANGOHUD_TXT="$(eval_gettext '<b>MangoHud </b>')" || unset MANGOHUD_TXT
if [[ "${PW_DGVOODOO2}" == "1" ]] \
|| [[ "${PW_VKBASALT}" == "1" ]] \
|| [[ "${PW_MANGOHUD}" == "1" ]]
then
NLINE_TXT='\n'
ENABLE_TXT="$(eval_gettext '<b>enable</b>.')"
else
unset NLINE_TXT ENABLE_TXT
fi
PW_SETTINGS_INDICATION="${NLINE_TXT}${VKBASALT_TXT}${MANGOHUD_TXT}${DGV2_TXT}${ENABLE_TXT}"
SORT_OPENGL="$(eval_gettext 'WineD3D OpenGL (For video cards without Vulkan)')"
SORT_VULKAN="$(eval_gettext 'WineD3D Vulkan (Damavand experimental)')"
SORT_LEGACY="$(eval_gettext 'Legacy DXVK (Vulkan v1.1)')"
SORT_STABLE="$(eval_gettext 'Stable DXVK, VKD3D (Vulkan v1.2)')"
SORT_NEWEST="$(eval_gettext 'Newest DXVK, VKD3D, D8VK (Vulkan v1.3+)')"
SORT_G_NINE="$(eval_gettext 'Gallium Nine (DirectX 9 for MESA)')"
SORT_G_ZINK="$(eval_gettext 'Gallium Zink (OpenGL to Vulkan)')"
@ -389,6 +413,7 @@ else
fi
unset PW_GUI_DISABLED_CS
fi
if [[ -f "${portwine_exe}" ]] ; then
if [[ "${PW_GUI_DISABLED_CS}" != 1 ]] ; then
pw_create_gui_png
@ -398,31 +423,69 @@ if [[ -f "${portwine_exe}" ]] ; then
else
PW_SHORTCUT="$(eval_gettext "DELETE SHORTCUT")!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!$(eval_gettext "Delete shortcut for select file..."):98"
fi
OUTPUT_START=$("${pw_yad}" --text-align=center --text "$PW_COMMENT_DB" --form \
--title "PortProton-${install_ver} (${scripts_install_ver})" \
--image "${PW_ICON_FOR_YAD}" --separator=";" \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--field="3D API : :CB" "${PW_DEFAULT_VULKAN_USE}" \
--field=" WINE : :CB" "${PW_DEFAULT_WINE_USE}" \
--field="PREFIX : :CBE" "${PW_ADD_PREFIXES_TO_GUI}" \
--field=":LBL" "" \
--button="$(eval_gettext "VKBASALT")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)")":120 \
--button="$(eval_gettext "MANGOHUD")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Enable Mangohud by default (R_SHIFT + F12 keyboard shortcuts disable Mangohud)")":122 \
--button="$(eval_gettext "EDIT DB")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Edit database file for") ${PORTWINE_DB}":118 \
--button="${PW_SHORTCUT}" \
--button="$(eval_gettext "DEBUG")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Launch with the creation of a .log file at the root PortProton")":102 \
--button="$(eval_gettext "LAUNCH")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Run file ...")":106 2>/dev/null)
PW_YAD_SET="$?"
if [[ "$PW_YAD_SET" == "1" || "$PW_YAD_SET" == "252" ]] ; then exit 0 ; fi
VULKAN_MOD=$(echo "${OUTPUT_START}" | grep \;\; | awk -F";" '{print $1}')
PW_WINE_VER=$(echo "${OUTPUT_START}" | grep \;\; | awk -F";" '{print $2}')
PW_PREFIX_NAME=$(echo "${OUTPUT_START}" | grep \;\; | awk -F";" '{print $3}' | sed -e s/[[:blank:]]/_/g)
if [[ -z "${PW_PREFIX_NAME}" ]] || [[ ! -z "$(echo "${PW_PREFIX_NAME}" | grep -E '^_.*' )" ]] ; then
PW_PREFIX_NAME="DEFAULT"
else
PW_PREFIX_NAME="${PW_PREFIX_NAME^^}"
try_remove_file "${PORT_WINE_TMP_PATH}/tmp_yad_form"
export KEY_START="$RANDOM"
if [[ "${PW_GUI_START}" = NOTEBOOK ]] ; then
"${pw_yad_v13_0}" --plug=$KEY_START --tabnum=1 --form --separator=";" \
--image="${PW_ICON_FOR_YAD}" --text-align="center" --text "$PW_COMMENT_DB""$PW_SETTINGS_INDICATION" \
--field="3D API : :CB" "${PW_DEFAULT_VULKAN_USE}" \
--field=" WINE : :CB" "${PW_DEFAULT_WINE_USE}" \
--field="PREFIX : :CBE" "${PW_ADD_PREFIXES_TO_GUI}" \
--field=":LBL" "" \
1> "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" 2>/dev/null &
"${pw_yad_v13_0}" --plug=$KEY_START --tabnum=2 --form --columns=2 --scroll --align-buttons \
--field="$(eval_gettext "MangoHud")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Enable Mangohud by default (R_SHIFT + F12 keyboard shortcuts disable Mangohud)")":"FBTN" '@bash -c "button_click_start 122"' \
--field="$(eval_gettext "vkBasalt")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)")":"FBTN" '@bash -c "button_click_start 120"' \
--field="$(eval_gettext "dgVoodoo2")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Enable dgVoodoo2 by default (This wrapper fixes many compatibility and rendering issues when running old games)")":"FBTN" '@bash -c "button_click_start 124"' \
2>/dev/null &
if [[ -f "${PORT_WINE_TMP_PATH}/tmp_yad_form_tab" ]] ; then
export TAB_START=2
try_remove_file "${PORT_WINE_TMP_PATH}/tmp_yad_form_tab"
else
export TAB_START=1
fi
"${pw_yad_v13_0}" --key=$KEY_START --notebook --expand --center --active-tab=$TAB_START \
--title "PortProton-${install_ver} (${scripts_install_ver})" \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--tab="$(eval_gettext "3D API")"!"$PW_GUI_ICON_PATH/$TAB_SIZE.png"!"" \
--tab="$(eval_gettext "ADDITIONAL SETTINGS")"!"$PW_GUI_ICON_PATH/$TAB_SIZE.png"!"" \
--button="$(eval_gettext "EDIT DB")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Edit database file for") ${PORTWINE_DB}":118 \
--button="${PW_SHORTCUT}" \
--button="$(eval_gettext "DEBUG")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Launch with the creation of a .log file at the root PortProton")":102 \
--button="$(eval_gettext "LAUNCH")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Run file ...")":106 2>/dev/null
PW_YAD_SET="$?"
if [[ "$PW_YAD_SET" == "1" || "$PW_YAD_SET" == "252" ]] ; then exit 0 ; fi
if [[ -f "${PORT_WINE_TMP_PATH}/tmp_yad_form" ]]; then
PW_YAD_SET=$(head -n 1 "${PORT_WINE_TMP_PATH}/tmp_yad_form" | awk '{print $1}')
export PW_YAD_SET
touch "${PORT_WINE_TMP_PATH}/tmp_yad_form_tab"
fi
pw_yad_form_vulkan
elif [[ "${PW_GUI_START}" = PANED ]] ; then
"${pw_yad_v13_0}" --plug=$KEY_START --tabnum=1 --form --separator=";" \
--image="${PW_ICON_FOR_YAD}" --text-align="center" --image-on-top --text "$PW_COMMENT_DB""$PW_SETTINGS_INDICATION" \
--field="3D API : :CB" "${PW_DEFAULT_VULKAN_USE}" \
--field=" WINE : :CB" "${PW_DEFAULT_WINE_USE}" \
--field="PREFIX : :CBE" "${PW_ADD_PREFIXES_TO_GUI}" \
1> "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" 2>/dev/null &
"${pw_yad_v13_0}" --plug=$KEY_START --tabnum=2 --form --columns=2 --scroll --align-buttons \
--field="$(eval_gettext "EDIT DB")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Edit database file for") ${PORTWINE_DB}":"FBTN" '@bash -c "button_click_start 118"' \
--field="$(eval_gettext "MangoHud")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Enable Mangohud by default (R_SHIFT + F12 keyboard shortcuts disable Mangohud)")":"FBTN" '@bash -c "button_click_start 122"' \
--field="$(eval_gettext "vkBasalt")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Enable vkBasalt by default to improve graphics in games running on Vulkan. (The HOME hotkey disables vkbasalt)")":"FBTN" '@bash -c "button_click_start 120"' \
--field="$(eval_gettext "dgVoodoo2")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Enable dgVoodoo2 by default (This wrapper fixes many compatibility and rendering issues when running old games)")":"FBTN" '@bash -c "button_click_start 124"' \
2>/dev/null &
"${pw_yad_v13_0}" --key=$KEY_START --paned --center --height="450" \
--title "PortProton-${install_ver} (${scripts_install_ver})" \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--button="${PW_SHORTCUT}" \
--button="$(eval_gettext "DEBUG")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Launch with the creation of a .log file at the root PortProton")":102 \
--button="$(eval_gettext "LAUNCH")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(eval_gettext "Run file ...")":106 2>/dev/null
PW_YAD_SET="$?"
if [[ "$PW_YAD_SET" == "1" || "$PW_YAD_SET" == "252" ]] ; then exit 0 ; fi
pw_yad_set_form
sed -i 's/$/\;/' "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan"
pw_yad_form_vulkan
fi
export PW_PREFIX_NAME PW_WINE_VER VULKAN_MOD
elif [[ -f "${PORTWINE_DB_FILE}" ]] ; then
portwine_launch
fi
@ -434,6 +497,11 @@ else
else NEW_MIRROR="CDN"
fi
if [[ "$PW_GUI_START" == "NOTEBOOK" ]]
then NEW_PW_GUI_START="PANED"
else NEW_PW_GUI_START="NOTEBOOK"
fi
orig_IFS="$IFS" && IFS=$'\n'
PW_ALL_DF="$(ls "${PORT_WINE_PATH}"/ | grep .desktop | grep -vE '(PortProton|readme)')"
if [[ -z "${PW_ALL_DF}" ]]
@ -459,7 +527,7 @@ else
--align-buttons --scroll --separator=" " ${PW_GENERATE_BUTTONS} 2>/dev/null &
IFS="$orig_IFS"
"${pw_yad_v13_0}" --plug=${KEY} --tabnum="${PW_GUI_SORT_TABS[3]}" --form --columns=3 --align-buttons --separator=";" \
"${pw_yad_v13_0}" --plug=$KEY --tabnum="${PW_GUI_SORT_TABS[3]}" --form --columns=3 --align-buttons --separator=";" \
--field=" $(eval_gettext "Reinstall PortProton")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"":"FBTN" '@bash -c "button_click gui_pw_reinstall_pp"' \
--field=" $(eval_gettext "Remove PortProton")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"":"FBTN" '@bash -c "button_click gui_rm_portproton"' \
--field=" $(eval_gettext "Update PortProton")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"":"FBTN" '@bash -c "button_click gui_pw_update"' \
@ -470,9 +538,10 @@ else
--field=" Xterm"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"":"FBTN" '@bash -c "button_click pw_start_cont_xterm"' \
--field=" $(eval_gettext "Credits")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"":"FBTN" '@bash -c "button_click gui_credits"' \
--field=" $(eval_gettext "Change mirror to") $NEW_MIRROR"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"":"FBTN" '@bash -c "button_click change_mirror"' \
--field=" $(eval_gettext "Change game start gui to") $NEW_PW_GUI_START"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"":"FBTN" '@bash -c "button_click change_gui_start"' \
2>/dev/null &
"${pw_yad_v13_0}" --plug=${KEY} --tabnum="${PW_GUI_SORT_TABS[2]}" --form --columns=3 --align-buttons --separator=";" \
"${pw_yad_v13_0}" --plug=$KEY --tabnum="${PW_GUI_SORT_TABS[2]}" --form --columns=3 --align-buttons --separator=";" \
--field=" 3D API : :CB" "${PW_DEFAULT_VULKAN_USE}" \
--field=" PREFIX : :CBE" "${PW_ADD_PREFIXES_TO_GUI}" \
--field=" WINE : :CB" "${PW_DEFAULT_WINE_USE}" \
@ -484,7 +553,7 @@ else
--field=" $(eval_gettext "Prefix Manager") "!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Run winecfg to edit the settings of the selected prefix")":"FBTN" '@bash -c "button_click WINECFG"' \
--field=" $(eval_gettext "File Manager")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Run wine file manager")":"FBTN" '@bash -c "button_click WINEFILE"' \
--field=" $(eval_gettext "Command line")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Run wine cmd")":"FBTN" '@bash -c "button_click WINECMD"' \
--field=" $(eval_gettext "Regedit")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Run wine regedit")":"FBTN" '@bash -c "button_click WINEREG"' 2>/dev/null 1> "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" &
--field=" $(eval_gettext "Regedit")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png"!"$(eval_gettext "Run wine regedit")":"FBTN" '@bash -c "button_click WINEREG"' 1> "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" 2>/dev/null &
"${pw_yad_v13_0}" --plug=$KEY --tabnum="${PW_GUI_SORT_TABS[1]}" --form --columns="$MAIN_GUI_COLUMNS" --align-buttons --scroll \
--field=" Dolphin 5.0"!"$PW_GUI_ICON_PATH/dolphin.png"!"$(eval_gettext "Emulator for Nintendo game consoles with high compatibility")":"FBTN" '@bash -c "button_click PW_DOLPHIN"' \
@ -575,11 +644,7 @@ else
fi
if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then exit 0 ; fi
if [[ -f "${PORT_WINE_TMP_PATH}/tmp_yad_form" ]]; then
PW_YAD_SET=$(head -n 1 "${PORT_WINE_TMP_PATH}/tmp_yad_form" | awk '{print $1}')
export PW_YAD_SET
fi
pw_yad_set_form
if [[ -f "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" ]] ; then
VULKAN_MOD="$(grep \;\; "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" | awk -F";" '{print $1}')"
PW_PREFIX_NAME="$(grep \;\; "${PORT_WINE_TMP_PATH}/tmp_yad_form_vulkan" | awk -F";" '{print $2}' | sed -e "s/[[:blank:]]/_/g" )"
@ -636,8 +701,10 @@ fi
open_changelog) open_changelog ;;
change_loc) change_loc ;;
change_mirror) change_mirror ;;
change_gui_start) change_gui_start ;;
120) gui_vkBasalt ;;
122) gui_MangoHud ;;
124) gui_dgVoodoo2 ;;
pw_create_prefix_backup) pw_create_prefix_backup ;;
gui_credits) gui_credits ;;
pw_start_cont_xterm) pw_start_cont_xterm ;;