Commit e96554cb authored by Mikhail Tergoev's avatar Mikhail Tergoev

refactoring installer and updated screenshots

parent bcf55cc1
...@@ -4,18 +4,28 @@ ...@@ -4,18 +4,28 @@
# License MIT # License MIT
######################################################################## ########################################################################
unset PW_AUTOPLAY PW_SET_LANG PW_SILENT_INSTALL unset PW_AUTOPLAY PW_SET_LANG PW_SILENT_INSTALL
export portname="PortProton"
export port_ver=1.6 export port_ver=1.6
######################################################################## ########################################################################
cd "$(dirname "$(readlink -f "$0")")" cd "$(dirname "$(readlink -f "$0")")"
script_path="$(pwd)" script_path="$(pwd)"
def_path="${HOME}/${portname}" def_path="${HOME}/PortProton"
######################################################################## ########################################################################
fatal () { fatal () {
echo -e "\n${1}\n" echo -e "\n${1}\n"
exit 1 exit 1
} }
######################################################################## ########################################################################
if [[ "$(id -u)" == "0" ]] ; then
fatal "Do not run the script from the superuser!"
fi
########################################################################
if grep -i "SteamOS" /etc/os-release &>/dev/null
then fatal "You will need to install flatpak version of PortProton: appstream://ru.linux_gaming.PortProton\n\nhttps://flathub.org/apps/ru.linux_gaming.PortProton\n"
elif ! command -v yad &>/dev/null
then fatal "You will need to install \"yad\" to your system!"
else yad_gui="$(command -v yad) --window-icon=ru.linux_gaming.PortProton.svg --borders=10 --center --text-align=center"
fi
########################################################################
check_flatpak () { check_flatpak () {
if [[ ! -z "$FLATPAK_IN_USE" ]] if [[ ! -z "$FLATPAK_IN_USE" ]]
then [[ "$FLATPAK_IN_USE" == 1 ]] && return 0 || return 1 then [[ "$FLATPAK_IN_USE" == 1 ]] && return 0 || return 1
...@@ -29,39 +39,61 @@ check_flatpak () { ...@@ -29,39 +39,61 @@ check_flatpak () {
fi fi
} }
######################################################################## ########################################################################
if [ "$(id -u)" == "0" ] ; then case "$LANG" in
fatal "Do not run the script from the superuser!" ru_RU*)
fi PW_SET_LANG="Russian"
######################################################################## loc_use_flatpak="Не используйте нативную и flatpak версии PortProton в одной системе!"
unset PW_USE_NS loc_install="Установка PortProton"
if command -v yad &>/dev/null ; then loc_choose_path="Выберите путь для установки (обновления) PortProton,\nили оставьте его по умолчанию.\n\nВнимание:\nУстанавливать необходимо на файловую систему Linux (ext4, btrfs и прочие)."
yad_gui="$(command -v yad) --title=${portname} --window-icon=portproton.svg --borders=10 --center --text-align=center" loc_set="Выбор"
elif grep -i "SteamOS" /etc/os-release &>/dev/null ; then loc_path="Путь:"
yad_gui="$(command -v zenity) --title=${portname} --window-icon=portproton.svg --borders=10 --center --text-align=center" loc_other_path="Другой путь..."
else loc_set_path="Выберите путь..."
PW_USE_NS=1 ;;
fi es_ES*)
PW_SET_LANG="Spanish"
loc_use_flatpak="¡No utilice flatpak y la versión nativa de PortProton al mismo tiempo!"
loc_install="Instalar PortProton"
loc_choose_path="Selecciona la ruta de instalación (actualización) PortProton,\no déjalo en el valor predeterminado. \n\nAtención:\nInstala en un sistema de archivos Linux (ext4, btrfs, etc.)."
loc_set="Elección"
loc_path="Camino"
loc_other_path="Otro camino..."
loc_set_path="Selecciona el camino..."
;;
*)
PW_SET_LANG="English"
loc_use_flatpak="\nDo not use flatpak and the native version of PortProton at the same time!"
loc_install="Install PortProton"
loc_choose_path="Select the installation path (update) PortProton,\nor leave it in default. \n\nAttention:\nInstall on a Linux file system (ext4, btrfs, etc.)"
loc_set="Set"
loc_path="Path:"
loc_other_path="Other path..."
loc_set_path="Select the path..."
;;
esac
######################################################################## ########################################################################
if flatpak list | grep "${portname}" &>/dev/null ; then if command -v flatpak &>/dev/null \
$yad_gui --error --text "\nDo not use flatpak and the native version of ${portname} at the same time!" 2>/dev/null && flatpak list | grep "PortProton" &>/dev/null
fatal "Do not use flatpak and the native version of ${portname} at the same time!" then
$yad_gui --error --title="PortProton" --text "$loc_use_flatpak" 2>/dev/null
fatal "Do not use flatpak and the native version of PortProton at the same time!"
fi fi
######################################################################## ########################################################################
[ -z "${XDG_DATA_HOME}" ] && export XDG_DATA_HOME="$HOME/.local/share" [[ -z "${XDG_DATA_HOME}" ]] && export XDG_DATA_HOME="$HOME/.local/share"
if ! check_flatpak ; then if ! check_flatpak ; then
PP_CONFIG_FILE="${HOME}/.config/${portname}.conf" PP_CONFIG_FILE="${HOME}/.config/PortProton.conf"
if [ -f "${XDG_DATA_HOME}/PortWINE/PortProton/data/scripts/start.sh" ] ; then if [[ -f "${XDG_DATA_HOME}/PortWINE/PortProton/data/scripts/start.sh" ]] ; then
echo "${XDG_DATA_HOME}/PortWINE/PortProton" > "${PP_CONFIG_FILE}"
elif [ -f "${HOME}/PortWINE/PortProton/data/scripts/start.sh" ] ; then
echo "${XDG_DATA_HOME}/PortWINE/PortProton" > "${PP_CONFIG_FILE}" echo "${XDG_DATA_HOME}/PortWINE/PortProton" > "${PP_CONFIG_FILE}"
elif [[ -f "${HOME}/PortWINE/PortProton/data/scripts/start.sh" ]] ; then
echo "${HOME}/PortWINE/PortProton" > "${PP_CONFIG_FILE}"
fi fi
fi
if ! check_flatpak ; then if [[ "$script_path" == "/usr/bin" ]] \
if [ "$script_path" == "/usr/bin" ] && [ -f "${PP_CONFIG_FILE}" ] ; then && [[ -f "${PP_CONFIG_FILE}" ]]
then
export PORT_WINE_PATH="$(cat "${PP_CONFIG_FILE}" | head -n 1)" export PORT_WINE_PATH="$(cat "${PP_CONFIG_FILE}" | head -n 1)"
if [ -f "${PORT_WINE_PATH}/data/scripts/start.sh" ] ; then if [[ -f "${PORT_WINE_PATH}/data/scripts/start.sh" ]] ; then
echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/${portname}_ver" echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/PortProton_ver"
/usr/bin/env bash "${PORT_WINE_PATH}/data/scripts/start.sh" "$@" /usr/bin/env bash "${PORT_WINE_PATH}/data/scripts/start.sh" "$@"
exit 0 exit 0
else else
...@@ -72,113 +104,43 @@ else ...@@ -72,113 +104,43 @@ else
if [ "$script_path" == "/app/bin" ] ; then if [ "$script_path" == "/app/bin" ] ; then
export PORT_WINE_PATH="${XDG_DATA_HOME}" export PORT_WINE_PATH="${XDG_DATA_HOME}"
if [ -f "${PORT_WINE_PATH}/scripts/start.sh" ] ; then if [ -f "${PORT_WINE_PATH}/scripts/start.sh" ] ; then
echo "${port_ver}" > "${PORT_WINE_PATH}/tmp/${portname}_ver" echo "${port_ver}" > "${PORT_WINE_PATH}/tmp/PortProton_ver"
/usr/bin/env bash "${PORT_WINE_PATH}/scripts/start.sh" "$@" /usr/bin/env bash "${PORT_WINE_PATH}/scripts/start.sh" "$@"
exit 0 exit 0
fi fi
fi fi
fi fi
if echo "$LANG" | grep -i "ru_RU.utf" &>/dev/null ; then
PW_SET_LANG="Russian"
elif echo "$LANG" | grep -i "es_ES.utf" &>/dev/null ; then
PW_SET_LANG="Spanish"
else
PW_SET_LANG="English"
fi
########################################################################
pw_notify_send () {
if command -v notify-send &>/dev/null ; then
if [[ -f "/usr/share/icons/hicolor/scalable/apps/portproton.svg" ]]
then notify-send -u normal -a PortProton -i "/usr/share/icons/hicolor/scalable/apps/portproton.svg" $@ "${PW_NOTIFY_TEXT}"
else notify-send -u normal -a PortProton $@ "${PW_NOTIFY_TEXT}"
fi
fi
}
######################################################################## ########################################################################
export PW_SILENT_INSTALL=1 export PW_SILENT_INSTALL=1
export PW_AUTOPLAY=1 export PW_AUTOPLAY=1
export INSTALLING_PORT=1 export INSTALLING_PORT=1
######################################################################## ########################################################################
if ! check_flatpak ; then if ! check_flatpak ; then
if [[ "${PW_USE_NS}" != "1" ]] ; then inst1=$($yad_gui --title "$loc_install" --text "$loc_choose_path" --list --radiolist \
case $PW_SET_LANG in --width=600 --height=200 --column="$loc_set" --column "$loc_path" \
"Russian") TRUE "${def_path}" \
inst1=$($yad_gui --title "Установкка ${portname}" --text "Выберите путь для установки (обновления) ${portname},\nили оставьте его по умолчанию.\n\nВнимание:\nУстанавливать необходимо на файловую систему Linux (ext4, btrfs и прочие)." --list --radiolist --width=600 --height=200 \ FALSE "$loc_other_path")
--column="Выбор" --column "Путь:" \ [ "$?" != "0" ] && exit 1
TRUE "${def_path}" \ inst1="$(echo $inst1 | awk -F'|' '{print $2}')"
FALSE "Другой путь...") case $inst1 in
[ "$?" != "0" ] && exit 1 "${def_path}")
inst1="$(echo $inst1 | awk -F'|' '{print $2}')" D_PATH="${def_path}" ;;
case $inst1 in "$loc_other_path")
"${def_path}") D_PATH="$($yad_gui --file --directory --title="$loc_set_path" --width=800 --height=800)" ;;
D_PATH="${def_path}" ;; esac
"Другой путь...")
D_PATH="$($yad_gui --file --directory --title="Выберите путь..." --width=800 --height=800)" ;;
esac ;;
"Spanish")
inst1=$($yad_gui --title "Instalar ${portname}" --text "Selecciona la ruta de instalación (actualización) ${portname},\no déjalo en el valor predeterminado. \n\nAtención:\nInstala en un sistema de archivos Linux (ext4, btrfs, etc.)." --list --radiolist --width=600 --height=200 \
--column="Elección" --column "Camino" \
TRUE "${def_path}" \
FALSE "Otro camino...")
[ "$?" != "0" ] && exit 1
inst1="$(echo $inst1 | awk -F'|' '{print $2}')"
case $inst1 in
"${def_path}")
D_PATH="${def_path}" ;;
"Otro camino...")
D_PATH="$($yad_gui --file --directory --title="Selecciona el camino..." --width=800 --height=800)" ;;
esac ;;
"English")
inst1=$($yad_gui --title "Install ${portname}" --text "Select the installation path (update) ${portname},\nor leave it in default. \n\nAttention:\nInstall on a Linux file system (ext4, btrfs, etc.)" --list --radiolist --width=600 --height=200 \
--column="Set..." --column "Path:" \
TRUE "${def_path}" \
FALSE "Other path...")
inst1="$(echo $inst1 | awk -F'|' '{print $2}')"
[ "$?" != "0" ] && exit 1
case $inst1 in
"${def_path}")
D_PATH="${def_path}" ;;
"Other path...")
D_PATH="$($yad_gui --file --directory --title="Select the path...")" ;;
esac ;;
esac
[[ -z "${D_PATH}" ]] && fatal
echo "${D_PATH}" | grep -i "${portname}" 2>/dev/null || D_PATH="${D_PATH}/${portname}"
case $PW_SET_LANG in [[ -z "${D_PATH}" ]] && fatal
"Russian") echo "${D_PATH}" | grep -i "PortProton" 2>/dev/null || D_PATH="${D_PATH}/PortProton"
progress_bar() {
$yad_gui --progress --title="Установка..." --text="Настройка ${portname}" --pulsate --auto-close --auto-kill --width=500
} ;;
"Spanish")
progress_bar() {
$yad_gui --progress --title="Instalar..." --text="Instalar ${portname}" --pulsate --auto-close --auto-kill --width=500
} ;;
"English")
progress_bar() {
$yad_gui --progress --title="Install..." --text="Install ${portname}" --pulsate --auto-close --auto-kill --width=500
} ;;
esac
else
D_PATH="${def_path}"
PW_NOTIFY_TEXT="Installing PortProton..."
pw_notify_send
fi
fi
########################################################################
if ! check_flatpak ; then
export PORT_WINE_DATA_PATH="${D_PATH}/data" export PORT_WINE_DATA_PATH="${D_PATH}/data"
export PORT_WINE_PATH="${D_PATH}" export PORT_WINE_PATH="${D_PATH}"
else
export PORT_WINE_DATA_PATH="${XDG_DATA_HOME}"
fi
if ! check_flatpak ; then
if [[ ! -z "$PORT_WINE_PATH" ]] if [[ ! -z "$PORT_WINE_PATH" ]]
then echo "${PORT_WINE_PATH}" > "${PP_CONFIG_FILE}" then echo "${PORT_WINE_PATH}" > "${PP_CONFIG_FILE}"
fi fi
else
export PORT_WINE_DATA_PATH="${XDG_DATA_HOME}"
fi fi
if [ ! -d "${PORT_WINE_DATA_PATH}" ] ; then
if [[ ! -d "${PORT_WINE_DATA_PATH}" ]] ; then
mkdir -p "$PORT_WINE_DATA_PATH" || fatal "Cannot create a directory: $PORT_WINE_PATH" mkdir -p "$PORT_WINE_DATA_PATH" || fatal "Cannot create a directory: $PORT_WINE_PATH"
else else
rm -fr "${PORT_WINE_DATA_PATH}/tmp" rm -fr "${PORT_WINE_DATA_PATH}/tmp"
...@@ -186,21 +148,23 @@ else ...@@ -186,21 +148,23 @@ else
fi fi
######################################################################## ########################################################################
mkdir -p "${PORT_WINE_DATA_PATH}/tmp" mkdir -p "${PORT_WINE_DATA_PATH}/tmp"
echo "${port_ver}" > "${PORT_WINE_DATA_PATH}/tmp/${portname}_ver" echo "${port_ver}" > "${PORT_WINE_DATA_PATH}/tmp/PortProton_ver"
case "${PW_SET_LANG}" in case "${PW_SET_LANG}" in
"Russian") echo "ru" > "${PORT_WINE_DATA_PATH}/tmp/${portname}_loc" ;; "Russian") echo "ru" > "${PORT_WINE_DATA_PATH}/tmp/PortProton_loc" ;;
"Spanish") echo "es" > "${PORT_WINE_DATA_PATH}/tmp/${portname}_loc" ;; "Spanish") echo "es" > "${PORT_WINE_DATA_PATH}/tmp/PortProton_loc" ;;
"English") echo "en" > "${PORT_WINE_DATA_PATH}/tmp/${portname}_loc" ;; "English") echo "en" > "${PORT_WINE_DATA_PATH}/tmp/PortProton_loc" ;;
esac esac
######################################################################## ########################################################################
PW_NOTIFY_TEXT="Installing PortProton..."
pw_notify_send
########################################################################
export PORT_WINE_TMP_PATH="${PORT_WINE_DATA_PATH}/tmp" export PORT_WINE_TMP_PATH="${PORT_WINE_DATA_PATH}/tmp"
if ! check_flatpak if ! check_flatpak
then cd "${D_PATH}" then cd "${D_PATH}"
else cd "${PORT_WINE_DATA_PATH}" else cd "${PORT_WINE_DATA_PATH}"
fi fi
$yad_gui --progress --pulsate --title="$loc_install" --text="$loc_install" \
--skip-taskbar --no-buttons --width=500 &>/dev/null &
YAD_PID_PROGRESS_BAR_BLOCK="$!"
echo -e "\nTry download scripts from gitlab.eterfund.ru..." echo -e "\nTry download scripts from gitlab.eterfund.ru..."
if ! curl -f -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' \ if ! curl -f -# -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" -H 'Cache-Control: no-cache, no-store' -H 'Pragma: no-cache' \
-L "https://gitlab.eterfund.ru/Castro-Fidel/PortWINE/-/archive/master/PortWINE-master.tar.gz" \ -L "https://gitlab.eterfund.ru/Castro-Fidel/PortWINE/-/archive/master/PortWINE-master.tar.gz" \
...@@ -212,6 +176,7 @@ then ...@@ -212,6 +176,7 @@ then
-o "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -o "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
[ "$?" != "0" ] && fatal "Critical error during file download!" [ "$?" != "0" ] && fatal "Critical error during file download!"
fi fi
echo "Try unpacking scripts..." echo "Try unpacking scripts..."
tar -xvzf "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -C "${PORT_WINE_TMP_PATH}" tar -xvzf "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -C "${PORT_WINE_TMP_PATH}"
if [ "$?" = "0" ] ; then if [ "$?" = "0" ] ; then
...@@ -226,5 +191,6 @@ else ...@@ -226,5 +191,6 @@ else
[ "$?" != "0" ] && fatal "Critical error during file unpacking!" [ "$?" != "0" ] && fatal "Critical error during file unpacking!"
fi fi
######################################################################## ########################################################################
kill -s SIGUSR1 "$YAD_PID_PROGRESS_BAR_BLOCK" &>/dev/null
cd "${PORT_WINE_DATA_PATH}/scripts" cd "${PORT_WINE_DATA_PATH}/scripts"
/usr/bin/env bash "${PORT_WINE_DATA_PATH}/scripts/setup.sh" && exit 0 /usr/bin/env bash "${PORT_WINE_DATA_PATH}/scripts/setup.sh" && exit 0
...@@ -4,7 +4,7 @@ Name[ru]=PortProton ...@@ -4,7 +4,7 @@ Name[ru]=PortProton
Comment=Software for playing Microsoft Windows games and launchers Comment=Software for playing Microsoft Windows games and launchers
Comment[ru]=Установка и запуск Windows игр и программ Comment[ru]=Установка и запуск Windows игр и программ
GenericName=Windows games and program launcher GenericName=Windows games and program launcher
GenericName[ru]=Средство запуска Windows игр и программ GenericName[ru]=Средство установки и запуска Windows игр и программ
Categories=Game; Categories=Game;
Type=Application Type=Application
Exec=portproton %F Exec=portproton %F
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
<id>ru.linux_gaming.PortProton</id> <id>ru.linux_gaming.PortProton</id>
<name>PortProton</name> <name>PortProton</name>
<summary>Software for running Windows games</summary> <summary>Software for running Windows games.</summary>
<summary xml:lang="ru">Программа для запуска игр с Windows</summary> <summary xml:lang="ru">Программа для запуска Windows игр.</summary>
<developer id="linux-gaming.ru"> <developer id="linux-gaming.ru">
<name>Mikhail Tergoev</name> <name>Mikhail Tergoev</name>
...@@ -24,10 +24,10 @@ ...@@ -24,10 +24,10 @@
<description> <description>
<p> <p>
PortProton is a project designed to make it easy and convenient to run Windows games on Linux for both beginners and advanced users. The project strives to make running games (and other software) as easy as possible, but at the same time provides flexible settings for advanced users PortProton is a project designed to make it easy and convenient to run Windows games on Linux for both beginners and advanced users. The project strives to make running games (and other software) as easy as possible, but at the same time provides flexible settings for advanced users.
</p> </p>
<p xml:lang="ru"> <p xml:lang="ru">
PortProton – это проект, разработанный для того, чтобы сделать легким и удобным запуск Windows игр на Linux как для начинающих, так и для продвинутых пользователей. Проект стремится сделать запуск игр (и другого программного обеспечения) максимально простым, но в то же время предоставляет гибкие настройки для продвинутых пользователей PortProton – это проект, разработанный для того, чтобы сделать легким и удобным запуск Windows игр на Linux как для начинающих, так и для продвинутых пользователей. Проект стремится сделать запуск игр (и другого программного обеспечения) максимально простым, но в то же время предоставляет гибкие настройки для продвинутых пользователей.
</p> </p>
</description> </description>
......
screenshots/app_menu.png

44.3 KB | W: | H:

screenshots/app_menu.png

42.6 KB | W: | H:

screenshots/app_menu.png
screenshots/app_menu.png
screenshots/app_menu.png
screenshots/app_menu.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/auto_install.png

64 KB | W: | H:

screenshots/auto_install.png

104 KB | W: | H:

screenshots/auto_install.png
screenshots/auto_install.png
screenshots/auto_install.png
screenshots/auto_install.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/edit_db.png

92.3 KB | W: | H:

screenshots/edit_db.png

125 KB | W: | H:

screenshots/edit_db.png
screenshots/edit_db.png
screenshots/edit_db.png
screenshots/edit_db.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/emulators.png

50.7 KB | W: | H:

screenshots/emulators.png

84.3 KB | W: | H:

screenshots/emulators.png
screenshots/emulators.png
screenshots/emulators.png
screenshots/emulators.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/installed.png

36.8 KB | W: | H:

screenshots/installed.png

29.6 KB | W: | H:

screenshots/installed.png
screenshots/installed.png
screenshots/installed.png
screenshots/installed.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/mangohud_settings.png

75.6 KB | W: | H:

screenshots/mangohud_settings.png

117 KB | W: | H:

screenshots/mangohud_settings.png
screenshots/mangohud_settings.png
screenshots/mangohud_settings.png
screenshots/mangohud_settings.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/portproton_settings.png

36.4 KB | W: | H:

screenshots/portproton_settings.png

36.4 KB | W: | H:

screenshots/portproton_settings.png
screenshots/portproton_settings.png
screenshots/portproton_settings.png
screenshots/portproton_settings.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/vkbasalt_settings.png

83.3 KB | W: | H:

screenshots/vkbasalt_settings.png

99.8 KB | W: | H:

screenshots/vkbasalt_settings.png
screenshots/vkbasalt_settings.png
screenshots/vkbasalt_settings.png
screenshots/vkbasalt_settings.png
  • 2-up
  • Swipe
  • Onion skin
screenshots/wine_settings.png

45.1 KB | W: | H:

screenshots/wine_settings.png

43 KB | W: | H:

screenshots/wine_settings.png
screenshots/wine_settings.png
screenshots/wine_settings.png
screenshots/wine_settings.png
  • 2-up
  • Swipe
  • Onion skin
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment