OSDN Git Service

More recursion refactoring, update dialog text
authornatemaia <natemaia10@gmail.com>
Sun, 20 Jan 2019 13:12:48 +0000 (05:12 -0800)
committernatemaia <natemaia10@gmail.com>
Sun, 17 Mar 2019 04:21:48 +0000 (21:21 -0700)
lang/english.trans
src/archlabs-installer

index e8f31bb..6e2258d 100644 (file)
@@ -1,7 +1,6 @@
 # english translation file
 # written by natemaia10@gmail.com - 2018
 
-# Generic
 _Done="Done"
 _Back="Back"
 _Name="Name:"
@@ -13,16 +12,13 @@ _Pass2="\nRe-enter the password for"
 _NoFileErr="\nFile does not exist.\n"
 _OnlyOne="\nOnly one partition available"
 
-# Welcome
 _WelTitle="Welcome to"
 _WelBody="\nThis will unpack and help you setup $DIST on your system.\n\n\nMenu Navigation:\n\n - Select items with the arrow keys or the option number.\n - Use [Space] to toggle options and [Enter] to confirm.\n - Switch between buttons using [Tab] or the arrow keys.\n - Use [Page Up] and [Page Down] to jump whole pages\n - Press the highlighted key of an option to select it.\n"
 
-# Requirements
 _NotRoot="\nThis installer must be run as root or using sudo.\n"
-_Not64Bit="\nThis installer only supports x86_64 capable machines.\n"
-_NoNetwork="\nThis installer needs to be run with an active internet connection in order to update and install packages.\n"
+_Not64Bit="\nThis installer only supports x86_64 architectures.\n"
+_NoNetwork="\nThis installer requires an active internet connection.\n"
 
-# Preparation Menu
 _PrepTitle="Prepare Install"
 _PrepBody="\nThis is the menu in which you will prepare your system for the install.\n\nTo begin the install you must first have:\n\n  - A root (/) partition mounted (UEFI systems also require a seperate boot partition).\n  - A user created and the passwords set.\n  - The system settings configured."
 _PrepLayout="Keyboard Layout"
@@ -38,169 +34,142 @@ _PrepPkg="Select additional packages (optional)"
 _PrepShow="Check configuration choices (optional)"
 _PrepInstall="Start the installation"
 
-# Select Config Files
 _EditTitle="Finalization"
-_EditBody="\nBefore exiting you can select configuration files from below to review/change.\n\nIf you need to make additional changes with the drives still mounted, use Ctrl-z to pause the installer and return to the terminal, when finished type 'fg' and Enter or Ctrl-z again to resume the installer."
+_EditBody="\nBefore exiting you can select configuration files from below to review/change.\n\nIf you need to make additional changes with the drives still mounted, use Ctrl-z to pause the installer and return to the terminal, when finished type 'fg' and [Enter] or Ctrl-z again to resume the installer."
 
-# Close Installer
 _CloseInst="Exit"
 _CloseInstBody="\nUnmount partitions (if any) and exit the installer?\n"
 
-# timezone
 _TimeZTitle="Timezone"
 _TimeZQ="\nConfirm time zone:"
 _TimeZBody="\nThe time zone is used to set the system clock.\n\nSelect your country or continent from the list below"
 _TimeSubZBody="\nSelect the nearest city to you or one with the same time zone.\n\nTIP: Pressing the first letter of the city name repeatedly will navigate between entries beggining with that letter."
 
-# bootloader
 _MntBootBody="\nSelect which bootloader to use."
-_InstSysTitle="Syslinux"
-_InstSysBody="\nInstall syslinux to the master boot record (MBR) or to the root (/) partition?"
 
-# mirrors
-_MirrorTitle="Mirrorlist Sorting"
+_MirrorTitle="Mirrorlist"
 _MirrorSetup="\nSort the mirrorlist automatically?\n\nTakes longer but gets fastest mirrors.\n"
 _MirrorCmd="\nThe command below will be used to sort the mirrorlist, edit if needed.\n"
 
-# window managers and packages
 _WMChoice="Sessions"
 _WMChoiceBody="\nUse [Space] to toggle available sessions.\n\nFor all sessions a basic package set will be installed for basic compatibilty across sessions. In addition to this extra packages specific to each sessions will also be installed to provide basic functionality most people expect from an environment."
 
-_Packages="Additional Packages"
+_Packages="Packages"
 _PackageMenu="\nSelect a category to choose packages from, once finished select the last entery or press [Esc] to return to the main menu."
 _PackageBody="\nUse [Space] to toggle packages(s) and press [Enter] to accept the selection.\n\nNOTE: Some packages may already be installed by your desktop environment (if any). Extra packages may also be installed for the selected packages eg. Selecting qutebrowser will also install qt5ct (the Qt5 theme tool) and qt5-styleplugins (for Gtk themes in Qt applications)."
 
-# login setup
 _WMLogin="Login Managment"
 _LoginTypeBody="\nSelect which login managment to use."
-_AutoLoginBody="\nDo you want auto login+startx enabled?"
-_WMLoginBody="\nSelect which to use as your primary login session.\n\nThis can be changed by editing your ~/.xinitrc."
+_AutoLoginBody="\nDo you want autologin enabled?\n"
+_WMLoginBody="\nSelect which of your session choices to use for the initial login.\n\nYou can be change this later by editing your ~/.xinitrc"
 
-# Set keymap, hwclock, local and timezone
 _XMapBody="\nPick your system keymap from the list below\n\nThis is the keymap used once a graphical environment is running (usually Xorg).\n\nSystem default: us"
 _LocaleBody="\nLocale determines the system language and currency formats.\n\nThe format for locale names is languagecode_COUNTRYCODE\n\neg. en_US is: english United States\n    en_GB is: english Great Britain"
+
 _CMapTitle="Console Keymap"
 _CMapBody="\nSelect console keymap, the console is the tty shell you reach before starting a graphical environment (usually Xorg).\n\nIts keymap is seperate from the one used by the graphical environments, though many do use the same such as 'us' English.\n\nSystem default: us"
 
-# Configure
 _ConfHost="Hostname"
 _ConfLocale="Language and Locale"
 _HostNameBody="\nEnter a hostname for the new system.\n\nA hostname is used to identify systems on the network.\n\nIt's restricted to alphanumeric characters (a-z, A-Z, 0-9).\nIt can contain hyphens (-) BUT NOT at the beggining or end."
 
-# Create new user and set password
 _UserTitle="User Creation"
 _Username="Username:"
 _Password="Password:"
 _Password2="Password2:"
 _RootBody="--- Enter root password (empty uses the password entered above) ---"
-_UserBody="\nEnter a name and password for the new user account.\n\nThe name must not use capital letters, contain any periods (.), end with a hyphen (-), or include any colons (:)\n\nNOTE: Use the arrow keys to switch between input fields, [Tab] to toggle between input fields and the buttons, or just press [Enter] to accept."
+_UserBody="\nEnter a name and password for the new user account.\n\nThe name must not use capital letters, contain any periods (.), end with a hyphen (-), or include any colons (:)\n\nNOTE: Use the [Up] and [Down] arrows to switch between input fields, [Tab] to toggle between input fields and the buttons, and [Enter] to accept."
 
-# Mounting (Partitions)
 _MntTitle="Mount Status"
 _MntFail="\nMount Failed!\n"
 _MntSucc="\nMount Succeeded!\n"
 _MntConfBody="\nConfirm mount options:"
 _MntBody="\nUse [Space] to toggle mount options from below, press [Enter] when done to confirm selection.\n\nNot selecting any and confirming will run an automatic mount."
-_WarnMount="\nIMPORTANT: Please choose carefully during mounting and formatting.\n\nDuring mounting, partitions can be mounted without formatting by selecting '$_Skip', useful for extra or already formatted partitions.\n\nThe exception to this is the root (/) partition, it needs to be formatted before install to ensure system stability.\n"
+_WarnMount="\nIMPORTANT: Please choose carefully during mounting and formatting.\n\nPartitions can be mounted without formatting by selecting '$_Skip' during mounting, useful for extra or already formatted partitions.\n\nThe exception to this is the root (/) partition, it needs to be formatted before install to ensure system stability.\n"
 
-# Select Device
 _DevSelTitle="Device Selection"
 _DevSelBody="\nSelect a device to use from the list below.\n\nDevices (/dev) are the available drives on the system. /sda, /sdb, /sdc ..."
 
-# Extra Partitions
 _ExtPartBody="\nYou can now select additional partitions you want mounted, once choosen you will be asked to enter a mountpoint.\n\nSelect '$_Done' to finish the mounting step and return to the main menu."
-_ExtPartBody1="\nWhere do you want the partition mounted?\n\nEnsure the name begins with a slash (/).\nExamples include: /usr, /home, /var, etc.\n"
+_ExtPartBody1="\nWhere do you want the partition mounted?\n\nEnsure the name begins with a slash (/).\nExamples include: /usr, /home, /var, etc."
 
-# kernel
 _KernelTitle="Linux Kernel"
-_KernelBody="\nSelect which kernel to use for the install."
+_KernelBody="\nSelect a kernel to use for the install."
 
-# shell
 _ShellTitle="Login Shell"
 _ShellBody="\nChoose a shell for the new user and root."
 
-# Partitioning Menu
 _PartTitle="Partitioning"
 _PartWipe="Secure wipe"
-_PartAuto="Automatic partitioning"
+_PartAuto="Auto partitioning"
 _PartShowTree="Show partition Table"
-_PartBody="\nFull device auto partitioning is available for beginners otherwise cfdisk is recommended.\n\n  - UEFI systems require a vfat/fat32 partition between 100-512M in size to be mounted at /boot or /boot/efi\n  - BIOS systems using LUKS will also require this but it does NOT require vfat/fat32 formatting."
+_PartBody="\nFull device auto partitioning is available for beginners otherwise cfdisk is recommended.\n\n  - All systems will require a root partition (8G or greater).\n  - UEFI and BIOS using LUKS without LVM will require a boot partition (100-512M)."
 
-# Auto partition
 _PartBody1="\nWARNING: ALL data on"
 _PartBody2="will be destroyed and the following partitions will be created\n\n- A 512M vfat/fat32 boot partition with boot flags enabled.\n- An ext4 partition using all remaining space"
 _PartBody3="\n\nDo you want to continue?\n"
 _PartWipeBody="will be destroyed using 'wipe -Ifre'.\n\nThis is ONLY intended for use on devices before sale or disposal to reliably destroy the data beyond recovery. This is NOT for devices you intend to continue using.\nThe wiping process can take a long time depending on the size and speed of the drive.\n\nDo you still want to continue?\n"
 
-# bootloader
-_InstSysTitle="Install Syslinux"
-_InstSysBody="\nInstall syslinux to the master boot record (MBR) or to root (/)?"
-
-# File System
-_FSTitle="Choose Filesystem"
-_SelRootBody="\nSelect the system root (/) partition.\n\nThis is where $DIST will be installed."
-_SelBiosBody="\nDo you want to use a separate boot partition?\n\nThis partition is where the bootloader and init will be installed.\n"
+_FSTitle="Filesystem"
+_SelRootBody="\nSelect the root (/) partition, this is where $DIST will be installed."
+_SelUefiBody="\nSelect the EFI boot partition (/boot), required for UEFI boot.\n\nIt's usually the first partition on the device, 100-512M, and will be formatted as vfat/fat32 if not already."
+_SelBiosBody="\nDo you want to use a separate boot partition? (optional)\n\nIt's usually the first partition on the device, 100-512M, and will be formatted as ext3/4 if not already."
+_SelBiosLuksBody="\nSelect the boot partition (/boot), required for LUKS.\n\nIt's usually the first partition on the device, 100-512M, and will be formatted as ext3/4 if not already."
+_FormUefiBody="\nIMPORTANT: The EFI partition"
+_FormBiosBody="\nIMPORTANT: The boot partition"
+_FormBootBody="is already formatted correctly.\n\nFor a clean install, previously existing partitions should be reformatted, however this removes ALL data (bootloaders) on the partition so choose carefully.\n\nDo you want to reformat the partition?\n"
 
 _SelSwpNone="None"
 _SelSwpFile="Swapfile"
 _SelSwpSetup="Swap Setup"
 _SelSwpBody="\nSelect whether to use a swap partition, swapfile, or none."
-_SelSwpErr="Swap Setup Error: Must be 1(M|G) or greater, and can only contain whole numbers\n\nSize Entered:"
+_SelSwpErr="\nSwap Setup Error: Must be 1(M|G) or greater, and can only contain whole numbers\n\nSize Entered:"
 _SelSwpSize="\nEnter the size of the swapfile in megabytes (M) or gigabytes (G).\n\neg. 100M will create a 100 megabyte swapfile, while 10G will create a 10 gigabyte swapfile.\n\nFor ease of use and as an example it is filled in to match the size of your system memory (RAM).\n\nMust be greater than 1, contain only whole numbers, and end with either M or G."
 
-_SelUefiBody="\nSelect the system EFI boot partition.\n\nThis is a required partition for booting UEFI systems. It's usually the first partition on the drive, less than 512M, and will be formatted as vfat/fat32 if not already."
-_FormUefiBody="\nIMPORTANT: The EFI partition"
-_FormUefiBody2="is already formatted as vfat/fat32.\n\nFor a clean install, previously existing partitions should be reformatted, however this removes ALL data (bootloaders) on the partition so choose carefully.\n\nDo you want to reformat the partition?\n"
-_FormBiosBody="IMPORTANT:\n\nThe boot partition"
-_FormBiosBody2="is already formatted as ext3/4.\n\nFor a clean install, previously existing partitions should be reformatted, however this removes ALL data (bootloaders) on the partition so choose carefully.\n\nDo you want to reformat the partition?\n"
-
 # LUKS / DM-Crypt / Encryption
-_LuksMenuBody="\nDevices and volumes encrypted using dm_crypt cannot be accessed or seen without being first unlocked."
-_LuksMenuBody2="\n\nA seperate boot partition without encryption or logical volume management (LVM - unless using BIOS Grub) is required."
+_LuksMenuBody="\nDevices and volumes encrypted using dm_crypt cannot be accessed or seen without first being unlocked."
+_LuksMenuBody2="\n\nA seperate boot partition without encryption or logical volume management (LVM) is required (unless using BIOS Grub)."
 _LuksMenuBody3="\n\nAutomatic uses default encryption settings, and is recommended for beginners, otherwise cypher and key size parameters may be entered manually."
-_LuksOpen="Open Encrypted Partition"
-_LuksOpenBody="Enter a name and password for the encrypted device.\n\nIt is not necessary to prefix it with /dev/mapper/\n\nAn example name has been provided."
-_LuksEncrypt="Automatic LUKS Encryption"
-_LuksEncryptAdv="Define Key-Size and Cypher"
+_LuksOpenBody="\nEnter a name and password for the encrypted device.\n\nIt is not necessary to prefix the name with /dev/mapper/,an example has been provided."
+_LuksEncrypt="Basic LUKS Encryption"
+_LuksEncryptAdv="Advanced LUKS Encryption"
+_LuksOpen="Open Previous Encryption"
 _LuksEncryptBody="\nSelect the partition you want to encrypt."
 _LuksEncryptSucc="\nDone! encrypted partition opened and ready for mounting.\n"
-_LuksPartErrBody="\nA minimum of two partitions are required for encryption:\n\n1. root (/) - standard or LVM.\n\n2. boot (/boot or /boot/efi) - standard (except for LVM on BIOS systems)."
+_LuksPartErrBody="\nA minimum of two partitions are required for encryption:\n\n 1. root (/) - standard or LVM.\n 2. boot (/boot) - standard (unless using LVM on BIOS systems).\n"
 _LuksCreateWaitBody="\nCreating encrypted partition:"
 _LuksOpenWaitBody="\nOpening encrypted partition:"
 _LuksWaitBody2="\n\nDevice or volume used:"
 _LuksCipherKey="Once the specified flags have been amended, they will automatically be used with the 'cryptsetup -q luksFormat /dev/...' command.\n\nNOTE: Do not specify any additional flags such as -v (--verbose) or -y (--verify-passphrase)."
 
-# Logical Volume Management
-_LvmMenu="Logical volume management (LVM) allows 'virtual' hard drives (volume groups) and partitions (logical volumes) to be created from existing drives and partitions.\n\nA volume group must be created first, then one or more logical volumes within it.\n\nLVM can also be used with an encrypted partition to create multiple logical volumes (e.g. root and home) in it."
-_LvmCreateVG="Create Volume Group and Logical Volume(s)"
-_LvmDelVG="Delete Volume Groups"
-_LvMDelAll="Delete *ALL* volume groups, logical volumes, and physical volumes"
-_LvmDetBody="\nExisting logical volume management (LVM) detected.\n\nActivating, please wait...\n"
-_LvmNameVgBody="Enter the name of the volume group (VG) to create.\n\nThe VG is the new virtual device to create out of the partition(s) selected."
-_LvmPvSelBody="Select the partition(s) to use for the physical volume (PV)."
+_LvmMenu="\nLogical volume management (LVM) allows 'virtual' hard drives (volume groups) and partitions (logical volumes) to be created from existing device partitions.\n\nA volume group must be created first, then one or more logical volumes within it.\n\nLVM can also be used with an encrypted partition to create multiple logical volumes (e.g. root and home) within it."
+_LvmCreateVG="Create New VG and LV(s)"
+_LvmDelVG="Delete Existing VG(s)"
+_LvMDelAll="\nDelete *ALL* volume groups, logical volumes, and physical volumes"
+_LvmDetBody="\nExisting logical volume management (LVM) detected.\n\nActivating...\n"
+_LvmNameVgBody="\nEnter the name of the volume group (VG) to create.\n\nThe VG is the new virtual device to create out of the partition(s) selected."
+_LvmPvSelBody="\nSelect the partition(s) to use for the physical volume (PV)."
 _LvmPvConfBody1="\nConfirm creation of volume group:"
-_LvmPvConfBody2="With the following partition(s):"
+_LvmPvConfBody2="with the following partition(s):"
 _LvmPvActBody1="\nCreating and activating volume group:"
-_LvmPvDoneBody1="Volume group:"
+_LvmPvDoneBody1="volume group:"
 _LvmPvDoneBody2="has been created"
 _LvmLvNumBody1="\nUse [Spacebar] to select the number of logical volumes (LVs) to create in:"
 _LvmLvNumBody2="\nThe last (or only) logical volume will automatically use all remaining space in the volume group."
-_LvmLvNameBody1="Enter the name of the logical volume (LV) to create.\n\nThis is like setting a name or label for a partition.\n"
+_LvmLvNameBody1="\nEnter the name of the logical volume (LV) to create.\n\nThis is like setting a name or label for a partition.\n"
 _LvmLvNameBody2="\nNOTE: This LV will use up all remaining space in the volume group"
 _LvmLvSizeBody1="remaining"
-_LvmLvSizeBody2="\n\nEnter the size of the logical volume (LV) in megabytes (M) or gigabytes (G). For example, 100M will create a 100 megabyte LV. 10G will create a 10 gigabyte LV.\n"
+_LvmLvSizeBody2="\nEnter the size of the logical volume (LV) in megabytes (M) or gigabytes (G). For example, 100M will create a 100 megabyte LV. 10G will create a 10 gigabyte LV.\n"
 _LvmCompBody="\nDone! all logical volumes have been created for the volume group.\n\nDo you want to view the device tree for the new LVM scheme?\n"
-_LvmDelQ="\nConfirm deletion of volume group(s) and logical volume(s).\n\nDeleting a volume group, will delete all logical volumes within as well."
-_LvmSelVGBody="Select volume group to delete.\n\nAll logical volumes within will also be deleted."
+_LvmDelQ="\nConfirm deletion of volume group(s) and logical volume(s).\n\nDeleting a volume group, will delete all logical volumes within as well.\n"
+_LvmSelVGBody="\nSelect volume group to delete.\n\nAll logical volumes within will also be deleted."
 
-# LVM Errors
 _LvmVGErr="\nNo volume groups found."
-_LvmNameVgErr="Invalid name entered.\n\nThe volume group name may be alpha-numeric, but may not contain spaces, start with a '/', or already be in use.\n"
-_LvmPartErrBody="There are no viable partitions available to use for LVM. A minimum of one is required.\n\nIf LVM is already in use, deactivating it will allow the partition(s) to be used again."
-_LvmLvNameErrBody="Invalid name entered.\n\nThe logical volume (LV) name may be alpha-numeric, but may not contain spaces or be preceded with a '/'\n"
+_LvmNameVgErr="\nInvalid name entered.\n\nThe volume group name may be alpha-numeric, but may not contain spaces, start with a '/', or already be in use.\n"
+_LvmPartErrBody="\nThere are no viable partitions available to use for LVM, a minimum of one is required.\n\nIf LVM is already in use, deactivating it will allow the partition(s) to be used again.\n"
+_LvmLvNameErrBody="\nInvalid name entered.\n\nThe logical volume (LV) name may be alpha-numeric, but may not contain spaces or be preceded with a '/'\n"
 _LvmLvSizeErrBody="\nInvalid value Entered.\n\nMust be a numeric value with 'M' (megabytes) or 'G' (gigabytes) at the end.\n\neg. 400M, 10G, 250G, etc...\n\nThe value may also not be equal to or greater than the remaining size of the volume group.\n"
 
-# Error Messages
 _UserErrTitle="User Name Error"
 _PassErr="\nThe passwords entered do not match.\n"
 _UserErrBody="\nIncorrect user name.\n\nPlease try again.\n"
@@ -208,8 +177,9 @@ _UserPassErr="\nThe user passwords entered do not match.\n"
 _RootPassErr="\nThe root passwords entered do not match.\n"
 _UserPassEmpty="\nThe user password cannot be left empty.\n"
 _ErrNoMount="\nPartition(s) must be mounted first.\n"
-_ErrNoConfig="\nYou need to configure the system first.\n"
-_ExtErrBody="\nCannot mount partition due to a problem with the mountpoint name.\n\nA name must be given after a forward slash.\n"
-_PartErrBody="\nYou'll need create the partiton(s) first.\n\n\nBIOS systems require at least one partition (ROOT).\n\nUEFI systems require at least two (ROOT and EFI).\n"
+_ErrNoConfig="\nSystem configuration must be done first.\n"
+_ErrNoUser="\nA new user account must be created first.\n"
+_ExtErrBody="\nCannot mount partition due to a problem with the mountpoint.\n\nEnsure it begins with a slash (/) followed by atleast one character.\n"
+_PartErrBody="\nYou need create the partiton(s) first.\n\n\nBIOS systems require at least one partition (ROOT).\n\nUEFI systems require at least two (ROOT and EFI).\n"
 
 # vim:tw=9999:syntax=off:nospell
index ec7d963..0dcfdb2 100755 (executable)
@@ -32,9 +32,9 @@ LOGIN_TYPE=""     # login manager can be lightdm or xinit
 INSTALL_WMS=""    # space separated list of chosen wm/de
 KERNEL="linux"    # can be linux, linux-lts, linux-zen, or linux-hardened
 MYSHELL=""        # login shell for root and the primary user
-PACKAGES=""       # list of all packages to install including WM_PACKAGES
+PACKAGES=""       # list of all packages to install including WM_PKGS
 USER_PKGS=""      # packages selected by the user during install
-WM_PACKAGES=""    # full list of packages added during wm/de choice
+WM_PKGS=""        # full list of packages added during wm/de choice
 HOOKS="shutdown"  # list of additional HOOKS to add in /etc/mkinitcpio.conf
 FONT="ter-i16n"   # font used in the linux console
 UCODE=""          # cpu manufacturer microcode filename (if any)
@@ -57,15 +57,16 @@ CONFIG_DONE=false # basic configuration is finished
 BROADCOM_WL=false # fixes for broadcom cards eg. BCM4352
 CHECKED_NET=false # have we checked the network connection already
 
-AUTO_ROOT_PART="" # values from auto partition
-AUTO_BOOT_PART=""
+AUTO_ROOT_PART="" # root value from auto partition
+AUTO_BOOT_PART="" # boot value from auto partition
+FORMATTED=""      # partitions we formatted and should allow skipping
 
-# sane baseline
+# baseline
 BASE_PKGS="archlabs-scripts archlabs-skel-base archlabs-themes archlabs-dARK archlabs-icons archlabs-wallpapers "
 BASE_PKGS+="base-devel xorg xorg-drivers sudo git gvfs gtk3 gtk-engines gtk-engine-murrine pavucontrol tumbler "
 BASE_PKGS+="playerctl ffmpeg gstreamer libmad libmatroska gst-libav gst-plugins-base gst-plugins-good"
 
-# sane extras for window managers
+# extras for window managers
 WM_BASE_PKGS="arandr archlabs-networkmanager-dmenu xdg-user-dirs nitrogen polkit-gnome volumeicon xclip exo "
 WM_BASE_PKGS+="xdotool compton wmctrl gnome-keyring dunst feh gsimplecal xfce4-power-manager xfce4-settings laptop-detect"
 
@@ -102,6 +103,7 @@ CMAPS="$(find /usr/share/kbd/keymaps -name '*.map.gz' | awk '{
 # make sure these are defined for some dialog size calculation
 [[ $LINES ]] || LINES=$(tput lines)
 [[ $COLUMNS ]] || COLUMNS=$(tput cols)
+SHL=$((LINES - 20))
 
 # various associative arrays
 # {
@@ -225,10 +227,10 @@ main()
 
     case $SEL in
         1) device_tree ;;
-        2) partition_menu || (( SEL-- )) ;;
+        2) part_menu || (( SEL-- )) ;;
         3) luks_menu || (( SEL-- )) ;;
         4) lvm_menu || (( SEL-- )) ;;
-        5) mounting_menu || (( SEL-- )) ;;
+        5) mount_menu || (( SEL-- )) ;;
         6) prechecks 0 && { mkuser || (( SEL-- )); } ;;
         7) prechecks 1 && { cfg_menu || (( SEL-- )); } ;;
         8) prechecks 2 && { select_sessions || (( SEL-- )); } ;;
@@ -245,7 +247,7 @@ main()
 show_cfg()
 {
     local cmd="${BCMDS[$BOOTLDR]}"
-    local mnt="/boot"
+    [[ $BOOT_PART ]] && local mnt="/boot" || local mnt="none"
     local pkgs="${USER_PKGS# }"
     pkgs="${pkgs% }"
     pkgs="${pkgs% } ${PACKAGES# }"
@@ -268,8 +270,8 @@ show_cfg()
   LVM:   ${LVM:-none}
   LUKS:  ${LUKS:-none}
 
-  Extra Mounts: ${EXMNTS:-${EXMNT:-none}}
-  Mkinit Hooks: ${HOOKS:-none}
+  Extra: ${EXMNTS:-${EXMNT:-none}}
+  Hooks: ${HOOKS:-none}
 
 
 ---------- BOOTLOADER CONFIGURATION -----------
@@ -307,29 +309,23 @@ show_cfg()
 
 cfg_menu()
 {
-    local err=0
-
     tput civis
-    if ! MYSHELL="$(menubox "$_ShellTitle" "$_ShellBody" '/usr/bin/zsh' '-' '/bin/bash' '-' '/usr/bin/mksh' '-')"; then
-        return 1
-    fi
+    MYSHELL="$(menubox "$_ShellTitle" "$_ShellBody" '/usr/bin/zsh' '-' '/bin/bash' '-' '/usr/bin/mksh' '-')"
+    [[ $MYSHELL ]] || return 1
     tput cnorm
-    if ! HOSTNAME="$(getinput "$_ConfHost" "$_HostNameBody" "${DIST,,}")"; then
-        return 1
-    fi
+    HOSTNAME="$(getinput "$_ConfHost" "$_HostNameBody" "${DIST,,}")"
+    [[ $HOSTNAME ]] || return 1
     tput civis
-    if ! LOCALE="$(dialog --cr-wrap --stdout --backtitle "$BT" \
-        --title " $_ConfLocale " --menu "$_LocaleBody" 0 0 $((LINES - 20)) $LOCALES)"; then
-        return 1
-    fi
+    LOCALE="$(dialog --cr-wrap --stdout --backtitle "$BT" --title " $_ConfLocale " --menu "$_LocaleBody" 0 0 $SHL $LOCALES)"
+    [[ $LOCALE ]] || return 1
     select_timezone || return 1
     KERNEL="$(menubox "$_KernelTitle" "$_KernelBody" \
         'linux' 'Vanilla Linux kernel and modules, with a few patches applied.' \
         'linux-lts' 'Long-term support (LTS) Linux kernel and modules.' \
         'linux-zen' 'A collaborative effort of kernel hackers to provide the best Linux kernel for everyday systems' \
         'linux-hardened' 'A security-focused Linux kernel with hardening patches to mitigate kernel and userspace exploits')"
-    err=$?
-    (( err == 0 )) || return 1
+
+    [[ $KERNEL ]] || return 1
     select_mirrorcmd || return 1
     CONFIG_DONE=true
     return 0
@@ -386,7 +382,7 @@ select_keymap()
 {
     tput civis
     KEYMAP="$(dialog --cr-wrap --stdout --backtitle "$BT" \
-        --title " $_PrepLayout " --menu "$_XMapBody" 0 0 $((LINES - 20)) \
+        --title " $_PrepLayout " --menu "$_XMapBody" 0 0 $SHL \
         'us' 'English'    'cm'    'English'     'gb' 'English'    'au' 'English'    'gh' 'English' \
         'za' 'English'    'ng'    'English'     'ca' 'French'     'cd' 'French'     'gn' 'French' \
         'tg' 'French'     'fr'    'French'      'de' 'German'     'at' 'German'     'ch' 'German' \
@@ -409,13 +405,10 @@ select_keymap()
         'me' 'Montenegrin')"
 
     [[ $KEYMAP ]] || return 1
-
     if [[ $CMAPS == *"$KEYMAP"* ]]; then
         CMAP="$KEYMAP"
     else
-        CMAP="$(dialog --cr-wrap --stdout --backtitle "$BT" \
-            --title " $_CMapTitle " --menu "$_CMapBody" 0 0 $((LINES - 17)) $CMAPS)"
-
+        CMAP="$(dialog --cr-wrap --stdout --backtitle "$BT" --title " $_CMapTitle " --menu "$_CMapBody" 0 0 $SHL $CMAPS)"
         [[ $CMAP ]] || return 1
     fi
 
@@ -430,27 +423,29 @@ select_keymap()
 
 select_timezone()
 {
-    # create associative array for SUBZONES[zone]
-    local f="/usr/share/zoneinfo/zone.tab"
-    declare -A SUBZONES
+    local f="/usr/share/zoneinfo/zone.tab" err=0
+
+    declare -A subz
     for i in America Australia Asia Atlantic Africa Europe Indian Pacific Arctic Antarctica; do
-        SUBZONES[$i]="$(awk '/'"$i"'\// {gsub(/'"$i"'\//, ""); print $3, $1}' $f | sort)"
+        subz[$i]="$(awk '/'"$i"'\// {gsub(/'"$i"'\//, ""); print $3, $1}' $f | sort)"
     done
 
-    tput civis
-    if ! ZONE="$(menubox "$_TimeZTitle" "$_TimeZBody" \
-        'America' '-' 'Australia' '-' 'Asia' '-' 'Atlantic' '-' 'Africa' '-' \
-        'Europe' '-' 'Indian' '-' 'Pacific' '-' 'Arctic' '-' 'Antarctica' '-')"; then
-            return 1
-        fi
+    while true; do
+        tput civis
+        ZONE="$(menubox "$_TimeZTitle" "$_TimeZBody" \
+            'America' '-' 'Australia' '-' 'Asia' '-' 'Atlantic' '-' 'Africa' '-' \
+            'Europe' '-' 'Indian' '-' 'Pacific' '-' 'Arctic' '-' 'Antarctica' '-')"
 
-        if ! SUBZONE="$(dialog --cr-wrap --stdout --backtitle "$BT" \
-            --title " $_TimeZTitle " --menu "$_TimeSubZBody" 0 0 $((LINES - 17)) ${SUBZONES[$ZONE]})"; then
-                    return 1
-                fi
+        [[ $ZONE ]] || { err=1; break; }
+        SUBZONE="$(dialog --cr-wrap --stdout --backtitle "$BT" \
+            --title " $_TimeZTitle " --menu "$_TimeSubZBody" 0 0 $SHL ${subz[$ZONE]})"
 
-                yesno "$_TimeZTitle" "$_TimeZQ $ZONE/$SUBZONE?\n" || select_timezone
-            }
+        [[ $SUBZONE ]] || { err=1; break; }
+        yesno "$_TimeZTitle" "$_TimeZQ $ZONE/$SUBZONE\n" && break
+    done
+
+    return $err
+}
 
 select_sessions()
 {
@@ -472,13 +467,13 @@ select_sessions()
     [[ $INSTALL_WMS ]] || return 1
 
     WM_NUM=$(awk '{print NF}' <<< "$INSTALL_WMS")
-    WM_PACKAGES="${INSTALL_WMS/dwm/}"   # remove dwm from package list
-    WM_PACKAGES="${WM_PACKAGES//  / }"  # remove double spaces
-    WM_PACKAGES="${WM_PACKAGES# }"      # remove leading space
+    WM_PKGS="${INSTALL_WMS/dwm/}"   # remove dwm from package list
+    WM_PKGS="${WM_PKGS//  / }"  # remove double spaces
+    WM_PKGS="${WM_PKGS# }"      # remove leading space
 
     for wm in $INSTALL_WMS; do
         LOGIN_CHOICES+="$wm - "
-        [[ ${WM_EXT[$wm]} && $WM_PACKAGES != *"${WM_EXT[$wm]}"* ]] && WM_PACKAGES+=" ${WM_EXT[$wm]}"
+        [[ ${WM_EXT[$wm]} && $WM_PKGS != *"${WM_EXT[$wm]}"* ]] && WM_PKGS+=" ${WM_EXT[$wm]}"
     done
 
     select_login || return 1
@@ -496,8 +491,8 @@ select_sessions()
     fi
 
     # add unique wm packages to main package list
-    for i in $WM_PACKAGES; do
-        [[ $PACKAGES == *$i* ]] || PACKAGES+=" ${WM_PACKAGES# }"
+    for i in $WM_PKGS; do
+        [[ $PACKAGES == *$i* ]] || PACKAGES+=" ${WM_PKGS# }"
     done
 
     return 0
@@ -512,12 +507,12 @@ select_login()
     if [[ $LOGIN_TYPE == "" ]]; then
         return 1
     elif [[ $LOGIN_TYPE == 'lightdm' ]]; then
-        WM_PACKAGES+=" lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice"
+        WM_PKGS+=" lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice"
         EDIT_FILES[login]="/etc/lightdm/lightdm.conf /etc/lightdm/lightdm-gtk-greeter.conf"
     else
         PACKAGES="${PACKAGES// lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice/}"
-        WM_PACKAGES="${WM_PACKAGES// lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice/}"
-        WM_PACKAGES+=" xorg-xinit"
+        WM_PKGS="${WM_PKGS// lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice/}"
+        WM_PKGS+=" xorg-xinit"
         EDIT_FILES[login]="/home/$NEWUSER/.xinitrc /home/$NEWUSER/.xprofile"
     fi
 }
@@ -568,38 +563,40 @@ select_mirrorcmd()
 edit_configs()
 {
     tput civis
-    local choice
-    choice=$(dialog --cr-wrap --no-cancel --stdout --backtitle "$BT" \
-        --title " $_EditTitle " --menu "$_EditBody" 0 0 0 \
-        "keyboard"   "${EDIT_FILES[keyboard]}" \
-        "console"    "${EDIT_FILES[console]}" \
-        "locale"     "${EDIT_FILES[locale]}" \
-        "hostname"   "${EDIT_FILES[hostname]}" \
-        "sudoers"    "${EDIT_FILES[sudoers]}" \
-        "mkinitcpio" "${EDIT_FILES[mkinitcpio]}" \
-        "fstab"      "${EDIT_FILES[fstab]}" \
-        "crypttab"   "${EDIT_FILES[crypttab]}" \
-        "bootloader" "${EDIT_FILES[bootloader]}" \
-        "pacman"     "${EDIT_FILES[pacman]}" \
-        "login"      "${EDIT_FILES[login]}" \
-        "Finished"   "Unmount partitions, exit the installer, and reboot")
-
-    if [[ $choice == "" || $choice == "Finished" ]]; then
-        [[ $DEBUG == true && -r $DBG ]] && vim $DBG
-        # when die() is passed 127 it will call: systemctl -i reboot
-        die 127
-    else
-        local exists=""
-        for f in $(printf "%s" "${EDIT_FILES[$choice]}"); do
-            [[ -e ${MNT}$f ]] && exists+=" ${MNT}$f"
-        done
-        if [[ $exists ]]; then
-            vim -O $exists
+    local choice i=0
+
+    while true; do
+        choice=$(dialog --cr-wrap --no-cancel --stdout --backtitle "$BT" \
+            --title " $_EditTitle " --menu "$_EditBody" 0 0 0 \
+            "finished"   "exit the installer and reboot" \
+            "keyboard"   "${EDIT_FILES[keyboard]}" \
+            "console"    "${EDIT_FILES[console]}" \
+            "locale"     "${EDIT_FILES[locale]}" \
+            "hostname"   "${EDIT_FILES[hostname]}" \
+            "sudoers"    "${EDIT_FILES[sudoers]}" \
+            "mkinitcpio" "${EDIT_FILES[mkinitcpio]}" \
+            "fstab"      "${EDIT_FILES[fstab]}" \
+            "crypttab"   "${EDIT_FILES[crypttab]}" \
+            "bootloader" "${EDIT_FILES[bootloader]}" \
+            "pacman"     "${EDIT_FILES[pacman]}" \
+            "login"      "${EDIT_FILES[login]}")
+
+        if [[ $choice == "" || $choice == "finished" ]]; then
+            [[ $DEBUG == true && -r $DBG ]] && vim $DBG
+            # when die() is passed 127 it will call: systemctl -i reboot
+            die 127
         else
-            msgbox "$_ErrTitle" "$_NoFileErr"
+            local exists=""
+            for f in $(printf "%s" "${EDIT_FILES[$choice]}"); do
+                [[ -e ${MNT}$f ]] && exists+=" ${MNT}$f"
+            done
+            if [[ $exists ]]; then
+                vim -O $exists
+            else
+                msgbox "$_ErrTitle" "$_NoFileErr"
+            fi
         fi
-    fi
-    edit_configs
+    done
 }
 
 ###############################################################################
@@ -831,7 +828,7 @@ pkg_extra()
 ###############################################################################
 # partition menus
 
-partition_menu()
+part_menu()
 {
     local device choice
 
@@ -843,7 +840,7 @@ partition_menu()
     fi
 
     tput civis
-    if [[ $DISPLAY ]] && hash gparted >/dev/null 2>&1; then
+    if [[ $DISPLAY && $TERM != 'linux' ]] && hash gparted >/dev/null 2>&1; then
         choice="$(menubox "$_PartTitle" "$_PartBody" \
             "$_PartShowTree" "Shows output from the lsblk command" \
             "$_PartAuto" "Full device automatic partitioning" \
@@ -868,13 +865,11 @@ partition_menu()
     if [[ $choice == "$_Done" || $choice == "" ]]; then
         return 0
     elif [[ $choice != "$_PartWipe" && $choice != "$_PartAuto" && $choice != "$_PartShowTree" ]]; then
-        clear; tput cnorm; $choice "$device"; partition_menu "$device"
+        clear; tput cnorm; $choice "$device"
     elif [[ $choice == "$_PartShowTree" ]]; then
         msgbox "$_PartTitle" "\n\n$(lsblk -o NAME,MODEL,SIZE,TYPE,FSTYPE,MOUNTPOINT "$device")\n\n"
-        partition_menu "$device"
     elif [[ $choice == "$_PartWipe" ]]; then
         yesno "$_PartWipe" "$_PartBody1 $device $_PartWipeBody" && wipe -Ifrev $device
-        partition_menu "$device"
     else
         local root_size msg ret table boot_fs
         root_size=$(lsblk -lno SIZE "$device" | awk 'NR == 1 {
@@ -892,20 +887,22 @@ partition_menu()
         fi
 
         if yesno "$_PrepParts" "$_PartBody1 $device $msg ($root_size)$_PartBody3"; then
-            auto_partition "$device" "$table" "$boot_fs" "$root_size" || return 1
-        else
-            partition_menu "$device"
+            if auto_partition "$device" "$table" "$boot_fs" "$root_size"; then
+                return 0
+            else
+                return 1
+            fi
         fi
     fi
 
-    return 0
+    part_menu "$device"
 }
 
 format_as()
 {
     infobox "$_FSTitle" "\nRunning: ${FS_CMDS[$2]} $1\n" 1
     ${FS_CMDS[$2]} "$1" >/dev/null 2>$ERR
-    errshow "${FS_CMDS[$2]} $1"
+    errshow "${FS_CMDS[$2]} $1" && FORMATTED+=" $part"
 }
 
 enable_swap()
@@ -940,7 +937,6 @@ device_tree()
 select_device()
 {
     local dev msg
-
     [[ $1 == 'boot' ]] && msg="$_DevSelTitle for bootloader\n" || umount_dir $MNT
 
     if [[ $DEV_COUNT -eq 1 && $SYS_DEVS ]]; then
@@ -962,7 +958,6 @@ select_device()
 confirm_mount()
 {
     local part="$1" mount="$2"
-
     [[ $mount == "$MNT" ]] && local m="/ (root)" || local m="${mount#$MNT}"
     if [[ $(mount) == *"$mount"* ]]; then
         infobox "$_MntTitle" "$_MntSucc\nPartition: $part\nMountpoint: $m\n" 1
@@ -1056,11 +1051,9 @@ auto_partition()
 
     infobox "$_PrepParts" "\nCreating a $size ext4 root partition.\n" 0
     parted -s $device mkpart primary ext4 513MiB 100% >/dev/null 2>&1
-
     sleep 0.5
     AUTO_ROOT_PART="$(lsblk -lno NAME,TYPE $device | awk 'NR == 3 {print "/dev/"$1}')"
     mkfs.ext4 -q $AUTO_ROOT_PART >/dev/null 2>&1
-
     tput civis
     sleep 0.5
     msgbox "$_PrepParts" "\nAuto partitioning complete.\n\n$(lsblk -o NAME,MODEL,SIZE,TYPE,FSTYPE $device)\n"
@@ -1079,7 +1072,6 @@ mount_partition()
     else
         mount "$part" "$mountp" 2>$ERR
     fi
-
     confirm_mount $part "$mountp" || return 1
     check_cryptlvm "$part"
 
@@ -1088,8 +1080,7 @@ mount_partition()
 
 find_partitions()
 {
-    local str="$1"
-    local err=''
+    local str="$1" err=''
 
     # string of partitions as /TYPE/PART SIZE
     if [[ $IGNORE_DEV != "" ]]; then
@@ -1144,9 +1135,8 @@ setup_boot_device()
 ###############################################################################
 # mounting menus
 
-mounting_menu()
+mount_menu()
 {
-    # prepare partition list PARTS for dialog
     lvm_detect
     umount_dir $MNT
     find_partitions 'part|lvm|crypt' || { SEL=2; return 1; }
@@ -1224,6 +1214,7 @@ select_mount_opts()
     while true; do
         MNT_OPTS="$(dialog --cr-wrap --stdout --backtitle "$BT" \
             --title " $title " --checklist "$_MntBody" 0 0 0 $opts)"
+
         if [[ $MNT_OPTS ]]; then
             MNT_OPTS="$(sed 's/ /,/g; $s/,$//' <<< "$MNT_OPTS" )"
             yesno "$title" "$_MntConfBody $MNT_OPTS\n" && break
@@ -1239,15 +1230,14 @@ select_filesystem()
 {
     local part="$1" fs="" cur_fs="" err=0
     cur_fs="$(lsblk -lno FSTYPE "$part" 2>/dev/null)"
-    local msg="\nSelect which filesystem to use for: $part\n\nCurrent:  ${cur_fs:-none}\nDefault:  ext4"
-
-    [[ $part == $ROOT_PART && $ROOT_PART == $AUTO_ROOT_PART && $LUKS == "" && $LVM == "" ]] && return 0
+    [[ $part == "$ROOT_PART" && $ROOT_PART == "$AUTO_ROOT_PART" && ! $LUKS && ! $LVM ]] && return 0
 
     while true; do
+        local msg="\nSelect which filesystem to use for: $part\n\nCurrent:  ${cur_fs:-none}\nDefault:  ext4"
         tput civis
-        if [[ $cur_fs && $part != "$ROOT_PART" ]]; then
+        if [[ $cur_fs && ( $part != "$ROOT_PART" || $FORMATTED == *"$part"* ) ]]; then
             fs="$(menubox "$_FSTitle: $part" "$msg" \
-                "$_Skip"   "-" \
+                "$_Skip"   "Do not format this partition" \
                 "ext4"     "${FS_CMDS[ext4]}" \
                 "ext3"     "${FS_CMDS[ext3]}" \
                 "ext2"     "${FS_CMDS[ext2]}" \
@@ -1261,6 +1251,7 @@ select_filesystem()
 
             [[ $fs == "$_Skip" ]] && break
         else
+            local msg="\nSelect which filesystem to use for: $part\n\nDefault:  ext4"
             fs="$(menubox "$_FSTitle: $part" "$msg" \
                 "ext4"     "${FS_CMDS[ext4]}" \
                 "ext3"     "${FS_CMDS[ext3]}" \
@@ -1273,12 +1264,9 @@ select_filesystem()
                 "reiserfs" "${FS_CMDS[reiserfs]}")"
 
         fi
-
         [[ $fs ]] || { err=1; break; }
-
         yesno "$_FSTitle" "\nFormat $part as $fs?\n" && break
     done
-
     (( err == 0 )) || return $err
     [[ $fs == "$_Skip" ]] || format_as "$part" "$fs"
 }
@@ -1288,18 +1276,16 @@ select_efi_partition()
     tput civis
     if (( COUNT == 1 )); then
         BOOT_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
-        infobox "$_PrepMount" "$_OnlyOne for EFI: $BOOT_PART\n" 1
-    elif [[ $BOOT_PART == "$AUTO_BOOT_PART" ]]; then
+    elif [[ $AUTO_BOOT_PART ]]; then
         BOOT_PART="$AUTO_BOOT_PART"
         return 0 # were done here
     else
         BOOT_PART="$(menubox "$_PrepMount" "$_SelUefiBody" $PARTS)"
     fi
-
     [[ $BOOT_PART ]] || return 1
 
     if grep -q 'fat' <<< "$(fsck -N "$BOOT_PART")"; then
-        local msg="$_FormUefiBody $BOOT_PART $_FormUefiBody2"
+        local msg="$_FormUefiBody $BOOT_PART $_FormBootBody"
         if yesno "$_PrepMount" "$msg" "Format $BOOT_PART" "Skip Formatting" "no"; then
             format_as "$BOOT_PART" "vfat"
             sleep 1
@@ -1315,11 +1301,11 @@ select_efi_partition()
 select_boot_partition()
 {
     tput civis
-    if [[ $AUTO_BOOT_PART && $AUTO_BOOT_PART == "$BOOT_PART" ]]; then
+    if [[ $AUTO_BOOT_PART && ! $LVM ]]; then
         BOOT_PART="$AUTO_BOOT_PART"
         return 0 # were done here
     elif [[ $LUKS && ! $LVM ]]; then
-        BOOT_PART="$(menubox "$_PrepMount" "\nSelect the boot partition (/boot), this is required for LUKS." $PARTS)"
+        BOOT_PART="$(menubox "$_PrepMount" "$_SelBiosLuksBody" $PARTS)"
         [[ $BOOT_PART ]] || return 1
     else
         BOOT_PART="$(menubox "$_PrepMount" "$_SelBiosBody" "$_Skip" "-" $PARTS)"
@@ -1327,7 +1313,7 @@ select_boot_partition()
     fi
 
     if grep -q 'ext[34]' <<< "$(fsck -N "$BOOT_PART")"; then
-        local msg="$_FormBiosBody $BOOT_PART $_FormBiosBody2"
+        local msg="$_FormBiosBody $BOOT_PART $_FormBootBody"
         if yesno "$_PrepMount" "$msg" "Format $BOOT_PART" "Skip Formatting" "no"; then
             format_as "$BOOT_PART" "ext4"
             sleep 1
@@ -1344,7 +1330,6 @@ select_root_partition()
     tput civis
     if (( COUNT == 1 )); then
         ROOT_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
-        infobox "$_PrepMount" "$_OnlyOne for root (/): $ROOT_PART\n" 1
     elif ! ROOT_PART="$(menubox "$_PrepMount" "$_SelRootBody" $PARTS)"; then
         return 1
     fi
@@ -1360,7 +1345,6 @@ select_extra_partitions()
     while (( COUNT > 0 )); do
         tput civis
         part="$(menubox "$_PrepMount " "$_ExtPartBody" "$_Done" "Return to the main menu" $PARTS)"
-
         if [[ $part == "$_Done" || $part == "" ]]; then
             break
         elif select_filesystem "$part" && select_mountpoint && mount_partition "$part" "$EXMNT"; then
@@ -1395,7 +1379,7 @@ install()
     login_manager
     printf "Setting ownership of /home/$NEWUSER\n"
     chrun "chown -Rf $NEWUSER:users /home/$NEWUSER"
-    sleep 3
+    sleep 1
     edit_configs
 }
 
@@ -1677,10 +1661,7 @@ package_operations()
         inpkg+=" linux-hardened"; rmpkg+=" linux"
     fi
 
-    if [[ $MYSHELL == '/usr/bin/zsh' ]]; then
-        inpkg+=" zsh-completions zsh-history-substring-search"
-    fi
-
+    [[ $MYSHELL == '/usr/bin/zsh' ]] && inpkg+=" zsh-completions zsh-history-substring-search"
     [[ $INSTALL_WMS =~ (openbox|bspwm|i3-gaps|dwm) ]] && inpkg+=" $WM_BASE_PKGS"
     [[ $INSTALL_WMS =~ ^(plasma|gnome|cinnamon)$ ]] || inpkg+=" archlabs-ksuperkey"
 
@@ -1703,14 +1684,14 @@ suckless_install()
         if chrun "git clone https://bitbucket.org/natemaia/$i /home/$NEWUSER/suckless/$i"; then
             chrun "cd /home/$NEWUSER/suckless/$i; rm -f config.h; make clean install; make clean"
         else
-            printf "Failed to clone $i repo\n"
+            printf "failed to clone $i repo\n"
         fi
     done
 
     if [[ -d $MNT/home/$NEWUSER/suckless/dwm && -x $MNT/usr/bin/dwm ]]; then
         printf "To configure dwm edit /home/$NEWUSER/suckless/dwm/config.h\n"
         printf "You can then recompile it with 'sudo make clean install'\n"
-        sleep 3
+        sleep 2
     fi
 }
 
@@ -1733,12 +1714,10 @@ setup_boot()
     fi
 
     [[ $BOOTLDR ]] || return 1
-
     if [[ $BOOT_PART != "" ]]; then
         mount_partition "$BOOT_PART" "/boot" && SEP_BOOT=true || return 1
         setup_boot_device
     fi
-
     setup_${BOOTLDR} || return 1
 }
 
@@ -1784,19 +1763,15 @@ setup_systemd-boot()
 
 prerun_grub()
 {
-    local cfg="$MNT/etc/default/grub"
     sed -i "s/GRUB_DISTRIBUTOR=.*/GRUB_DISTRIBUTOR=\"${DIST}\"/g;
-    s/GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"\"/g" $cfg
+    s/GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"\"/g" $MNT/etc/default/grub
     if [[ $LUKS_DEV ]]; then
         sed -i "s~#GRUB_ENABLE_CRYPTODISK~GRUB_ENABLE_CRYPTODISK~g;
-        s~GRUB_CMDLINE_LINUX=.*~GRUB_CMDLINE_LINUX=\"${LUKS_DEV}\"~g" $cfg
+        s~GRUB_CMDLINE_LINUX=.*~GRUB_CMDLINE_LINUX=\"${LUKS_DEV}\"~g" $MNT/etc/default/grub
     fi
     if [[ $SYS == 'BIOS' && $LVM && $SEP_BOOT == false ]]; then
-        sed -i "s/GRUB_PRELOAD_MODULES=.*/GRUB_PRELOAD_MODULES=\"lvm\"/g" $cfg
+        sed -i "s/GRUB_PRELOAD_MODULES=.*/GRUB_PRELOAD_MODULES=\"lvm\"/g" $MNT/etc/default/grub
     fi
-
-    # needed for grub-probe module to work properly in the chroot
-    # once the grub install is done these will be umounted and removed
     mkdir -p /run/lvm
     mkdir -p /run/udev
     mkdir -p $MNT/hostrun/lvm
@@ -1809,7 +1784,6 @@ prerun_grub()
 
 prerun_systemd-boot()
 {
-    # create the boot entry configs
     mkdir -p ${MNT}/boot/loader/entries
     cat > ${MNT}/boot/loader/loader.conf << EOF
 default  $DIST
@@ -1828,7 +1802,6 @@ linux   /vmlinuz-${KERNEL}$([[ $UCODE ]] && printf "\ninitrd  %s" "/${UCODE}.img
 initrd  /initramfs-$KERNEL-fallback.img
 options root=$ROOT_PART_ID $([[ $LUKS_DEV ]] && printf "%s " "$LUKS_DEV")rw
 EOF
-    # add pacman hook to update the bootloader when systemd receives an update
     mkdir -p $MNT/etc/pacman.d/hooks
     cat > $MNT/etc/pacman.d/hooks/systemd-boot.hook << EOF
 [Trigger]
@@ -1841,7 +1814,6 @@ Description = Updating systemd-boot
 When = PostTransaction
 Exec = /usr/bin/bootctl update
 EOF
-    # systemd-boot requires this before running bootctl
     systemd-machine-id-setup --root="$MNT"
     return 0
 }
@@ -1858,17 +1830,16 @@ MENU BACKGROUND splash.png
 TIMEOUT 50
 DEFAULT $DIST
 
+# Refer to https://www.syslinux.org/wiki/index.php/Comboot/menu.c32
 MENU WIDTH 78
 MENU MARGIN 4
-MENU ROWS 5
+MENU ROWS 4
 MENU VSHIFT 10
 MENU TIMEOUTROW 13
 MENU TABMSGROW 14
 MENU CMDLINEROW 14
 MENU HELPMSGROW 16
 MENU HELPMSGENDROW 29
-
-# Refer to https://www.syslinux.org/wiki/index.php/Comboot/menu.c32
 MENU COLOR border       30;44   #40ffffff #a0000000 std
 MENU COLOR title        1;36;44 #9033ccff #a0000000 std
 MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
@@ -1879,7 +1850,6 @@ MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
 MENU COLOR msg07        37;40   #90ffffff #a0000000 std
 MENU COLOR tabmsg       31;40   #30ffffff #00000000 std
 
-
 LABEL $DIST
 MENU LABEL $DIST Linux
 LINUX ../vmlinuz-$KERNEL
@@ -1892,7 +1862,6 @@ LINUX ../vmlinuz-$KERNEL
 APPEND root=$ROOT_PART_ID $([[ $LUKS_DEV ]] && printf "%s " "$LUKS_DEV")rw
 INITRD $([[ $UCODE ]] && printf "%s" "../${UCODE}.img,")../initramfs-$KERNEL-fallback.img
 
-
 # some examples for chainloading other bootloaders
 
 #LABEL grub2
@@ -2049,55 +2018,56 @@ get_lv_size()
 
 lvm_volume_name()
 {
-    local msg="$1"
-
-    local default="volmain"
-    (( VOL_COUNT > 1 )) && default="volextra"
+    local msg="$1" default="mainvolume" name="" err=0
+    (( VOL_COUNT > 1 )) && default="extravolume$VOL_COUNT"
 
-    tput cnorm
-    local name
-    if ! name="$(getinput "$_LvmCreateVG (LV:$VOL_COUNT)" "\n$msg" "$default" nolimit)"; then
-        return 1
-    fi
-
-    if [[ ${name:0:1} == "/" || ${#name} -eq 0 || $name =~ \ |\' ]] || grep -q "$name" <<< "$(lsblk)"; then
-        msgbox "$_ErrTitle" "$_LvmLvNameErrBody"
-        lvm_volume_name "$msg" || return 1
-    fi
+    while true; do
+        tput cnorm
+        name="$(getinput "$_LvmCreateVG (LV:$VOL_COUNT)" "\n$msg" "$default" nolimit)"
+        [[ $name ]] || { err=1; break; }
+        if [[ ${name:0:1} == "/" || ${#name} -eq 0 || $name =~ \ |\' ]] || grep -q "$name" <<< "$(lsblk)"; then
+            msgbox "$_ErrTitle" "$_LvmLvNameErrBody"
+        else
+            VOLUME_NAME="$name"
+            break
+        fi
+    done
 
-    VOLUME_NAME="$name"
-    return 0
+    return $err
 }
 
 lvm_group_name()
 {
-    tput cnorm
-    local group
-    if ! group="$(getinput "$_LvmCreateVG" "$_LvmNameVgBody" "VolGroup" nolimit)"; then
-        return 1
-    fi
+    local group="" err=0
 
-    if [[ ${group:0:1} == "/" || ${#group} -eq 0 || $group =~ \ |\' ]] || grep -q "$group" <<< "$(lsblk)"; then
-        msgbox "$_ErrTitle" "$_LvmNameVgErr"
-        lvm_group_name || return 1
-    fi
+    while true; do
+        tput cnorm
+        group="$(getinput "$_LvmCreateVG" "$_LvmNameVgBody" "VolGroup" nolimit)"
+        [[ $group ]] || { err=1; break; }
+        if [[ ${group:0:1} == "/" || ${#group} -eq 0 || $group =~ \ |\' ]] || grep -q "$group" <<< "$(lsblk)"; then
+            msgbox "$_ErrTitle" "$_LvmNameVgErr"
+        else
+            VOLUME_GROUP="$group"
+            break
+        fi
+    done
 
-    VOLUME_GROUP="$group"
-    return 0
+    return $err
 }
 
 lvm_extra_lvs()
 {
+    local err=0
+
     while (( VOL_COUNT > 1 )); do
-        lvm_volume_name "$_LvmLvNameBody1" || { break; return 1; }
-        get_lv_size || { break; return 1; }
+        lvm_volume_name "$_LvmLvNameBody1" && get_lv_size || { err=1; break; }
         lvcreate -L "$VOLUME_SIZE" "$VOLUME_GROUP" -n "$VOLUME_NAME" >/dev/null 2>$ERR
-        errshow "lvcreate -L $VOLUME_SIZE $VOLUME_GROUP -n $VOLUME_NAME"
+        errshow "lvcreate -L $VOLUME_SIZE $VOLUME_GROUP -n $VOLUME_NAME" || { err=1; break; }
         msgbox "$_LvmCreateVG (LV:$VOL_COUNT)" "\n$_Done Logical Volume (LV) $VOLUME_NAME ($VOLUME_SIZE) $_LvmPvDoneBody2.\n"
         (( VOL_COUNT-- ))
     done
 
-    return 0
+    return $err
 }
 
 lvm_volumes()
@@ -2134,7 +2104,7 @@ lvm_mkgroup()
     done
 
     vgcreate -f "$VOLUME_GROUP" "${LVM_PARTS[@]}" >/dev/null 2>$ERR
-    errshow "vgcreate -f $VOLUME_GROUP ${LVM_PARTS[*]}"
+    errshow "vgcreate -f $VOLUME_GROUP ${LVM_PARTS[*]}" || return 1
 
     GROUP_SIZE=$(vgdisplay "$VOLUME_GROUP" | awk '/VG Size/ {
         gsub(/[^0-9.]/, "")
@@ -2165,7 +2135,7 @@ lvm_create()
     lvm_extra_lvs || return 1
     lvm_volume_name "$_LvmLvNameBody1 $_LvmLvNameBody2 (${VGROUP_MB}MB)" || return 1
     lvcreate -l +100%FREE "$VOLUME_GROUP" -n "$VOLUME_NAME" >/dev/null 2>$ERR
-    errshow "lvcreate -l +100%FREE $VOLUME_GROUP -n $VOLUME_NAME"
+    errshow "lvcreate -l +100%FREE $VOLUME_GROUP -n $VOLUME_NAME" || return 1
     LVM='logical volume'; tput civis; sleep 0.5
     local msg="\n$_Done $_LvmPvDoneBody1 $VOLUME_GROUP-$VOLUME_NAME (${VOLUME_SIZE:-${VGROUP_MB}MB}) $_LvmPvDoneBody2.\n"
     msgbox "$_LvmCreateVG (LV:$VOL_COUNT)" "$msg\n$(lsblk -o NAME,MODEL,TYPE,FSTYPE,SIZE "${LVM_PARTS[@]}")\n"
@@ -2176,7 +2146,6 @@ lvm_del_vg()
     if lvm_show_vg && yesno "$_LvmDelVG" "$_LvmDelQ"; then
         vgremove -f "$DEL_VG" >/dev/null 2>&1
     fi
-    return 0
 }
 
 lvm_del_all()
@@ -2197,7 +2166,6 @@ lvm_del_all()
         done
         LVM=''
     fi
-    return 0
 }
 
 ###############################################################################
@@ -2215,9 +2183,9 @@ luks_menu()
         "$_Back"           "Return to the main menu")"
 
     case $choice in
-        "$_LuksEncrypt")    luks_default || return 1 ;;
+        "$_LuksEncrypt")    luks_basic || return 1 ;;
         "$_LuksOpen")       luks_open || return 1 ;;
-        "$_LuksEncryptAdv") luks_keycmd || return 1 ;;
+        "$_LuksEncryptAdv") luks_advanced || return 1 ;;
     esac
 
     return 0
@@ -2225,7 +2193,6 @@ luks_menu()
 
 luks_open()
 {
-    LUKS_PART=""
     modprobe -a dm-mod dm_crypt
     umount_dir $MNT
     find_partitions 'part|crypt|lvm' || return 1
@@ -2233,18 +2200,16 @@ luks_open()
 
     if (( COUNT == 1 )); then
         LUKS_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
-        infobox "$_LuksOpen" "${_OnlyOne}: $LUKS_PART\n" 1
-    elif ! LUKS_PART="$(menubox "$_LuksOpen" "$_LuksMenuBody" $PARTS)" || ! [[ $LUKS_PART ]]; then
-        return 1
+    else
+        LUKS_PART="$(menubox "$_LuksOpen" "$_LuksMenuBody" $PARTS)"
     fi
+    [[ $LUKS_PART ]] || return 1
 
     luks_pass "$_LuksOpen" || return 1
     infobox "$_LuksOpen" "$_LuksOpenWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
     cryptsetup open --type luks $LUKS_PART "$LUKS_NAME" <<< "$LUKS_PASS" 2>$ERR
-    errshow "cryptsetup open --type luks $LUKS_PART $LUKS_NAME"
-
-    LUKS='encrypted'
-    luks_show
+    errshow "cryptsetup open --type luks $LUKS_PART $LUKS_NAME" || return 1
+    LUKS='encrypted'; luks_show
     return 0
 }
 
@@ -2300,7 +2265,6 @@ luks_pass()
 
 luks_setup()
 {
-    LUKS_PART=""
     modprobe -a dm-mod dm_crypt
     umount_dir $MNT
     find_partitions 'part|lvm' || return 1
@@ -2308,42 +2272,38 @@ luks_setup()
 
     if (( COUNT == 1 )); then
         LUKS_PART="$(awk 'NF > 0 {print $1}' <<< "$PARTS")"
-        infobox "$_LuksEncrypt" "${_OnlyOne}: $LUKS_PART\n" 1
-    elif ! LUKS_PART="$(menubox "$_LuksEncrypt" "$_LuksEncryptBody" $PARTS)"; then
-        return 1
-    elif ! luks_pass "$_LuksEncrypt"; then
-        return 1
+    else
+        LUKS_PART="$(menubox "$_LuksEncrypt" "$_LuksEncryptBody" $PARTS)"
     fi
 
-    return 0
+    [[ $LUKS_PART ]] || return 1
+    luks_pass "$_LuksEncrypt"
 }
 
-luks_default()
+luks_basic()
 {
     luks_setup || return 1
     infobox "$_LuksEncrypt" "$_LuksCreateWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
     cryptsetup -q luksFormat $LUKS_PART <<< "$LUKS_PASS" 2>$ERR
-    errshow "cryptsetup -q luksFormat $LUKS_PART"
+    errshow "cryptsetup -q luksFormat $LUKS_PART" || return 1
     cryptsetup open $LUKS_PART "$LUKS_NAME" <<< "$LUKS_PASS" 2>$ERR
-    errshow "cryptsetup open $LUKS_PART $LUKS_NAME"
-    LUKS='encrypted'
-    luks_show
+    errshow "cryptsetup open $LUKS_PART $LUKS_NAME" || return 1
+    LUKS='encrypted'; luks_show
     return 0
 }
 
-luks_keycmd()
+luks_advanced()
 {
     if luks_setup; then
         tput cnorm
         local cipher
-        if ! cipher="$(getinput "$_PrepLUKS" "$_LuksCipherKey" "-s 512 -c aes-xts-plain64" nolimit)"; then
-            return 1
-        fi
+        cipher="$(getinput "$_PrepLUKS" "$_LuksCipherKey" "-s 512 -c aes-xts-plain64" nolimit)"
+        [[ $cipher ]] || return 1
         infobox "$_LuksEncryptAdv" "$_LuksCreateWaitBody $LUKS_NAME $_LuksWaitBody2 $LUKS_PART\n" 0
         cryptsetup -q $cipher luksFormat $LUKS_PART <<< "$LUKS_PASS" 2>$ERR
-        errshow "cryptsetup -q $cipher luksFormat $LUKS_PART"
+        errshow "cryptsetup -q $cipher luksFormat $LUKS_PART" || return 1
         cryptsetup open $LUKS_PART "$LUKS_NAME" <<< "$LUKS_PASS" 2>$ERR
-        errshow "cryptsetup open $LUKS_PART $LUKS_NAME"
+        errshow "cryptsetup open $LUKS_PART $LUKS_NAME" || return 1
         luks_show
         return 0
     fi
@@ -2378,7 +2338,7 @@ luks_keyfile()
 
 ofn()
 {
-    [[ $USER_PKGS == *$1* ]] && printf "on" || printf "off"
+    [[ $USER_PKGS == *"$1"* ]] && printf "on" || printf "off"
 }
 
 chrun()
@@ -2410,16 +2370,15 @@ is_ssd()
 
 die()
 {
-    (( $# >= 1 )) && local exitcode=$1 || local exitcode=0
+    (( $# >= 1 )) && exitcode=$1 || exitcode=0
 
     trap - INT
     tput cnorm
+
     if [[ -d $MNT ]] && command cd /; then
         umount_dir $MNT
         if (( exitcode == 127 )); then
-            umount -l /run/archiso/bootmnt
-            sleep 0.5
-            systemctl -i reboot
+            umount -l /run/archiso/bootmnt; sleep 0.5; systemctl -i reboot
         fi
     fi
 
@@ -2521,7 +2480,7 @@ load_bcm()
 chk_connect()
 {
     if [[ $CHECKED_NET == true ]]; then
-        infobox "Network Connect" "\nVerifying connection\n" 1
+        infobox "Network Connect" "\nVerifying network connection\n" 1
     else
         infobox "Network Connect" "\nChecking connection to https://www.archlinux.org\n" 1
         CHECKED_NET=true
@@ -2557,7 +2516,7 @@ system_checks()
         die 1
     fi
     grep -q 'BCM4352' <<< "$(lspci -vnn -d 14e4:)" && load_bcm
-    net_connect || { infobox "$_ErrTitle" "$_NoNetwork\n$_Exit" 3; die 1; }
+    net_connect || { infobox "$_ErrTitle" "$_NoNetwork\n$_Exit"; die 1; }
 }
 
 prechecks()
@@ -2569,15 +2528,15 @@ prechecks()
     elif [[ $1 -ge 2 && $CONFIG_DONE != true ]]; then
         infobox "$_ErrTitle" "$_ErrNoConfig"; SEL=6; return 1
     fi
+
     return 0
 }
 
 errshow()
 {
-    local last_exit_code=$?
+    last_exit_code=$?
     (( last_exit_code == 0 )) && return 0
-    local err
-    err="$(sed 's/[^[:print:]]//g; s/\[[0-9\;:]*\?m//g; s/==> //g; s/] ERROR:/]\nERROR:/g' "$ERR")"
+    local err="$(sed 's/[^[:print:]]//g; s/\[[0-9\;:]*\?m//g; s/==> //g; s/] ERROR:/]\nERROR:/g' "$ERR")"
 
     if [[ $err ]]; then
         msgbox "$_ErrTitle" "\nThe command exited abnormally: $1\n\nWith the following message: $err"
@@ -2589,6 +2548,8 @@ errshow()
         [[ -e $DBG && $TERM == 'linux' ]] && less $DBG
         die 1
     fi
+
+    return 1
 }
 
 debug()