Here's a comprehensive script I use for quickly setting up Debian 12 virtual machines with the LXQT desktop environment and automatic login. I'll share the complete script first, then break down its functionality.
xxxxxxxxxx
set -euxo pipefail
export PERL_MM_USE_DEFAULT=1
DEBIAN_FRONTEND=noninteractive PERL_MM_USE_DEFAULT=1 sudo apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install perl
perl -MTerm::ANSIColor=':constants' -nlE '
next if m~^$|^\#~;
say q|> |, GREEN $_, RESET '';
system $_;
if ($? != 0)
{
warn q|> |, RED qq|Failure Detected: |, RESET qq|$!\n|;
}
END
{
say q|> |, GREEN q|All Done! Bye bye :)|, RESET "";
}
' <<EOF
# Update package lists and upgrade system
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
# Install LXQt desktop and core dependencies
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install task-lxqt-desktop sddm software-properties-common apt-transport-https ca-certificates curl gnupg2
# Install additional LXQt components
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install lxqt-themes lxqt-config pavucontrol-qt firefox-esr mousepad
# Configure SDDM
sudo mkdir -p /etc/sddm.conf.d
sudo bash -c 'echo "[Autologin]" > /etc/sddm.conf.d/autologin.conf'
sudo bash -c 'echo "User=\$(whoami)" >> /etc/sddm.conf.d/autologin.conf'
sudo bash -c 'echo "Session=lxqt.desktop" >> /etc/sddm.conf.d/autologin.conf'
sudo chmod 600 /etc/sddm.conf.d/autologin.conf
# Switch to SDDM display manager non-interactively
sudo bash -c 'echo "/usr/bin/sddm" > /etc/X11/default-display-manager && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure sddm'
# Clean up
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" autoremove
sudo DEBIAN_FRONTEND=noninteractive apt-get clean
EOF
set -euxo pipefail
These lines establish bash execution and set important safety flags:
-e: Exits if any command fails
-u: Errors on unset variables
-x: Shows commands as they execute
-o pipefail: Prevents masking pipeline errors
export PERL_MM_USE_DEFAULT=1
DEBIAN_FRONTEND=noninteractive PERL_MM_USE_DEFAULT=1 sudo apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install perl
Ensures Perl is installed with default options for the script execution.
-::=':constants' - '
next if m~^$|^\#~;
say q|> |, GREEN $_, RESET '';
system $_;
if ($? != 0)
{
warn q|> |, RED qq|Failure Detected: |, RESET qq|$!\n|;
}
'
This Perl wrapper provides:
Color-coded output (green for commands, red for errors)
Command execution monitoring
Error detection and reporting
Skips empty lines and comments
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
Updates the package list and upgrades all installed packages without prompts.
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install task-lxqt-desktop sddm software-properties-common apt-transport-https ca-certificates curl gnupg2
Installs:
LXQT desktop environment
SDDM display manager
Essential system utilities
Network security certificates
Package management tools
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install lxqt-themes lxqt-config pavucontrol-qt firefox-esr mousepad
Installs supplementary packages:
Desktop themes
Configuration tools
Audio controls
Web browser
Text editor
xxxxxxxxxx
sudo mkdir -p /etc/sddm.conf.d
sudo bash -c 'echo "[Autologin]" > /etc/sddm.conf.d/autologin.conf'
sudo bash -c 'echo "User=$(whoami)" >> /etc/sddm.conf.d/autologin.conf'
sudo bash -c 'echo "Session=lxqt.desktop" >> /etc/sddm.conf.d/autologin.conf'
sudo chmod 600 /etc/sddm.conf.d/autologin.conf
Configures automatic login with SDDM display manager.
x
sudo bash -c 'echo "/usr/bin/sddm" > /etc/X11/default-display-manager && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure sddm'
Sets SDDM as the default display manager.
xxxxxxxxxx
sudo DEBIAN_FRONTEND=noninteractive apt-get -y autoremove
sudo DEBIAN_FRONTEND=noninteractive apt-get clean
Removes unnecessary packages and cleans package cache.
Save the script to a file (e.g., debian-lxqt-setup.sh
)
Make it executable:
xxxxxxxxxx
chmod +x debian-lxqt-setup.sh
Run with sudo:
xxxxxxxxxx
sudo ./debian-lxqt-setup.sh
The script will automatically install and configure everything, providing visual feedback during the process. After completion, you'll have a fully functional LXQT desktop environment with automatic login capability - perfect for VM environments!