OSDN Git Service

Revert removal of lightdm
authornatemaia <natemaia10@gmail.com>
Sun, 21 Apr 2019 19:32:42 +0000 (12:32 -0700)
committernatemaia <natemaia10@gmail.com>
Sun, 21 Apr 2019 19:32:42 +0000 (12:32 -0700)
archlabs-installer

index 73eeab6..e717518 100755 (executable)
@@ -5,7 +5,7 @@
 # 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
@@ -52,6 +52,7 @@ HOOKS="shutdown"  # list of additional HOOKS to add in /etc/mkinitcpio.conf
 
 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
@@ -368,6 +369,7 @@ select_show()
        local pkgs="${USER_PKGS//  / } ${PACKAGES//  / }"
        [[ $BOOT_PART ]] && mnt="/$BOOTDIR"
        [[ $INSTALL_WMS == *dwm* ]] && pkgs="dwm st dmenu $pkgs"
+       pkgs="${pkgs//  / }"
        msg "Show Configuration" "
 
 ---------- PARTITION CONFIGURATION ------------
@@ -419,16 +421,29 @@ select_show()
 
 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()
@@ -597,6 +612,7 @@ select_sessions()
        done
 
        select_login || return 1
+       [[ $WM_PKGS != *"$LOGIN_PKGS"* ]] && WM_PKGS+=" $LOGIN_PKGS"
 
        while IFS=' ' read -r pkg; do
                [[ $PACKAGES != *"$pkg"* ]] && PACKAGES+=" $pkg"
@@ -928,12 +944,15 @@ part_shrink()
 
                                # 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
@@ -1295,7 +1314,7 @@ install_main()
        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
 
@@ -1490,9 +1509,6 @@ install_user()
 
 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
@@ -1516,6 +1532,32 @@ EOF
        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=""