Introduction to sddm

The sddm package contains a lightweight display manager based upon Qt and QML.

This package is known to build and work properly using an LFS 12.1 platform.

Package Information

SDDM Dependencies


CMake-3.28.3, extra-cmake-modules-5.115.0, and (Qt-5.15.12 or qt-alternate-5.15.12)


Installation of SDDM

First, create a dedicated user and group to take control of the sddm daemon after it is started. Issue the following commands as the root user:

groupadd -g 64 sddm &&
useradd  -c "sddm Daemon" \
         -d /var/lib/sddm \
         -u 64 -g sddm    \
         -s /bin/false sddm

Install sddm by running the following commands:

mkdir build &&
cd    build &&

      -DCMAKE_BUILD_TYPE=Release  \
      -DNO_SYSTEMD=ON             \
      -DRUNTIME_DIR=/run/sddm     \
      -DUSE_ELOGIND=ON            \
      -DBUILD_MAN_PAGES=ON        \
      -DDATA_INSTALL_DIR=/usr/share/sddm \
      -DDBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf \
      .. &&

This package does not come with a test suite.

Now, as the root user:

make install &&
install -v -dm755 -o sddm -g sddm /var/lib/sddm
/usr/bin/sddm --example-config > /etc/sddm.conf

Command Explanations

-DCMAKE_BUILD_TYPE=Release: This switch is used to apply additional compiler optimizations.

-DENABLE_JOURNALD=OFF and -DNO_SYSTEMD=ON: These switchs are used because this version of BLFS does not support systemd.

-DDBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf: This switch prevents the file /etc/dbus-1/system.d/org.freedesktop.DisplayManager.conf from being overwritten, as it may be used by other DM's.

-DBUILD_MAN_PAGES=ON: This switch is used to build and install man pages.

Configuring SDDM

Config Files


Normally, you want to edit this file. For example, if Xorg is installed in /opt, use your preferred editor as the root user to replace the default XauthPath value by /opt/xorg/bin/xauth. Or, as the root user, issue:

sed -i.orig '/ServerPath/ s|usr|opt/xorg|' /etc/sddm.conf

This command will do the substitution and create a copy of the original file with name /etc/sddm.conf.orig.

From now on, we will describe how to modify configurations using sed. Of course, you may instead use your preferred editor as the root user.

For security reasons, you normally want the default ServerArguments=-nolisten tcp, unless a remote machine needs access to the local X server. In that case, as the root user, issue:

sed -i 's/-nolisten tcp//' /etc/sddm.conf

Desktop (Notebook) users, normally want the Num Lock key on (off). For that, as root, issue:

sed -i '/Numlock/s/none/on/' /etc/sddm.conf

for Desktop users. For Notebook users, replace /on/ by /off/ in the command above.

By default, a virtual keyboard is presented for the user. If this is not desired, run as root:

sed -i 's/qtvirtualkeyboard//' /etc/sddm.conf

Boot Script

Install the /etc/rc.d/init.d/xdm init script from the blfs-bootscripts-20240209 package, as the root user:

make install-sddm

Linux PAM Configuration



The install procedure above installed a set of PAM configuration files. These procedures overwrite them and use versions compatible with a BLFS environment.

If you have built sddm with Linux PAM support, create the necessary configuration files by running the following commands as the root user:

cat > /etc/pam.d/sddm << "EOF"
# Begin /etc/pam.d/sddm

auth     requisite
auth     required

auth     required uid >= 1000 quiet
auth     include        system-auth

account  include        system-account
password include        system-password

session  required
session  include        system-session

# End /etc/pam.d/sddm

cat > /etc/pam.d/sddm-autologin << "EOF"
# Begin /etc/pam.d/sddm-autologin

auth     requisite
auth     required

auth     required uid >= 1000 quiet
auth     required

account  include        system-account

password required

session  required
session  include        system-session

# End /etc/pam.d/sddm-autologin

cat > /etc/pam.d/sddm-greeter << "EOF"
# Begin /etc/pam.d/sddm-greeter

auth     required
auth     required

account  required
password required
session  required
-session optional

# End /etc/pam.d/sddm-greeter

Starting sddm

If the sddm bootscript has been installed, start sddm by running, as the root user:

/etc/rc.d/init.d/xdm start

By convention, X should be executed at runlevel 5, consequently, the same is true for sddm. However, the default runlevel is 3. Changing to runlevel 5, from a console terminal, as root user, starts the sddm bootscript, bringing up the greeter screen:

init 5

In order to permanently set the default to 5, starting the sddm greeter screen automatically, modify /etc/inittab as the root user:

cp -v /etc/inittab{,-orig} &&
sed -i '/initdefault/ s/3/5/' /etc/inittab

Available Sessions

The greeter offers a list of available sessions, depending on the Window Managers and Desktop Environments installed. The list includes sessions which have a corresponding .desktop file installed under /usr/share/xsessions or /usr/share/wayland-sessions. Most of the Window Managers and Desktop Environments automatically provide those files, but if necessary, you may include a custom one.


Three themes are installed at /usr/share/sddm/themes: elarun, maldives, and maya. There is also a default theme, which is not present in that directory. You can install other themes in that directory. In order to change the theme, you need to edit /etc/sddm.conf, to change the default (empty) theme, replacing Current= with Current=<new theme>, e.g. Current=maldives.

In order to see the theme without leaving the session, issue:

sddm-greeter --test-mode --theme <theme path>


Installed Programs: sddm and sddm-greeter
Installed Libraries: None
Installed Directories: $QT5DIR/qml/SddmComponents, /usr/share/sddm, and /var/lib/sddm

Short Descriptions


is a display and login manager based on Qt libraries.


is an auxiliary process that displays the greeter, a graphical user interface that performs user authentication and initiates the selected window manager or display environment.