setup.sh 4.29 KB
Newer Older
Mikhail Tergoev's avatar
Mikhail Tergoev committed
1
#!/usr/bin/env bash
castro-fidel's avatar
castro-fidel committed
2
# Author: linux-gaming.ru
Mikhail Tergoev's avatar
Mikhail Tergoev committed
3
# shellcheck disable=SC2317
4
export INSTALLING_PORT=1
Mikhail Tergoev's avatar
Mikhail Tergoev committed
5 6
# shellcheck source=./start.sh
source "$(dirname "$(readlink -f "$0")")/start.sh"
7

Mikhail Tergoev's avatar
Mikhail Tergoev committed
8 9
if check_flatpak
then PW_EXEC="flatpak run ru.linux_gaming.PortProton"
Mikhail Tergoev's avatar
Mikhail Tergoev committed
10
else PW_EXEC="env \"${PORT_SCRIPTS_PATH}/start.sh\" %F"
11
fi
Mikhail Tergoev's avatar
Mikhail Tergoev committed
12

Mikhail Tergoev's avatar
Mikhail Tergoev committed
13 14 15 16 17 18 19 20 21
cat << EOF > "${PORT_WINE_PATH}/PortProton.desktop"
[Desktop Entry]
Name=PortProton
Version=${install_ver}
Exec=$PW_EXEC
Type=Application
Terminal=False
Categories=Game
StartupNotify=true
Boris Yumankulov's avatar
Boris Yumankulov committed
22
MimeType=application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program;text/win-bat;
Mikhail Tergoev's avatar
Mikhail Tergoev committed
23 24
Path=${PORT_SCRIPTS_PATH}
Icon=${PORT_WINE_PATH}/data/img/w.png
Mikhail Tergoev's avatar
Mikhail Tergoev committed
25
EOF
Mikhail Tergoev's avatar
Mikhail Tergoev committed
26 27
chmod u+x "${PORT_WINE_PATH}/PortProton.desktop"

Mikhail Tergoev's avatar
Mikhail Tergoev committed
28 29 30
if [[ ! -f /usr/bin/portproton ]] \
&& ! check_flatpak
then
Mikhail Tergoev's avatar
Mikhail Tergoev committed
31
	cp -f "${PORT_WINE_PATH}/PortProton.desktop" "${HOME}/.local/share/applications/"
32
fi
Mikhail Tergoev's avatar
Mikhail Tergoev committed
33

Mikhail Tergoev's avatar
Mikhail Tergoev committed
34 35 36 37
if grep "SteamOS" "/etc/os-release" &>/dev/null \
|| check_flatpak
then
	cp -f "${PORT_WINE_PATH}/PortProton.desktop" "$(xdg-user-dir DESKTOP)"
38 39
fi

Mikhail Tergoev's avatar
Mikhail Tergoev committed
40
if ! check_flatpak ; then
Mikhail Tergoev's avatar
Mikhail Tergoev committed
41
	update-desktop-database -q "${HOME}/.local/share/applications"
Mikhail Tergoev's avatar
Mikhail Tergoev committed
42
	xdg-mime default PortProton.desktop "application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program;text/win-bat;"
43
fi
Mikhail Tergoev's avatar
Mikhail Tergoev committed
44

Mikhail Tergoev's avatar
Mikhail Tergoev committed
45 46 47
if [[ -f /usr/bin/portproton ]] \
&& [[ -f "${HOME}/.local/share/applications/PortProton.desktop" ]]
then
Mikhail Tergoev's avatar
Mikhail Tergoev committed
48 49
	try_remove_file "${HOME}/.local/share/applications/PortProton.desktop"
fi
50

51 52 53
if check_flatpak \
&& [[ ! -f /usr/bin/portproton ]] \
&& [[ -f "${HOME}/.local/share/applications/PortProton.desktop" ]] ; then
Mikhail Tergoev's avatar
Mikhail Tergoev committed
54
	PORT_WINE_OLD_PATH="$(grep "Exec=" "${HOME}/.local/share/applications/PortProton.desktop" | awk -F'env ' '{print $2}' | awk -F'/data/scripts/' '{print $1}')"
55
	if [[ -d "$PORT_WINE_OLD_PATH" ]] \
56
	&& yad_question "${translations[PortProton installed by script has been detected. Do you want to transfer all the data from it to the new flatpak version of PortProton?]}"
57
	then
58
		pw_start_progress_bar_block "${translations[Please wait...]}"
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

		try_remove_file "${HOME}/.local/share/applications/PortProton.desktop"
		try_remove_file "${PORT_WINE_OLD_PATH}"/PortProton.desktop
		try_remove_file "${PORT_WINE_OLD_PATH}"/readme.desktop

		try_remove_dir "${PORT_WINE_PATH}/data/dist"
		mv -f "${PORT_WINE_OLD_PATH}"/data/dist "${PORT_WINE_PATH}/data/"

		try_remove_dir "${PORT_WINE_PATH}/data/prefixes"
		mv -f "${PORT_WINE_OLD_PATH}"/data/prefixes "${PORT_WINE_PATH}/data/"

		try_remove_dir "${PORT_WINE_PATH}/data/tmp/mono"
		mv -f "${PORT_WINE_OLD_PATH}"/data/tmp/mono "${PORT_WINE_PATH}/data/tmp/"

		try_remove_dir "${PORT_WINE_PATH}/data/tmp/gecko"
		mv -f "${PORT_WINE_OLD_PATH}"/data/tmp/gecko "${PORT_WINE_PATH}/data/tmp/"

		cp -f "${PORT_WINE_OLD_PATH}"/data/img/*.png "${PORT_WINE_PATH}"/data/img/

		cp -f "${PORT_WINE_OLD_PATH}"/*.desktop "${PORT_WINE_PATH}"/

		sed -i "s|env \"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "${PORT_WINE_PATH}"/*.desktop
		sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "${PORT_WINE_PATH}"/*.desktop

		sed -i "s|env \"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "${HOME}/.local/share/applications"/*.desktop
		sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "${HOME}/.local/share/applications"/*.desktop

		sed -i "s|env \"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "$(xdg-user-dir DESKTOP)"/*.desktop
		sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "$(xdg-user-dir DESKTOP)"/*.desktop

		if [[ -d "${PORT_WINE_OLD_PATH}"/steam_scripts/ ]] ; then
			create_new_dir "${PORT_WINE_PATH}/steam_scripts/"
			cp -f "${PORT_WINE_OLD_PATH}"/steam_scripts/* "${PORT_WINE_PATH}"/steam_scripts/
			sed -i "s|\"${PORT_WINE_OLD_PATH}/data/scripts/start.sh\"|$PW_EXEC|g" "${PORT_WINE_PATH}"/steam_scripts/*

			for STUIDPATH in "${HOME}"/.local/share/Steam/userdata/*/ ; do
				SCPATH="${STUIDPATH}/config/shortcuts.vdf"
				if [[ -f "$SCPATH" ]]
				then sed -i "s|${PORT_WINE_OLD_PATH}|${PORT_WINE_PATH}|g" "$SCPATH"
				else break
				fi
			done
		fi
		pw_stop_progress_bar
103
		yad_info "${translations[PortProton has been moved to flatpak. You can now remove the old directory:]} ${PORT_WINE_OLD_PATH}"
104 105 106
	fi
fi

Mikhail Tergoev's avatar
Mikhail Tergoev committed
107
unset INSTALLING_PORT
Mikhail Tergoev's avatar
Mikhail Tergoev committed
108 109 110 111 112

echo "Restarting PP after installing..."
export SKIP_CHECK_UPDATES=1
/usr/bin/env bash -c "${PORT_WINE_PATH}/data/scripts/start.sh" $@ &
exit 0