# Some ideas and code reworked from other resources
# AIF, Cnichi, Calamares, Arch Wiki.. Credit where credit is due
-VER="2.0.41" # installer version
+VER="2.0.42" # installer version
DIST="ArchLabs" # linux distributor
MNT="/mnt" # install mountpoint
ANS="/tmp/ans" # dialog answer file
LOGINRC='' # login shell rc file, eg. .zprofile, .bash_profile, .profile
LOGIN_WM='' # default login session to be placed in ~/.xinitrc
+LOGIN_TYPE='' # login manager can be: lightdm, xinit
INSTALL_WMS='' # space separated list of chosen wm/de
UCODE='' # cpu microcode (if any), eg. amd-ucode, intel-ucode
local pkgs="${USER_PKGS// / } ${PACKAGES// / }"
[[ $BOOT_PART ]] && mnt="/$BOOTDIR"
[[ $INSTALL_WMS == *dwm* ]] && pkgs="dwm st dmenu $pkgs"
+ pkgs="${pkgs// / }"
msg "Show Configuration" "
---------- PARTITION CONFIGURATION ------------
select_login()
{
- if (( WM_NUM == 1 )); then
- LOGIN_WM="${WM_SESSIONS[$INSTALL_WMS]}"
- else
- dlg LOGIN_WM menu "Login Session" "$_login" $LOGIN_CHOICES || return 1
- LOGIN_WM="${WM_SESSIONS[$LOGIN_WM]}"
+ if [[ -z $LOGIN_TYPE ]]; then
+ dlg LOGIN_TYPE menu "Login Management" "\nSelect what kind of login management to use." \
+ "xinit" "Console login without a display manager" \
+ "lightdm" "Lightweight display manager with a gtk greeter" || return 1
fi
- local txt="\nDo you want autologin enabled for $NEWUSER?\n\nThe following two files will be created (disable autologin by remove them):\n\n - /home/$NEWUSER/$LOGINRC (this runs startx when logging in on tty1)\n - /etc/systemd/system/getty@tty1.service.d/autologin.conf (this logs in $NEWUSER without a password)\n"
- yesno "Autologin" "$txt" && AUTOLOGIN=true || AUTOLOGIN=''
- EDIT_FILES[login]="/home/$NEWUSER/.xinitrc /home/$NEWUSER/.xprofile"
+ if [[ $LOGIN_TYPE == 'lightdm' ]]; then
+ LOGIN_PKGS="lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice"
+ EDIT_FILES[login]="/etc/lightdm/lightdm.conf /etc/lightdm/lightdm-gtk-greeter.conf"
+ AUTOLOGIN=''
+ else
+ if (( WM_NUM == 1 )); then
+ LOGIN_WM="${WM_SESSIONS[$INSTALL_WMS]}"
+ else
+ dlg LOGIN_WM menu "Login Management" "$_login" $LOGIN_CHOICES || return 1
+ LOGIN_WM="${WM_SESSIONS[$LOGIN_WM]}"
+ fi
+
+ local txt="\nDo you want autologin enabled for $NEWUSER?\n\nIf so the following two files will be created (disable autologin by removing them):\n\n - /home/$NEWUSER/$LOGINRC (this runs startx when logging in on tty1)\n - /etc/systemd/system/getty@tty1.service.d/autologin.conf (this logs in $NEWUSER without a password)\n"
+ yesno "Autologin" "$txt" && AUTOLOGIN=true || AUTOLOGIN=''
+ LOGIN_PKGS="xorg-xinit"
+ EDIT_FILES[login]="/home/$NEWUSER/.xinitrc /home/$NEWUSER/.xprofile"
+ fi
}
select_config()
done
select_login || return 1
+ [[ $WM_PKGS != *"$LOGIN_PKGS"* ]] && WM_PKGS+=" $LOGIN_PKGS"
while IFS=' ' read -r pkg; do
[[ $PACKAGES != *"$pkg"* ]] && PACKAGES+=" $pkg"
# minimum in KiB (2^10)
case "$fs" in
- ext[2-4]) min=$(dumpe2fs -h "$part" |& awk '/Block count/{count=$NF} /Block size/{size=$NF} END{print int((count * size) / 1024)}') ;;
- ntfs) min=$(ntfsresize -f -m "$part" | awk 'NR == 2 {print int(($NF * 1000 * 1000) / 1024)}') ;;
+ ext[2-4])
+ mount "$part" $MNT >/dev/null 2>&1; sleep 0.5
+ min=$(df --output=used --block-size=KiB "$part" | awk 'NR == 2 {print int($1)}')
+ umount $MNT >/dev/null 2>&1
+ ntfs) min=$(ntfsresize -f -m "$part" | awk 'NR == 2 {print int(($NF * 1000 * 1000) / 1024)}') >/dev/null 2>&1 ;;
esac
# KiB -> MiB
- mbmin=$((min / 1024))
+ mbmin=$(((min / 1024) + 200))
mbend=$((end / 1024))
# get new size from user
install_boot
chrun "hwclock --systohc --utc" || chrun "hwclock --systohc --utc --directisa"
install_user
- install_xinit
+ install_login
chrun "chown -Rf $NEWUSER:users /home/$NEWUSER"
sleep 1
install_xinit()
{
- SERVICE="$MNT/etc/systemd/system/getty@tty1.service.d"
- sed -i '/printf/d' $MNT/root/.zshrc
-
if [[ -e $MNT/home/$NEWUSER/.xinitrc ]] && grep -q 'exec' $MNT/home/$NEWUSER/.xinitrc; then
sed -i "/exec/ c exec ${LOGIN_WM}" $MNT/home/$NEWUSER/.xinitrc
else
fi
}
+install_login()
+{
+ SERVICE="$MNT/etc/systemd/system/getty@tty1.service.d"
+ sed -i '/printf/d' $MNT/root/.zshrc
+ install_${LOGIN_TYPE:-xinit}
+}
+
+install_lightdm()
+{
+ rm -rf $SERVICE
+ rm -rf $MNT/home/$NEWUSER/.{xinitrc,profile,zprofile,bash_profile}
+ chrun 'systemctl set-default graphical.target && systemctl enable lightdm.service' 2>$ERR
+ errshow 1 "systemctl set-default graphical.target && systemctl enable lightdm.service"
+ cat > $MNT/etc/lightdm/lightdm-gtk-greeter.conf << EOF
+# LightDM GTK+ Configuration
+
+[greeter]
+default-user-image=/usr/share/icons/ArchLabs-Dark/64x64/places/distributor-logo-archlabs.png
+background=/usr/share/backgrounds/archlabs/archlabs.jpg
+theme-name=Adwaita-dark
+icon-theme-name=Adwaita
+font-name=DejaVu Sans Mono 11
+position=30%,end 50%,end
+EOF
+}
+
install_packages()
{
local rmpkg=""