#!/usr/bin/env bash if [[ "$(whoami)" == "root" ]]; then msgbox "Please run configure-stormux as your user, not as root." return 1 fi sudoFlags=("${sudoFlags[@]}") yaySudoArgs=() if [[ ${#sudoFlags[@]} -gt 0 ]]; then yaySudoArgs=(--sudoflags "${sudoFlags[*]}") fi confirmRemoval="$(yesno "This will remove the I38 desktop, disable GUI startup, remove the XLibre desktop packages installed for I38, and delete generated I38 configuration from your account. Continue?")" if [[ "$confirmRemoval" != "Yes" ]]; then msgbox "I38 removal cancelled." return 0 fi sudo "${sudoFlags[@]}" systemctl disable --now nodm.service 2> /dev/null || true if [[ -f /var/lib/pacman/db.lck ]]; then removeLock="$(yesno "A pacman database lock was found at /var/lib/pacman/db.lck. If no package manager is running, it is usually safe to remove. Remove it and continue?")" if [[ "$removeLock" == "Yes" ]]; then sudo "${sudoFlags[@]}" rm -f /var/lib/pacman/db.lck else msgbox "Cannot safely remove packages while the pacman database is locked." return 1 fi fi packages=( i38 cthulhu nodm-dgw xlibre-input-libinput xlibre-video-dummy-with-vt xlibre-video-fbdev xlibre-xserver xorg-xinit ) installedPackages=() for packageName in "${packages[@]}"; do if pacman -Q "$packageName" > /dev/null 2>&1; then installedPackages+=("$packageName") fi done if [[ ${#installedPackages[@]} -gt 0 ]]; then yay "${yaySudoArgs[@]}" --noconfirm -Rns "${installedPackages[@]}" fi removeConfig="$(yesno "Delete generated I38 files from $HOME? This removes ~/.config/i3, ~/.xinitrc, ~/.xprofile, and ~/git/I38 if present.")" if [[ "$removeConfig" == "Yes" ]]; then rm -rf -- "$HOME/.config/i3" "$HOME/.xinitrc" "$HOME/.xprofile" "$HOME/git/I38" fi msgbox "I38 removal is complete. Reboot before relying on the new console-only startup state."