Commit e96554cb authored by Mikhail Tergoev's avatar Mikhail Tergoev

refactoring installer and updated screenshots

parent bcf55cc1
......@@ -4,18 +4,28 @@
# License MIT
########################################################################
unset PW_AUTOPLAY PW_SET_LANG PW_SILENT_INSTALL
export portname="PortProton"
export port_ver=1.6
########################################################################
cd "$(dirname "$(readlink -f "$0")")"
script_path="$(pwd)"
def_path="${HOME}/${portname}"
def_path="${HOME}/PortProton"
########################################################################
fatal () {
echo -e "\n${1}\n"
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 () {
if [[ ! -z "$FLATPAK_IN_USE" ]]
then [[ "$FLATPAK_IN_USE" == 1 ]] && return 0 || return 1
......@@ -29,39 +39,61 @@ check_flatpak () {
fi
}
########################################################################
if [ "$(id -u)" == "0" ] ; then
fatal "Do not run the script from the superuser!"
fi
########################################################################
unset PW_USE_NS
if command -v yad &>/dev/null ; then
yad_gui="$(command -v yad) --title=${portname} --window-icon=portproton.svg --borders=10 --center --text-align=center"
elif grep -i "SteamOS" /etc/os-release &>/dev/null ; then
yad_gui="$(command -v zenity) --title=${portname} --window-icon=portproton.svg --borders=10 --center --text-align=center"
else
PW_USE_NS=1
fi
case "$LANG" in
ru_RU*)
PW_SET_LANG="Russian"
loc_use_flatpak="Не используйте нативную и flatpak версии PortProton в одной системе!"
loc_install="Установка PortProton"
loc_choose_path="Выберите путь для установки (обновления) PortProton,\nили оставьте его по умолчанию.\n\nВнимание:\nУстанавливать необходимо на файловую систему Linux (ext4, btrfs и прочие)."
loc_set="Выбор"
loc_path="Путь:"
loc_other_path="Другой путь..."
loc_set_path="Выберите путь..."
;;
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
$yad_gui --error --text "\nDo not use flatpak and the native version of ${portname} at the same time!" 2>/dev/null
fatal "Do not use flatpak and the native version of ${portname} at the same time!"
if command -v flatpak &>/dev/null \
&& flatpak list | grep "PortProton" &>/dev/null
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
########################################################################
[ -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
PP_CONFIG_FILE="${HOME}/.config/${portname}.conf"
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
PP_CONFIG_FILE="${HOME}/.config/PortProton.conf"
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 "${HOME}/PortWINE/PortProton" > "${PP_CONFIG_FILE}"
fi
fi
if ! check_flatpak ; then
if [ "$script_path" == "/usr/bin" ] && [ -f "${PP_CONFIG_FILE}" ] ; then
if [[ "$script_path" == "/usr/bin" ]] \
&& [[ -f "${PP_CONFIG_FILE}" ]]
then
export PORT_WINE_PATH="$(cat "${PP_CONFIG_FILE}" | head -n 1)"
if [ -f "${PORT_WINE_PATH}/data/scripts/start.sh" ] ; then
echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/${portname}_ver"
if [[ -f "${PORT_WINE_PATH}/data/scripts/start.sh" ]] ; then
echo "${port_ver}" > "${PORT_WINE_PATH}/data/tmp/PortProton_ver"
/usr/bin/env bash "${PORT_WINE_PATH}/data/scripts/start.sh" "$@"
exit 0
else
......@@ -72,113 +104,43 @@ else
if [ "$script_path" == "/app/bin" ] ; then
export PORT_WINE_PATH="${XDG_DATA_HOME}"
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" "$@"
exit 0
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_AUTOPLAY=1
export INSTALLING_PORT=1
########################################################################
if ! check_flatpak ; then
if [[ "${PW_USE_NS}" != "1" ]] ; then
case $PW_SET_LANG in
"Russian")
inst1=$($yad_gui --title "Установкка ${portname}" --text "Выберите путь для установки (обновления) ${portname},\nили оставьте его по умолчанию.\n\nВнимание:\nУстанавливать необходимо на файловую систему Linux (ext4, btrfs и прочие)." --list --radiolist --width=600 --height=200 \
--column="Выбор" --column "Путь:" \
TRUE "${def_path}" \
FALSE "Другой путь...")
[ "$?" != "0" ] && exit 1
inst1="$(echo $inst1 | awk -F'|' '{print $2}')"
case $inst1 in
"${def_path}")
D_PATH="${def_path}" ;;
"Другой путь...")
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}"
inst1=$($yad_gui --title "$loc_install" --text "$loc_choose_path" --list --radiolist \
--width=600 --height=200 --column="$loc_set" --column "$loc_path" \
TRUE "${def_path}" \
FALSE "$loc_other_path")
[ "$?" != "0" ] && exit 1
inst1="$(echo $inst1 | awk -F'|' '{print $2}')"
case $inst1 in
"${def_path}")
D_PATH="${def_path}" ;;
"$loc_other_path")
D_PATH="$($yad_gui --file --directory --title="$loc_set_path" --width=800 --height=800)" ;;
esac
case $PW_SET_LANG in
"Russian")
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
[[ -z "${D_PATH}" ]] && fatal
echo "${D_PATH}" | grep -i "PortProton" 2>/dev/null || D_PATH="${D_PATH}/PortProton"
export PORT_WINE_DATA_PATH="${D_PATH}/data"
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" ]]
then echo "${PORT_WINE_PATH}" > "${PP_CONFIG_FILE}"
fi
else
export PORT_WINE_DATA_PATH="${XDG_DATA_HOME}"
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"
else
rm -fr "${PORT_WINE_DATA_PATH}/tmp"
......@@ -186,21 +148,23 @@ else
fi
########################################################################
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
"Russian") echo "ru" > "${PORT_WINE_DATA_PATH}/tmp/${portname}_loc" ;;
"Spanish") echo "es" > "${PORT_WINE_DATA_PATH}/tmp/${portname}_loc" ;;
"English") echo "en" > "${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/PortProton_loc" ;;
"English") echo "en" > "${PORT_WINE_DATA_PATH}/tmp/PortProton_loc" ;;
esac
########################################################################
PW_NOTIFY_TEXT="Installing PortProton..."
pw_notify_send
########################################################################
export PORT_WINE_TMP_PATH="${PORT_WINE_DATA_PATH}/tmp"
if ! check_flatpak
then cd "${D_PATH}"
else cd "${PORT_WINE_DATA_PATH}"
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..."
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" \
......@@ -212,6 +176,7 @@ then
-o "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz"
[ "$?" != "0" ] && fatal "Critical error during file download!"
fi
echo "Try unpacking scripts..."
tar -xvzf "${PORT_WINE_TMP_PATH}/PortWINE-master.tar.gz" -C "${PORT_WINE_TMP_PATH}"
if [ "$?" = "0" ] ; then
......@@ -226,5 +191,6 @@ else
[ "$?" != "0" ] && fatal "Critical error during file unpacking!"
fi
########################################################################
kill -s SIGUSR1 "$YAD_PID_PROGRESS_BAR_BLOCK" &>/dev/null
cd "${PORT_WINE_DATA_PATH}/scripts"
/usr/bin/env bash "${PORT_WINE_DATA_PATH}/scripts/setup.sh" && exit 0
......@@ -4,7 +4,7 @@ Name[ru]=PortProton
Comment=Software for playing Microsoft Windows games and launchers
Comment[ru]=Установка и запуск Windows игр и программ
GenericName=Windows games and program launcher
GenericName[ru]=Средство запуска Windows игр и программ
GenericName[ru]=Средство установки и запуска Windows игр и программ
Categories=Game;
Type=Application
Exec=portproton %F
......
......@@ -3,8 +3,8 @@
<id>ru.linux_gaming.PortProton</id>
<name>PortProton</name>
<summary>Software for running Windows games</summary>
<summary xml:lang="ru">Программа для запуска игр с Windows</summary>
<summary>Software for running Windows games.</summary>
<summary xml:lang="ru">Программа для запуска Windows игр.</summary>
<developer id="linux-gaming.ru">
<name>Mikhail Tergoev</name>
......@@ -24,10 +24,10 @@
<description>
<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 xml:lang="ru">
PortProton – это проект, разработанный для того, чтобы сделать легким и удобным запуск Windows игр на Linux как для начинающих, так и для продвинутых пользователей. Проект стремится сделать запуск игр (и другого программного обеспечения) максимально простым, но в то же время предоставляет гибкие настройки для продвинутых пользователей
PortProton – это проект, разработанный для того, чтобы сделать легким и удобным запуск Windows игр на Linux как для начинающих, так и для продвинутых пользователей. Проект стремится сделать запуск игр (и другого программного обеспечения) максимально простым, но в то же время предоставляет гибкие настройки для продвинутых пользователей.
</p>
</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