Simple Desktop Display Manager (SDDM) is a display manager (a graphical login program and session manager) for the X11 and Wayland windowing systems. SDDM was written from scratch in C++11 and supports theming via QML.

Installation

yay -S sddm

Loading the display manager

To enable graphical login, enable the appropriate systemd service. For example, for SDDM, enable sddm.service

systemctl enable sddm.service

Failed to enable unit: File /etc/systemd/system/display-manager.service already exists and is a symlink to /usr/lib/systemd/system/lightdm.service.

You may need to use —force to override old symlinks.

[yanboyang713@boyang-mini-pc ~]$ systemctl --force enable sddm.service
Removed "/etc/systemd/system/display-manager.service".
Created symlink /etc/systemd/system/display-manager.service → /usr/lib/systemd/system/sddm.service.
[yanboyang713@boyang-mini-pc ~]$ file /etc/systemd/system/display-manager.service
/etc/systemd/system/display-manager.service: symbolic link to /usr/lib/systemd/system/sddm.service

Configuration

The default configuration file for SDDM can be found at /usr/lib/sddm/sddm.conf.d/default.conf.

For any changes, create configuration file(s) in etc/sddm.conf.d check details

Running under Wayland

SDDM can run rootless under Wayland, since sddm 0.20.0.

Create a new config file in the etc/sddm.conf.d directory, name it something like /etc/sddm.conf.d/10-wayland.conf.

Add the following to the new file: /etc/sddm.conf.d/10-wayland.conf

[General]
DisplayServer=wayland

SDDM theme

Anything under these folders is an installed SDDM theme

/usr/share/sddm/themes

See which one you’re using now

grep -R "^Current=" /etc/sddm.conf /etc/sddm.conf.d/*.conf 2>/dev/null

Theme Install

sddm-astronaut-theme

  • Install deps (Qt6 + SDDM + multimedia)

    sudo pacman -S --needed sddm qt6-svg qt6-virtualkeyboard qt6-multimedia-ffmpeg
  • Install the theme into SDDM’s theme dir

    sudo git clone -b master --depth 1 \
      https://github.com/keyitdev/sddm-astronaut-theme.git \
      /usr/share/sddm/themes/sddm-astronaut-theme
  • Install the bundled fonts (optional but looks better)

    sudo cp -r /usr/share/sddm/themes/sddm-astronaut-theme/Fonts/* /usr/share/fonts/
  • Select the theme

    sudo mkdir -p /etc/sddm.conf.d
    printf "[Theme]\nCurrent=sddm-astronaut-theme\n" | sudo tee /etc/sddm.conf.d/10-theme.conf
  • (Optional) enable on-screen keyboard on the greeter

    printf "[General]\nInputMethod=qtvirtualkeyboard\n" | \
      sudo tee /etc/sddm.conf.d/virtualkbd.conf
  • Pick a sub-theme (wallpaper/style)

    Edit the line below in metadata.desktop to any config from the Themes/ folder, e.g. black_hole.conf

    sudo sed -i 's|^ConfigFile=.*|ConfigFile=Themes/black_hole.conf|' \
      /usr/share/sddm/themes/sddm-astronaut-theme/metadata.desktop
  • Preview, then apply

    # Preview in a window (no logout)
    sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sddm-astronaut-theme/
     
    # If it looks good (this logs you out):
    sudo systemctl restart sddm

Customizing a theme

To override settings in the theme.conf configuration file, create a custom theme.conf.user file in the same directory. For example, to change the theme’s background:

/usr/share/sddm/themes/name/theme.conf.user

[General]
background=/path/to/background.png

Testing (previewing) a theme

You can preview an SDDM theme if needed. This is especially helpful if you are not sure how the theme would look if selected or just edited a theme and want to see how it would look without logging out. You can run something like this:

$ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/breeze

This should open a new window for every monitor you have connected and show a preview of the theme.

Note: This is just a preview. In this mode, some actions like shutdown, suspend or login will have no effect.

Reference List

  1. https://wiki.archlinux.org/title/SDDM
  2. https://wiki.archlinux.org/title/Display_manager#Loading_the_display_manager