SDDM

From Gentoo Wiki
Jump to:navigation Jump to:search

Simple Desktop Display Manager (SDDM) is a modern display manager that supports both the X server and the Wayland protocol.

Warning
By default, clicking the "power off" icon in SDDM will shut down the machine immediately, without asking for confirmation.

Installation

USE flags

Cannot load package information. Is the atom x11-misc/sddm correct?

Emerge

Install x11-misc/sddm:

root #emerge --ask x11-misc/sddm

If there are performance issues, it might help to add the sddm user to the video group:

root #usermod -a -G video sddm

Configuration

Files

SDDM has two configuration locations: /usr/share/sddm/sddm.conf.d/ and /etc/sddm.conf.d/ which is used to override specific options. KDE Plasma writes user changed options to /etc/sddm.conf.d/. Both locations supports files with the same format. See man 5 sddm.conf man page for details on available options.

override.conf and Xsetup files

Note
In most cases, these files are not needed, so this section can be skipped.

Some configuration cases require some commands to be executed before starting the X server and showing the greeter screen. For these cases, Xsetup file can be used whose location must be overridden by the local /etc/sddm.conf.d/override.conf.

Create local configuration directory if it does not exists:

root #mkdir -p /etc/sddm.conf.d

After that create and edit file /etc/sddm.conf.d/override.conf with following lines in it:

FILE /etc/sddm.conf.d/override.conf
[X11]
DisplayCommand=/etc/sddm/scripts/Xsetup

Next create the directory /etc/sddm/scripts and the file /etc/sddm/scripts/Xsetup:

root #mkdir -p /etc/sddm/scripts
root #touch /etc/sddm/scripts/Xsetup
root #chmod a+x /etc/sddm/scripts/Xsetup
FILE /etc/sddm/scripts/Xsetup
#!/bin/sh
# Xsetup - run as root before the login dialog appears
 
# Here can be various command that can be executed on SDDM start.

override.conf and X11 rootless mode

By default SDDM runs in X11 as the root user. This may be considered a security risk.

Since x11-misc/sddm version 0.20 it is possible to run SDDM in X11 rootless mode instead.

To accomplish this the Display server configuration must be overridden using the local /etc/sddm.conf.d/override.conf.

Create local configuration directory if it does not exists:

root #mkdir -p /etc/sddm.conf.d

After that create and edit file /etc/sddm.conf.d/override.conf with following lines in it:

FILE /etc/sddm.conf.d/override.conf
[General]
DisplayServer=x11-user

override.conf and wayland mode

Warning
Running SDDM in Wayland mode is highly experimental

Since x11-misc/sddm version 0.20 it is possible to run SDDM in Wayland mode.

Weston

SDDM supports several Wayland compositors. This first example uses SDDMs default compositor, Weston, for systems where kde-plasma/plasma-desktop is not used. First install dev-libs/weston with the fullscreen USE flag enabled.

Then the Display server configuration should be overridden in the local /etc/sddm.conf.d/override.conf.

Create local configuration directory if it does not exists:

root #mkdir -p /etc/sddm.conf.d

After that create and edit file /etc/sddm.conf.d/override.conf with following lines in it:

FILE /etc/sddm.conf.d/override.conf
[General]
DisplayServer=wayland

# This part is optional
[Wayland]
CompositorCommand=weston --shell=fullscreen-shell.so
Kwin

Users of systems using kde-plasma/plasma-desktop may want to use Kwin as the compositor instead:

FILE /etc/sddm.conf.d/override.conf
[General]
DisplayServer=wayland
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell

[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1

Keymap

To select the correct keymap on the login screen, add command setxkbmap to the /etc/sddm/scripts/Xsetup file:

FILE /etc/sddm/scripts/Xsetup
#!/bin/sh
# Xsetup - run as root before the login dialog appears
 
# ...
 
# First keymap will be gb
setxkbmap gb,us

The first country code is the default.

Multimonitor configuration

The greeter location can be set by xrandr configuration in SDDM's /etc/sddm/scripts/Xsetup script. First, install x11-apps/xrandr:

root #emerge --ask x11-apps/xrandr

Here xrandr reports that there are two connected monitors: primary (DP-4) and secondary (DP-2):

user $xrandr | grep -w connected
DP-2 connected 2160x3840+0+0 left (normal left inverted right x axis y axis) 597mm x 336mm
DP-4 connected primary 3840x2160+2160+0 (normal left inverted right x axis y axis) 697mm x 392mm

Add following lines to the /etc/sddm/scripts/Xsetup file:

FILE /etc/sddm/scripts/Xsetup
#!/bin/sh
# Xsetup - run as root before the login dialog appears
 
# ...
 
# First, set DP-4 as primary
xrandr --output DP-4 --auto --primary
# Second, DP-2 will be placed on left of DP-4 and rotated by 270 degree clockwise.
xrandr --output DP-2 --left-of DP-4 --rotate left --noprimary

After reboot SDDM will show the greeter in DP-4 monitor.

Service

OpenRC

If gui-libs/display-manager-init is not present, emerge it with:

root #emerge --ask gui-libs/display-manager-init

The configuration file should be modified to use SDDM:

FILE /etc/conf.d/display-managerSet SDDM as the display manager
CHECKVT=7
DISPLAYMANAGER="sddm"

To start the chosen display manager on boot, add the display-manager to the system's default runlevel:

root #rc-update add display-manager default

To start the display-manager immediately, run:

root #rc-service display-manager start

systemd

To start SDDM on boot:

root #systemctl enable sddm.service

To start SDDM now:

root #systemctl start sddm.service

Plasma

Graphical configuration is integrated in Plasma 5 system settings by installing kde-plasma/sddm-kcm:

root #emerge --ask kde-plasma/sddm-kcm

Troubleshooting

Long load time before SDDM shows the greeter

A low entropy pool can cause long SDDM load time - see upstream bug report. If using systemd, the graphical target is reached and then everything appears to hang. Moving the mouse or using the keyboard will make the SDDM greeter launch (faster).

Solve the problem by using, for example, the sys-apps/haveged package to increase the entropy pool or by enabling RANDOM_TRUST_CPU kernel config option with a recent-enough CPU.

Permission denied errors in Xorg.log

The X server will not start and permission denied errors (such as the following) are present in the Xorg.log log file:

FILE /var/log/Xorg.log
/var/log/Xorg.0.log:[ 2058.998] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
/var/log/Xorg.0.log:[ 2061.229] (EE) intel(0): [drm] failed to set drm interface version: Permission denied [13].

It is likely the sddm user has not been added to the video group. Running the following command should fix the problem:

root #usermod -a -G video sddm

Missing system buttons

SDDM only displays buttons if the functionality evaluates to being available. This can depend on several factors. For OpenRC systems using elogind, this can be caused by the service not running when the display manager is initialized. To make sure it is running, just add elogind to the boot run level.

root #rc-update add elogind boot

Missing users

If the login screen is missing some user(s) to choose from, this might be caused by /etc/sddm.conf - standard MinimumUid is 1000 and some existing users may have lower uids.

FILE /etc/sddm.conf
[Users]
MaximumUid=60000
MinimumUid=1000

SDDM service starts but yields a black screen

On NVIDIA cards, SDDM appears to require DRM enabled and operational according to this closed bug report.

Ensure Direct Rendering Manager is enabled in the kernel. If it isn't, enable it, rebuild the kernel, and re-emerge x11-drivers/nvidia-drivers.

KERNEL Enable Direct Rendering Manager
Device Drivers --->
    Graphics support --->
        <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
            [*] Enable legacy fbdev support for your modesetting driver

Ensure the nvidia-drm module is configured to load at startup and modeset option enabled:

FILE /etc/modules-load.d/nvidia-drm.conf
nvidia-drm
options nvidia-drm modeset=1

Alternatively, modeset option can be enabled on the kernel command line with nvidia-drm.modeset=1. This can be set in the bootloader or embedded in the kernel configuration.

See also