From 88697517f798e8c79ddbdfe32860997ebaf423a2 Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Tue, 3 Sep 2024 17:26:45 -0500 Subject: [PATCH] Update dwmtitus-setup.sh --- .../applications-setup/dwmtitus-setup.sh | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/src/commands/applications-setup/dwmtitus-setup.sh b/src/commands/applications-setup/dwmtitus-setup.sh index 01a49fdd..6a1fb162 100644 --- a/src/commands/applications-setup/dwmtitus-setup.sh +++ b/src/commands/applications-setup/dwmtitus-setup.sh @@ -190,7 +190,108 @@ setupDisplayManager() { esac echo "Xorg installed successfully" echo "Setting up Display Manager" + currentdm="none" + for dm in gdm sddm lightdm; do + if systemctl is-active --quiet $dm.service; then + currentdm=$dm + break + fi + done + echo "Current display manager: $currentdm" + if [ "$currentdm" = "none" ]; then + DM="sddm" + echo "No display manager found, installing $DM" + case "$PACKAGER" in + pacman) + $ESCALATION_TOOL "$PACKAGER" -S --needed --noconfirm $DM + ;; + apt) + $ESCALATION_TOOL "$PACKAGER" install -y $DM + ;; + dnf) + $ESCALATION_TOOL "$PACKAGER" install -y $DM + ;; + *) + echo "Unsupported package manager: $PACKAGER" + exit 1 + ;; + esac + echo "$DM installed successfully" + systemctl enable $DM + + # Clear the screen + clear + + # Prompt user for auto-login + echo "Do you want to enable auto-login?" + echo "Use arrow keys or j/k to navigate, Enter to select" + options=("Yes" "No") + selected=0 + + # Function to print menu + print_menu() { + for i in "${!options[@]}"; do + if [ $i -eq $selected ]; then + echo "> ${options[$i]}" + else + echo " ${options[$i]}" + fi + done + } + + # Handle user input + while true; do + print_menu + read -rsn1 key + case "$key" in + $'\x1B') # ESC sequence for arrow keys + read -rsn2 key + case "$key" in + '[A' | 'k') ((selected > 0)) && ((selected--));; # Up arrow or k + '[B' | 'j') ((selected < ${#options[@]}-1)) && ((selected++));; # Down arrow or j + esac + ;; + '') break;; # Enter key + esac + clear + done + + if [ "${options[$selected]}" = "Yes" ]; then + echo "Configuring SDDM for autologin" + SDDM_CONF="/etc/sddm.conf" + if [ ! -f "$SDDM_CONF" ]; then + echo "[Autologin]" | sudo tee -a "$SDDM_CONF" + echo "User=$USER" | sudo tee -a "$SDDM_CONF" + echo "Session=dwm" | sudo tee -a "$SDDM_CONF" + else + sudo sed -i '/^\[Autologin\]/d' "$SDDM_CONF" + sudo sed -i '/^User=/d' "$SDDM_CONF" + sudo sed -i '/^Session=/d' "$SDDM_CONF" + echo "[Autologin]" | sudo tee -a "$SDDM_CONF" + echo "User=$USER" | sudo tee -a "$SDDM_CONF" + echo "Session=dwm" | sudo tee -a "$SDDM_CONF" + fi + echo "Checking if autologin group exists" + if ! getent group autologin > /dev/null; then + echo "Creating autologin group" + sudo groupadd autologin + else + echo "Autologin group already exists" + fi + echo "Adding user with UID 1000 to autologin group" + USER_UID_1000=$(getent passwd 1000 | cut -d: -f1) + if [ -n "$USER_UID_1000" ]; then + sudo usermod -aG autologin "$USER_UID_1000" + echo "User $USER_UID_1000 added to autologin group" + else + echo "No user with UID 1000 found - Auto login not possible" + fi + else + echo "Auto-login configuration skipped" + fi + fi + }