first proto of dialog boxes, and makefile for tests

dialog
Matt C 3 years ago
parent cae0f326d5
commit 91c6e6f6a9

@ -0,0 +1,7 @@
install:
chmod +x *.sh
mv *.sh /usr/bin
mv /usr/bin/citrine.sh /usr/bin/citrine
mv /usr/bin/citrine.internal.sh /usr/bin/citrine.internal
test: install
citrine

@ -14,6 +14,26 @@ prompt() {
read response read response
} }
# ---------------------------------
yn=""
yesno() {
dialog --title Citrine --yesno "$@" 10 80
yn="$?"
}
dumptitle=""
dump() {
dialog --title $dumptitle --no-collapse --msgbox "$@" 0 0
}
msgdat=""
msgbox(){
dialog --title Citrine --inputbox "$@" 10 80 2>tmp
msgdat=$(cat tmp)
rm tmp
}
# --------------------------
if [[ "$EUID" != "0" ]]; then if [[ "$EUID" != "0" ]]; then
err "Run as root" err "Run as root"
exit 1 exit 1
@ -24,10 +44,12 @@ pacman-key --init
pacman-key --populate archlinux pacman-key --populate archlinux
pacman-key --populate crystal pacman-key --populate crystal
prompt "Do you need a keyboard layout other than standard US? (y/N)" yesno "Do you need a keyboard layout other than QWERTY US?"
KBD="$response" KBD="$yn"
echo "KBD=$response" echo "KBD=$response"
if [[ "$KBD" == "y" || "$KBD" == "Y" ]]; then
# TODO: layout select in dialog
if [[ "$KBD" == "0" || "$KBD" == "0" ]]; then
prompt "We're going to show the list of keymaps in less. Do you know how to exit less? (Y/n)" prompt "We're going to show the list of keymaps in less. Do you know how to exit less? (Y/n)"
UL="$response" UL="$response"
if [[ "$UL" == "n" ]]; then if [[ "$UL" == "n" ]]; then
@ -44,23 +66,24 @@ fi
clear clear
inf "Disks:" yesno "Would you like to partition manually?"
fdisk -l | grep Disk | grep sectors --color=never
prompt "Would you like to partition manually? (y/N)"
echo "PMODE=$response" echo "PMODE=$response"
PMODE="$response" PMODE="$yn"
dumptitle="System Disks"
dump "$(fdisk -l | grep Disk | grep sectors --color=never)"
MANUAL="no" MANUAL="no"
DISK="" DISK=""
if [[ "$PMODE" == "y" ]]; then if [[ "$PMODE" == "0" ]]; then
MANUAL="yes" MANUAL="yes"
else else
prompt "Install target WILL BE FULLY WIPED" msgbox "Install target WILL BE FULLY WIPED"
echo "DISK=$response" echo "DISK=$msgdat"
DISK="$response" DISK="$msgdat"
if ! fdisk -l ${DISK}; then if ! fdisk -l ${DISK}; then
err "Seems like $DISK doesn't exist. Did you typo?" dumptitle="ERROR"
dump "Seems like $DISK doesn't exist. Did you typo?"
exit 1 exit 1
fi fi
fi fi
@ -81,16 +104,21 @@ else
fi fi
echo "EFI=$EFI" echo "EFI=$EFI"
dumptitle="Please confirm"
if [[ "$EFI" == "yes" ]]; then if [[ "$EFI" == "yes" ]]; then
prompt "This PC seems to have booted with UEFI. Press enter to confirm" dump "This PC seems to *have* booted with UEFI. Press enter to confirmor Control+C to cancel"
else else
prompt "This PC seems to *not* have booted with UEFI. Press enter to aknowledge, or press Control+C if this seems wrong." dump "This PC seems to *not* have booted with UEFI. Press enter to aknowledge, or press Control+C if this seems wrong."
fi fi
inf "Setting system clock via network" inf "Setting system clock via network"
timedatectl set-ntp true timedatectl set-ntp true
if [[ "$MANUAL" == "no" ]]; then if [[ "$MANUAL" == "no" ]]; then
dumptitle="CAUTION!"
dump "This is your last chance to avoid deleting critical data on $DISK. If you're not sure, press Control+C NOW!"
echo "Partitioning disk" echo "Partitioning disk"
if [[ "$EFI" == "yes" ]]; then if [[ "$EFI" == "yes" ]]; then
parted ${DISK} mklabel gpt --script parted ${DISK} mklabel gpt --script
@ -132,30 +160,34 @@ if [[ "$MANUAL" == "no" ]]; then
fi fi
else else
clear clear
inf "You have chosen manual partitioning."
inf "We're going to drop to a shell for you to partition, but first, PLEASE READ these notes." dumptitle="Read carefully."
inf "Before you exit the shell, make sure to format and mount a partition for / at /mnt"
dump "You have chosen manual partitioning.\
We're going to drop to a shell for you to partition, but first, PLEASE READ these notes.\
Before you exit the shell, make sure to format and mount a partition for / at /mnt."
if [[ "$EFI" == "yes" ]]; then if [[ "$EFI" == "yes" ]]; then
mkdir -p /mnt/efi mkdir -p /mnt/efi
inf "Additionally, since this machine was booted with UEFI, please make sure to make a 200MB or greater partition"
inf "of type VFAT and mount it at /mnt/efi" dump "Additionally, since this machine was booted with UEFI, please make sure to make a 200MB or greater partition\
of type VFAT and mount it at /mnt/efi"
else else
inf "Please give me the full path of the device you're planning to partition (needed for bootloader installation later)" msgbox "Please give me the full path of the device you're planning to partition (needed for bootloader installation later)\
inf "Example: /dev/sda" .. Example: /dev/sda"
printf ": " DISK="${msgdat}"
read DISK
fi fi
CONFDONE="NOPE" CONFDONE="NOPE"
dumptitle="Citrine"
while [[ "$CONFDONE" == "NOPE" ]]; do while [[ "$CONFDONE" == "NOPE" ]]; do
inf "Press enter to go to a shell." dump "Press enter to go to a shell. (ZSH)"
read zsh
bash yesno "All set (and partitions mounted?)"
prompt "All set (and partitions mounted?) (y/N)" echo "STAT=$yn"
echo "STAT=$response" STAT="$yn"
STAT="$response" if [[ "$STAT" == "0" ]]; then
if [[ "$STAT" == "y" ]]; then
if ! findmnt | grep /mnt; then if ! findmnt | grep /mnt; then
err "Are you sure you've mounted the partitions?" err "Are you sure you've mounted the partitions?"
@ -170,7 +202,8 @@ inf "Verifying network connection"
ping -c 1 getcryst.al ping -c 1 getcryst.al
if [[ ! "$?" == "0" ]]; then if [[ ! "$?" == "0" ]]; then
err "It seems like this system can't reach the internet. Exiting." dumptitle="Error!"
dump "It seems like this system can't reach the internet. Exiting."
exit 1 exit 1
fi fi
@ -209,6 +242,7 @@ fi
arch-chroot /mnt /continue.sh 2>&1 | tee /mnt/var/log/citrine.chroot.log arch-chroot /mnt /continue.sh 2>&1 | tee /mnt/var/log/citrine.chroot.log
rm /mnt/continue.sh rm /mnt/continue.sh
inf "Installation should now be complete." dumptitle="Citrine"
read dump "Installation should now be complete."
#read

@ -14,10 +14,30 @@ prompt() {
read response read response
} }
# ---------------------------------
yn=""
yesno() {
dialog --title Citrine --yesno "$@" 10 80
yn="$?"
}
dumptitle=""
dump() {
dialog --title $dumptitle --no-collapse --msgbox "$@" 0 0
}
msgdat=""
msgbox(){
dialog --title Citrine --inputbox "$@" 10 80 2>tmp
msgdat=$(cat tmp)
rm tmp
}
# --------------------------
clear clear
TZ="/usr/share/LMAO/XD" TZ="/usr/share/LMAO/XD"
while [[ ! -f $TZ ]]; do while [[ ! -f $TZ ]]; do
prompt "Pick a time zone (Format: America/New_York , Europe/London, etc)" msgbox "Pick a time zone (Format: America/New_York , Europe/London, etc)"
PT="$response" PT="$response"
TZ="/usr/share/zoneinfo/${PT}" TZ="/usr/share/zoneinfo/${PT}"
done done
@ -31,21 +51,21 @@ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf echo "LANG=en_US.UTF-8" > /etc/locale.conf
clear clear
prompt "Do you need more locales than just en_US? (y/N)" yesno "Do you need more locales than just en_US?"
echo "MORE=$response" echo "MORE=$yn"
MORE="$response" MORE="$yn"
if [[ "$MORE" == "y" || "$MORE" == "Y" ]]; then if [[ "$MORE" == "0" ]]; then
prompt "Preferred editor" msgbox "Preferred editor"
PGRM="$response" PGRM="$msgdat"
echo "PGRM=$response" echo "PGRM=$msgdat"
if [[ -x "$(command -v ${PGRM})" ]]; then if [[ -x "$(command -v ${PGRM})" ]]; then
inf "Attempting to install ${PGRM}" inf "Attempting to install ${PGRM}"
pacman -Sy ${PGRM} --noconfirm pacman -Sy ${PGRM} --noconfirm
fi fi
inf "When we open the file, please remove the leading # before any locales you need." dumptitle="Read carefully."
inf "Then, save and exit.\nPress enter." dump "When we open the file, please remove the leading # before any locales you need.\
read Then, save and exit."
${PGRM} /etc/locale.gen ${PGRM} /etc/locale.gen
fi fi
@ -67,19 +87,21 @@ if [[ -f /keymap ]]; then
fi fi
clear clear
prompt "System hostname" msgbox "Enter the system hostname"
HOSTNAME="$response" HOSTNAME="$msgdat"
echo ${HOSTNAME} > /etc/hostname echo ${HOSTNAME} > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts echo "127.0.0.1 localhost" > /etc/hosts
prompt "Would you like IPV6? (y/N)"
IPS="$response" yesno "Would you like IPV6?"
if [[ "$IPS" == "y" || "$IPS" == "Y" ]]; then IPS="$yn"
if [[ "$IPS" == "0" ]]; then
echo "::1 localhost" >> /etc/hosts echo "::1 localhost" >> /etc/hosts
fi fi
echo "127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts echo "127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts
clear clear
inf "Password for root" inf "Set a password for root"
done="nope" done="nope"
while [[ "$done" == "nope" ]]; do while [[ "$done" == "nope" ]]; do
passwd passwd
@ -88,8 +110,8 @@ while [[ "$done" == "nope" ]]; do
fi fi
done done
prompt "Your username" msgbox "Your username"
UN="$response" UN="$msgdat"
useradd -m ${UN} useradd -m ${UN}
usermod -aG wheel ${UN} usermod -aG wheel ${UN}
inf "Set password for ${UN}" inf "Set password for ${UN}"
@ -124,34 +146,33 @@ pacman-key --populate crystal
clear clear
prompt "Would you like to install a DE/WM profile? (y/N)"
echo "DEP=$response" yesno "Would you like to install a DE/WM profile?"
DEP="$response"
echo "DEP=$yn"
if [[ "$DEP" == "y" || "$DEP" == "Y" ]]; then DEP="$yn"
inf "--- Desktop Environments ---"
inf "- Budgie" if [[ "$DEP" == "0" ]]; then
inf "- Cinnamon"
inf "- Deepin" dumptitle="Desktop/WM Choices"
inf "- Enlightenment (note: very DIY. Read Arch Wiki)"
inf "- GNOME" dump "\
# Flashback seems to need some work --- Desktop Environments ---
#inf "- (GNOME) Flashback" - Budgie
inf "- KDE" - Cinnamon
inf "- LXDE" - Deepin
inf "- LXQt" - GNOME
inf "- Mate" - KDE
inf "- Cutefish" - LXDE
inf "- Xfce" - LXQt
inf "- UKUI (note: very poorly documented. In english, anyway)" - Mate
inf "--- Window Managers ---" - Xfce"
inf "- i3"
inf "(We'll add more as people ask)" msgbox "DE Choice (please enter exactly)"
inf "Please enter exactly as shown." echo "DE=$msgdat"
prompt "" DE="$msgdat"
echo "DE=$response"
DE="$response"
DM="" DM=""
if [[ "$DE" == "Budgie" ]]; then if [[ "$DE" == "Budgie" ]]; then
pacman -Sy --quiet --noconfirm budgie-desktop gnome pacman -Sy --quiet --noconfirm budgie-desktop gnome
DM="gdm" DM="gdm"
@ -161,15 +182,9 @@ if [[ "$DEP" == "y" || "$DEP" == "Y" ]]; then
elif [[ "$DE" == "Deepin" ]]; then elif [[ "$DE" == "Deepin" ]]; then
pacman -Sy --quiet --noconfirm deepin deepin-extra pacman -Sy --quiet --noconfirm deepin deepin-extra
DM="lightdm" DM="lightdm"
elif [[ "$DE" == "Enlightenment" ]]; then
pacman -Sy --quiet --noconfirm enlightenment terminology
elif [[ "$DE" == "GNOME" ]]; then elif [[ "$DE" == "GNOME" ]]; then
pacman -Sy --quiet --noconfirm gnome gnome-extra chrome-gnome-shell pacman -Sy --quiet --noconfirm gnome gnome-extra chrome-gnome-shell
DM="gdm" DM="gdm"
elif [[ "$DE" == "Flashback" || "$DE" == "GNOME Flashback" || "$DE" == "(GNOME) Flashback" ]]; then
DE="Flashback"
pacman -Sy --quiet --noconfirm gnome-flashback gnome-backgrounds gnome-control-center network-manger-applet gnome-applets sensors-applet
DM="gdm"
elif [[ "$DE" == "KDE" ]]; then elif [[ "$DE" == "KDE" ]]; then
pacman -Sy --quiet --noconfirm plasma kde-applications sddm pacman -Sy --quiet --noconfirm plasma kde-applications sddm
DM="sddm" DM="sddm"
@ -182,47 +197,17 @@ if [[ "$DEP" == "y" || "$DEP" == "Y" ]]; then
elif [[ "$DE" == "Mate" ]]; then elif [[ "$DE" == "Mate" ]]; then
pacman -Sy --quiet --noconfirm mate mate-extra mate-applet-dock mate-applet-streamer pacman -Sy --quiet --noconfirm mate mate-extra mate-applet-dock mate-applet-streamer
DM="gdm" DM="gdm"
elif [[ "$DE" == "UKUI" ]]; then
pacman -Sy --quiet --noconfirm ukui
elif [[ "$DE" == "Xfce" ]]; then elif [[ "$DE" == "Xfce" ]]; then
pacman -Sy --quiet --noconfirm xfce4 xfce4-goodies pacman -Sy --quiet --noconfirm xfce4 xfce4-goodies
DM="sddm" DM="sddm"
elif [[ "$DE" == "Cutefish" || "$DE" == "cutefish" ]] ;then elif [[ "$DE" == "Cutefish" || "$DE" == "cutefish" ]] ;then
pacman -Sy --quiet --noconfirm cutefish pacman -Sy --quiet --noconfirm cutefish
DM="sddm" DM="sddm"
# Start WM's
elif [[ "$DE" == "i3" ]]; then
inf "Choose either i3 or i3-gaps in below prompt. Rest of group is your preference"
inf "Press enter"
prompt ""
pacman -Sy i3 xorg-xinit xorg-server
fi
if [[ "$DM" == "" ]]; then
inf "Your selected DE/WM doesn't have a standard display manager. Enter one of the below names, or leave blank for none"
inf "- gdm"
inf "- sddm"
inf "- lightdm (you'll need a greeter package. See Arch Wiki)"
inf "- (you can type another Arch package name if you have one in mind)"
inf "- [blank] for none"
prompt ""
ND="$response"
echo "ND=$ND"
if [[ "$ND" != "" ]]; then
inf "Ok, we'll install $ND"
DM="$ND"
pacman -Sy --quiet --noconfirm $DM
else
inf "Ok, not installing a display manager."
fi
else
pacman -Sy --quiet --noconfirm $DM
fi
if [[ "$DM" != "" ]]; then if [[ "$DM" != "" ]]; then
prompt "Would you like to enable ${DM} for ${DE}? (Y/n)" yesno "Would you like to enable ${DM} for ${DE}?"
useDM="$response" useDM="$yn"
if [[ "$useDM" != "n" ]]; then if [[ "$useDM" == "0" ]]; then
systemctl enable ${DM} systemctl enable ${DM}
if [[ "$DE" == "Deepin" ]]; then if [[ "$DE" == "Deepin" ]]; then
sed -i 's/lightdm-gtk-greeter/lightdm-deepin-greeter/g' /etc/lightdm/lightdm.conf sed -i 's/lightdm-gtk-greeter/lightdm-deepin-greeter/g' /etc/lightdm/lightdm.conf
@ -231,19 +216,19 @@ if [[ "$DEP" == "y" || "$DEP" == "Y" ]]; then
fi fi
fi fi
prompt "Would you like to add more packages? (Y/n)" yesno "Would you like to add more packages?"
MP="$response" MP="$yn"
if [[ "$MP" != "n" ]]; then if [[ "$MP" == "0" ]]; then
prompt "Would you like to use a URL to a package list? (Y/n)" yesno "Would you like to use a URL to a package list?"
OL="$response" OL="$yesno"
if [[ "$OL" == "n" ]]; then if [[ "$OL" != "0" ]]; then
prompt "Write package names" msgbox "Package names"
PKGNS="$response" PKGNS="$msgdat"
inf "Installing: $PKGNS" inf "Installing: $PKGNS"
ame -S ${PKGNS} ame -S ${PKGNS}
else else
prompt "URL to package list" msgbox "URL to package list"
SRC="$response" SRC="$msgdat"
PKGS="$(curl ${SRC})" PKGS="$(curl ${SRC})"
for PKG in PKGS; do for PKG in PKGS; do
ame -S ${PKG} ame -S ${PKG}
@ -251,4 +236,4 @@ if [[ "$MP" != "n" ]]; then
fi fi
fi fi
inf "Installation complete" #inf "Installation complete"

Loading…
Cancel
Save