archboot/usr/bin/archboot-launcher.sh

137 lines
4.4 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-2.0-only
# written by Tobias Powalowski <tpowa@archlinux.org>
. /usr/lib/archboot/basic-common.sh
2023-07-17 08:43:20 +02:00
_TITLE="Archboot ${_RUNNING_ARCH} | Basic Setup | Launcher"
2023-07-14 07:46:24 +02:00
_check_desktop() {
_DESKTOP=()
update | grep -q Gnome && _DESKTOP+=( "GNOME" "Simple Beautiful Elegant" )
update | grep -q KDE && _DESKTOP+=( "PLASMA" "Simple By Default" )
update | grep -q Sway && _DESKTOP+=( "SWAY" "Tiling Wayland Compositor" )
update | grep -q Xfce && _DESKTOP+=( "XFCE" "Leightweight Desktop" )
}
_check_manage() {
_MANAGE=()
update | grep -q full && _MANAGE+=( "FULL" "Switch To Full Arch Linux System" )
update | grep -q 'latest archboot' && _MANAGE+=( "UPDATE" "Update Archboot Environment" )
update | grep -q image && _MANAGE+=( "IMAGE" "Create Archboot Images" )
2023-07-14 07:46:24 +02:00
}
2023-07-14 08:13:04 +02:00
_desktop () {
2023-08-04 16:07:03 +02:00
_dialog --cancel-label "Back" --title " Desktop Menu " --menu "" 10 40 6 "${_DESKTOP[@]}" 2>"${_ANSWER}" || return 1
2023-07-18 08:29:07 +02:00
[[ -e /.launcher-running ]] && rm /.launcher-running
2023-08-04 16:07:03 +02:00
_EXIT=$(cat "${_ANSWER}")
2023-07-19 22:09:27 +02:00
source /etc/locale.conf
2023-07-14 08:13:04 +02:00
if [[ "${_EXIT}" == "GNOME" ]]; then
if _dialog --defaultno --yesno "Gnome Desktop:\nDo you want to use the Wayland Backend?" 6 45; then
clear
update -gnome-wayland
else
clear
update -gnome
fi
elif [[ "${_EXIT}" == "PLASMA" ]]; then
if _dialog --defaultno --yesno "KDE/Plasma Desktop:\nDo you want to use the Wayland Backend?" 6 45; then
clear
update -plasma-wayland
else
clear
update -plasma
fi
elif [[ "${_EXIT}" == "SWAY" ]]; then
clear
update -sway
elif [[ "${_EXIT}" == "XFCE" ]]; then
clear
update -xfce
fi
exit 0
}
_manage() {
2023-08-04 16:07:03 +02:00
_dialog --cancel-label "Back" --title " Manage Archboot Menu " --menu "" 9 50 5 "${_MANAGE[@]}" 2>"${_ANSWER}" || return 1
2023-07-14 08:13:04 +02:00
clear
2023-07-18 08:29:07 +02:00
[[ -e /.launcher-running ]] && rm /.launcher-running
2023-08-04 16:07:03 +02:00
_EXIT=$(cat "${_ANSWER}")
2023-07-14 08:13:04 +02:00
if [[ "${_EXIT}" == "FULL" ]]; then
update -full-system
elif [[ "${_EXIT}" == "UPDATE" ]]; then
2023-07-18 07:32:48 +02:00
_run_update_environment
2023-07-14 08:13:04 +02:00
elif [[ "${_EXIT}" == "IMAGE" ]]; then
update -latest-image
fi
exit 0
}
_exit() {
#shellcheck disable=SC2086
2023-07-15 08:44:56 +02:00
_dialog --cancel-label "Back" --title " Exit Menu " --menu "" 9 30 5 \
2023-07-14 08:13:04 +02:00
"1" "Exit Program" \
"2" "Reboot System" \
2023-07-14 17:43:37 +02:00
"3" "Poweroff System" 2>${_ANSWER} || return 1
2023-08-04 16:07:03 +02:00
_EXIT=$(cat "${_ANSWER}")
2023-07-14 08:13:04 +02:00
if [[ "${_EXIT}" == "1" ]]; then
2023-07-18 08:29:07 +02:00
[[ -e /.launcher-running ]] && rm /.launcher-running
2023-07-14 08:17:40 +02:00
_show_login
2023-07-14 17:44:51 +02:00
exit 0
2023-07-14 08:13:04 +02:00
elif [[ "${_EXIT}" == "2" ]]; then
while true; do
sleep 1
_COUNT=$((_COUNT+1))
# abort after 10 seconds
_progress "$((_COUNT*10))" "Rebooting in $((10-_COUNT)) seconds. Don't forget to remove the boot medium!"
[[ "${_COUNT}" == 10 ]] && break
2023-08-04 20:04:37 +02:00
done | _dialog --title " System Reboot " --no-mouse --gauge "Rebooting in 10 seconds. Don't forget to remove the boot medium!" 6 75 0
2023-07-14 08:13:04 +02:00
reboot
elif [[ "${_EXIT}" == "3" ]]; then
while true; do
sleep 1
_COUNT=$((_COUNT+1))
# abort after 10 seconds
_progress "$((_COUNT*10))" "Powering off in $((10-_COUNT)) seconds. Don't forget to remove the boot medium!"
[[ "${_COUNT}" == 10 ]] && break
2023-08-04 20:04:37 +02:00
done | _dialog --title " System Shutdown " --no-mouse --gauge "Powering off in 10 seconds. Don't forget to remove the boot medium!" 6 75 0
2023-07-14 08:13:04 +02:00
poweroff
fi
}
_launcher() {
2023-07-14 07:46:24 +02:00
_MENU=()
2023-08-04 16:07:03 +02:00
if [[ -n "${_DESKTOP[*]}" ]]; then
2023-07-14 07:46:24 +02:00
_MENU+=( "2" "Launch Desktop Environment" )
fi
2023-08-04 16:07:03 +02:00
if [[ -n "${_MANAGE[*]}" ]]; then
2023-07-14 07:46:24 +02:00
_MENU+=( "3" "Manage Archboot Environment" )
fi
2023-07-19 10:27:36 +02:00
_dialog --default-item "${_DEFAULTITEM}" --cancel-label "Exit" --title " Main Menu " --menu "" 9 40 5 \
2023-08-04 16:07:03 +02:00
"1" "Launch Archboot Setup" "${_MENU[@]}" 2>"${_ANSWER}"
case $(cat "${_ANSWER}") in
"1")
2023-07-18 08:29:07 +02:00
[[ -e /.launcher-running ]] && rm /.launcher-running
setup
exit 0 ;;
"2")
2023-07-19 10:26:06 +02:00
_DEFAULTITEM=2
2023-07-19 10:28:27 +02:00
_desktop
;;
"3")
2023-07-19 10:26:06 +02:00
_DEFAULTITEM=3
2023-07-19 10:28:27 +02:00
_manage
2023-07-13 07:30:46 +02:00
;;
*)
2023-07-15 08:43:46 +02:00
_exit
;;
esac
}
_check
2023-07-19 10:30:29 +02:00
_DEFAULTITEM=1
2023-07-14 17:43:37 +02:00
while true; do
_check_desktop
_check_manage
_launcher
done
# vim: set ts=4 sw=4 et: