LightDM

Related articles
Display manager
GDM
LXDM
LightDM
is a cross-desktop
display manager
. Its key features are:
Cross-desktop - supports different desktop technologies.
Supports different display technologies (X, Mir, Wayland ...).
Lightweight - low memory usage and high performance.
Supports guest sessions.
Supports remote login (incoming -
XDMCP
,
VNC
, outgoing - XDMCP,
PAM
).
Comprehensive test suite.
Low code complexity.
More details about LightDM's design can be found
here
.
Installation
Install
the
lightdm
package.
Follow
Display manager#Loading the display manager
to start LightDM at boot.
Greeter
You will probably want to
install
a greeter. A greeter is a GUI that prompts the user for credentials, lets the user select a session, and so on. It is possible to use LightDM without a greeter, but only if an automatic login is configured; otherwise you will need to install
xorg-server
and one of the greeter packages below.
GTK-based greeters:
LightDM GTK Greeter
— A GTK greeter for LightDM. This is the
default
greeter LightDM attempts to use, unless configured otherwise.
https://github.com/Xubuntu/lightdm-gtk-greeter
||
lightdm-gtk-greeter
lightdm-pantheon-greeter
— A greeter from the elementary OS project.
https://github.com/elementary/greeter
||
lightdm-pantheon-greeter
slick-greeter
— A GTK based greeter focused more on appearance than
lightdm-gtk-greeter
, originally forked from the Unity greeter, and default in Linux Mint.
https://github.com/linuxmint/slick-greeter
||
lightdm-slick-greeter
Web Greeter for LightDM
— A greeter that uses Webkit2 for theming.
The project's development has ceased since 2019-05-22.
https://github.com/antergos/web-greeter
||
lightdm-webkit2-greeter
Mini-Greeter
—  A minimal, configurable, single-user GTK3 greeter.
https://github.com/prikhi/lightdm-mini-greeter
||
lightdm-mini-greeter
AUR
Nody Greeter
— LightDM greeter that allows to create wonderful themes with web technologies. Made in Node.js with Electron.js and NodeGTK.
https://github.com/JezerM/nody-greeter
||
nody-greeter
AUR
Qt-based greeters:
Web Greeter
— A modern, visually appealing greeter that uses PyQtWebEngine for theming. It supersedes
lightdm-webkit2-greeter
https://github.com/JezerM/web-greeter
||
web-greeter
AUR
LightDM KDE Greeter
— A LightDM greeter by KDE.
https://invent.kde.org/plasma/lightdm-kde-greeter
||
lightdm-kde-greeter
AUR
Other greeters:
lightdm-deepin-greeter
— A greeter from the
Deepin
project.
https://github.com/linuxdeepin/dde-session-shell
||
deepin-session-shell
LightDM Elephant Greeter
— A small and simple greeter that runs in the
cage
Wayland compositor per default.
https://github.com/max-moser/lightdm-elephant-greeter
||
lightdm-elephant-greeter-git
AUR
Themes for
lightdm-webkit2-greeter
:
Litarvan's LightDM WebKit2 theme
— A modern and full-featured theme.
https://github.com/Litarvan/lightdm-webkit-theme-litarvan
||
lightdm-webkit-theme-litarvan
Aether
— A sleek, straightforward Arch Linux themed login screen.
https://github.com/NoiSek/Aether
||
lightdm-webkit-theme-aether
AUR
Themes for
web-greeter
AUR
and
nody-greeter
AUR
:
Shikai
— Aesthetic, customizable theme.
https://github.com/TheWisker/Shikai
||
shikai-theme
AUR
You can set the default greeter by changing the
[Seat:*]
section of the LightDM configuration file, like so:
/etc/lightdm/lightdm.conf
[Seat:*]
...
greeter-session=lightdm-
yourgreeter
-greeter
...
Note
lightdm-pantheon-greeter
's corresponding configuration file is
io.elementary.greeter.conf
, not
lightdm-pantheon-greeter.conf
One way to check which greeters are available is to list the files in the
/usr/share/xgreeters
directory; each
.desktop
file represents an available greeter. In this example, the
lightdm-gtk-greeter
and
lightdm-webkit2-greeter
greeters are available:
$ ls -1 /usr/share/xgreeters/
lightdm-gtk-greeter.desktop
lightdm-webkit2-greeter.desktop
Enabling LightDM
Make sure to
enable
lightdm.service
so LightDM will be started at boot; see also
Display manager#Loading the display manager
.
Command line tool
LightDM offers a command line tool,
dm-tool
, which can be used to lock the current seat, switch sessions, etc, which is useful with 'minimalist' window managers and for testing. To see a list of available commands, execute:
$ dm-tool --help
User switching
Warning
dm-tool
(with
dm-tool lock
or
dm-tool switch-to-greeter
) can easily be bypassed and will not lock your session without
light-locker
or an other
loginctl compatible screen locker
. See
XScreenSaver#User switching from the lock screen
.
LightDM's
dm-tool
command can be used to allow multiple users to be logged in on separate ttys. The following will send a signal requesting that the current session be locked and then will initiate a switch to LightDM's greeter, allowing a new user to log in to the system.
$ dm-tool switch-to-greeter
Testing
First,
install
xorg-server-xephyr
.
Then, run LightDM as an X application:
$ lightdm --test-mode --debug
Optional configuration and tweaks
LightDM can be configured by modifying its configuration file,
/etc/lightdm/lightdm.conf
.
Some greeters have their own configuration files. For example:
lightdm-gtk-greeter
:
/etc/lightdm/lightdm-gtk-greeter.conf
(or you can use the
lightdm-gtk-greeter-settings
gui).
lightdm-webkit2-greeter
:
/etc/lightdm/lightdm-webkit2-greeter.conf
X session wrapper
This article or section is a candidate for merging with
Xprofile
.
Notes:
Duplicated information (Discuss in
Talk:LightDM
)
If you are migrating from
xinit
, you will notice that the display is not launched by your shell. This is because, as opposed to your shell starting the display (and the display inheriting the environment of your shell), LightDM starts your display and does not source your shell. LightDM launches the display by running a wrapper script and that finally exec's your graphic environment. By default,
/etc/lightdm/Xsession
is run.
Environment variables
The script checks and sources
/etc/profile
,
~/.profile
,
/etc/xprofile
and
~/.xprofile
, in that order. If you are using a shell that does not source any of these files, you can create an
~/.xprofile
to do so. (In this example, the login shell is
zsh
)
~/.xprofile
#!/bin/sh
[ -f ~/.config/zsh/.zshenv ] && . ~/.config/zsh/.zshenv
If you have shell variables that are important for your display (such as Gtk or QT themes, GNUPG location, configuration overrides, etc.) this will let your graphic environment have access to your environment without having to be launched by your login shell.
Keymap
The script runs
Xkbmap
with arguments provided in files
/etc/X11/Xkbmap
,
~/.Xkbmap
. If those files are not found, it runs
xmodmap
with
/etc/X11/Xmodmap
,
~/.Xmodmap
. If using xkbmap, the files are parsed using cat. The following example works
~/.Xmodmap
-model pc105 -layout us,us,tr -variant ,dvorak,f -option grp:caps_toggle
Otherwise, the session inherits the system default mapping of X11. This mapping can be defined in the xorg configuration files, either manually or with
localectl set-x11-keymap
. See
Xorg/Keyboard configuration#Setting keyboard layout
.
Multiple keyboard layouts in lightdm-gtk-greeter
To enable users switch between pre-defined keyboard layouts on the log-in screen enable the drop-down menu and configure the layouts. Either use the
lightdm-gtk-greeter-settings
gui or edit the configuration file directly:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
indicators = ~host;~spacer;~clock;~spacer;~layout;~language;~session;~a11y;~power
Use
localectl
to set multiple layouts, e.g. de and its “variant” neo with the latter as primary:
# localectl --no-convert set-x11-keymap de,de pc105 neo,
Note the trailing comma which implies a blank variant for the second de.
Changing background images/colors
You can set the background to a hex color or an image. Some greeters offer more robust background options like background selection from the login screen, random backgrounds, etc.
GTK greeter
You can use the
lightdm-gtk-greeter-settings
gui.
Users wishing to customize the wallpaper on the greeter screen need to edit
/etc/lightdm/lightdm-gtk-greeter.conf
and define the
background
variable under the
[greeter]
section. For example:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg
Note
It is recommended to place the PNG or JPG file in
/usr/share/pixmaps
since the LightDM user needs read access to the wallpaper file.
GTK3 themes can be specified with the
theme-name
variable in the
[greeter]
section. The icon and cursor theme can be set in the same way, as shown in the following example:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
theme-name = Tela
icon-theme-name = Tela
cursor-theme-name = Tela
cursor-theme-size = 32
font-name = Cantarell 20
HiDPI or 4K configuration
Using lightdm-gtk-greeter out of the box in a HiDPI or 4K monitor, will render very small text and dialog boxes, it is possible to force a DPI setting like this:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
xft-dpi = 192
In this case "192" means twice the 96 DPI setting of the screen, which is equivalent to the
2X Scale
setting in other graphic environments. The value can be obtained with
xdpyinfo | grep dots
in Xorg, for example.
Webkit2 greeter
The
lightdm-webkit2-greeter
allows you to choose a background image directly on the login screen. It also offers an option to display a random image each time it starts if you use the
Material theme
. By default, images are sourced from
/usr/share/backgrounds
. You can change the background images directory by editing
lightdm-webkit2-greeter.conf
. For example:
/etc/lightdm/lightdm-webkit2-greeter.conf
[branding]
background_images = /usr/share/backgrounds
Note
The background images directory must be accessible to the LightDM user so it should not be located anywhere under
/home
.
Slick Greeter
Use the
lightdm-settings
AUR
GUI
Changing your avatar
First, make sure the
accountsservice
package is installed, then set it up as follows, replacing
username
with the desired user's login name.
Create the file
/var/lib/AccountsService/icons/
username
.png
using a 96x96 PNG image file. Different image file formats are possible too, e.g., JPEG.
Alternatively, create the image file as
/home/
username
/.face
and skip the next step if the defaults already point to the user home directory path
Edit or create the account settings file
/var/lib/AccountsService/users/
username
, and add the lines
[User]
Icon=/var/lib/AccountsService/icons/
username
.png
The filename here should point to the icon created in the first step, so adjust the filename extension if necessary.
Note
Make sure that both created files have 644 permissions, use
chmod
to correct them.
Sources of Arch-centric 64x64 icons
The
archlinux-artwork
AUR
package contains some nice examples that install to
/usr/share/archlinux/icons
and that can be copied to
/usr/share/icons/hicolor/64x64/devices
as follows:
# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;
After copying, the
archlinux-artwork
AUR
package can be removed.
Enabling autologin
Edit the LightDM configuration file and ensure these lines are uncommented and correctly configured:
/etc/lightdm/lightdm.conf
[Seat:*]
autologin-user=
username
You must be part of the
autologin
group to be able to login automatically without entering your password:
# groupadd -r autologin
# gpasswd -a
username
autologin
LightDM logs in using the session specified in the
~/.dmrc
of the user getting logged in automatically. To override this file, specify
autologin-session
in
lightdm.conf
:
/etc/lightdm/lightdm.conf
[Seat:*]
autologin-user=
username
autologin-session=
session
The list of valid session names can be found by listing
/usr/share/xsessions/*.desktop
for X's sessions and
/usr/share/wayland-sessions/*.desktop
for Wayland's.
Note
GNOME users, and by extension any gnome-keyring user will have to set up a blank password to their keyring for it to be unlocked automatically.
Enabling interactive passwordless login
LightDM goes through
PAM
so you must configure the lightdm configuration of PAM:
/etc/pam.d/lightdm
#%PAM-1.0
auth        sufficient  pam_succeed_if.so user ingroup nopasswdlogin
auth        include     system-login
...
You must then also be part of the
nopasswdlogin
group and the
autologin
group to be able to login interactively without entering your password:
# groupadd -r nopasswdlogin
# groupadd -r autologin
# gpasswd -a
username
nopasswdlogin
# gpasswd -a
username
autologin
Note
GNOME users, and by extension any gnome-keyring user may have to follow the instructions at the end of the previous section on enabling autologin.
To create a new user account that logs in automatically and additionally able to login again without a password the user can be created with supplementary membership of both groups, e.g.:
# useradd -mG autologin,nopasswdlogin
username
Enabling guest sessions
Note
A guest user has passwordless access to your system after enabling this feature.
To enable guest sessions in LightDM (without changing your system configuration) you need at least two things:
a
guest-account-script
: defaults to
guest-account
and accepts two commands:
add
(to create a temporary guest system account and returns the user name of the created account)
remove
account name
(to delete the corresponding account)
an
autologin
group to which the created guest account must be added (cf.
/etc/pam.d/lightdm-autologin
)
There are two AUR packages that enable guest sessions in lightdm:
lightdm-guest
AUR
which provides the (largely unmodified) upstream guest-session script as well as
lightdm
itself.
lightdm-guest-account
AUR
which provides only a minimal version of the script.
Hiding system and services users
To prevent system users from showing-up in the login, install the optional dependency
accountsservice
, or add the user names to
/etc/lightdm/users.conf
under
hidden-users
. The first option has the advantage of not needing to update the list when more users are added or removed.
Migrating from SLiM
This article or section is a candidate for merging with
Display Manager
.
Notes:
Not LightDM specific (or even SLiM specific for that matter as
XDM
also uses
xinitrc
). Perhaps this merits a one-liner somewhere on the
Display Manager
page? (Discuss in
Talk:LightDM
)
Move the contents of
xinitrc
to
xprofile
, removing the call to start the
window manager
or
desktop environment
.
Login using ~/.xinitrc
See
Display manager#Run ~/.xinitrc as a session
.
NumLock on by default
Install the
numlockx
package and then edit
/etc/lightdm/lightdm.conf
:
/etc/lightdm/lightdm.conf
[Seat:*]
greeter-setup-script=/usr/bin/numlockx on
Default session
Lightdm, like other DMs, stores the last-selected xsession in
~/.dmrc
. See
Display manager#Session configuration
for more info.
Adjusting the login window's position
GTK greeter
Users need to edit
/etc/lightdm/lightdm-gtk-greeter.conf
and enter a value for the
position
variable. It accepts
x
and
y
values, either absolute (in pixels) or relative (in percent). Each value can also have an additional anchor location for the window,
start
,
center
and
end
separated from the value by a comma.
Example:
position=200,start 50%,center
VNC Server
Lightdm can also be used to connect to via VNC. Make sure to install
tigervnc
on the server side and optionally as your VNC client on the client PC.
Setup an authentication password on the server as root:
# vncpasswd /etc/vncpasswd
Edit the LightDM configuration file as shown below. Note that
listen-address
configures the VNC to only listen to connections from localhost. This is used to only allow connections via
SSH and port forwarding
. On the SSH client, make sure that you use
localhost:5900
for the tunnel destination; using
127.0.0.1:5900
or
::1:5900
is not reliable on dual stack network connections. If you want to allow insecure connections you can disable this setting.
/etc/lightdm/lightdm.conf
[VNCServer]
enabled=true
command=Xvnc -rfbauth /etc/vncpasswd
port=5900
listen-address=localhost
width=1024
height=768
depth=24
Now open an SSH tunnel and connect to localhost as described in
TigerVNC#On the client
.
Note
If you get a blank screen upon opening the VNC connection, try a different LightDM greeter.
Lock the screen using light-locker
light-locker
is a simple screen locker using LightDM to authenticate the user. Once installed and running, you can lock your session via:
$ light-locker-command -l
This requires
light-locker
to be started at the beginning of your session. By default, this is enabled through
XDG Autostart
. See
Autostarting
for more options.
Multiple-monitor setup
Sometimes LightDM does not set the monitor resolution correctly on a multiple-monitor setup. The following Xorg configuration works with two monitors: a large primary screen on the left side, and a secondary smaller screen to its right. The order can be reversed and tweaked.
/etc/X11/xorg.conf.d/52-resolution-fix.conf
Section "Monitor"
    Identifier "DP1"
    Option "PreferredMode" "3840x2160"
    Option "Primary" "1"
EndSection
Section "Monitor"
    Identifier "eDP1"
    Option "PreferredMode" "1920x1080"
    Option "RightOf" "DP1"
EndSection
This makes the
display-setup-script
tweaks from
/etc/lightdm/lightdm.conf
redundant.
Troubleshooting
Autologin does not work
Ensure
autologin-user=
in
/etc/lightdm/lightdm.conf
contain the correct values. Trailing whitespace will cause errors.
If autologin fails with a blank screen or if the login screen immediately returns, you may need to set
logind-check-graphical=true
.
You can also install
lightdm-autologin-greeter-git
AUR
for this special purpose.
Viewing current configuration
To view effective configuration, run:
$ lightdm --show-config
This will show current settings, with the configuration files these settings were read from.
LightDM not starting and screen flashing
If you encounter consistent screen flashing and ultimately no LightDM on boot, ensure that you have defined the greeter correctly in LightDM's configuration file. And if you have correctly defined the GTK greeter, make sure the
xsessions-directory
(default:
/usr/share/xsessions
) exists and contains at least one .desktop file.
The same error can happen on lightdm startup if the last used session is not available anymore (eg. you last used gnome and then removed the gnome-session package): the easiest workaround is to temporarily restore the removed package. Another solution might be:
# dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetXSession string:xfce
This example sets the session "xfce" as default for the user 1000.
Wrong locale displayed
In case of your locale not being displayed correctly in Lightdm add your locale to
/etc/environment
:
LANG=pt_PT.utf8
Alternatively if you want LightDM and its greeters to be in a language other than your set system locale, you can use the
Environment=
option in a
drop-in file
.
Missing icons with GTK greeter
If you are using
lightdm-gtk-greeter
as a greeter and it shows placeholder images as icons, make sure valid icon themes and themes are installed and configured. Check the following file:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
theme-name=mate      # this should be the name of a directory under /usr/share/themes/
icon-theme-name=mate # this should be the name of a fully featured icons set directory under /usr/share/icons/
LightDM freezes on login attempt
You may find that after entering the correct username and password and attempting to log in, LightDM freezes and you are unable to continue to the desktop. To fix the issue, reinstall the
gdk-pixbuf2
package. See
this forum thread
.
LightDM displaying in wrong monitor
If you are using multiple monitors, LightDM may display in the wrong one (e.g. if your primary monitor is on the right). To force the LightDM login screen to display on a specific monitor, edit
/etc/lightdm/lightdm.conf
and change the
display-setup-script
parameter like this:
/etc/lightdm/lightdm.conf
display-setup-script=xrandr --output
HDMI-1
--primary
Replace
HDMI-1
with your real monitor ID, which you can find from
xrandr
command output.
Alternatively, if you are using the GTK greeter, you can edit
/etc/lightdm/lightdm-gtk-greeter.conf
and add the
active-monitor
parameter like this:
/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
active-monitor=0
Replace 0 with the desired display number.
LightDM does not appear or monitor only displays TTY output
It may happen that your system boots so fast that LightDM service is started before your graphics drivers are properly loaded. If this is your case, you will want to add the following to your
lightdm.conf
file:
/etc/lightdm/lightdm.conf
[LightDM]
logind-check-graphical=true
This setting will tell LightDM to wait until graphics devices are ready before spawning greeters/autostarting sessions on them.
With newer versions of LightDM, this is now the default setting.
As a consequence, on some hardware, your graphics drivers may not be properly detected and LightDM may never attempt to launch a greeter--even after the system has stabilized after boot.  If this occurs, setting this to false will disable the check and force LightDM to launch a greeter regardless.
LightDM is running with low FPS on Intel Graphics
See
Intel graphics#AccelMethod
.
PulseAudio not starting automatically
See
PulseAudio#Running
.
Long pause before LightDM shows up when home is encrypted
Some LightDM themes try to access the user avatar located in HOME. If your HOME is encrypted, LightDM cannot access it and hangs. To prevent this from happening, you can either:
Set your avatar as explained in
#Changing your avatar
for
lightdm-gtk-greeter
only:
hide-user-image = true
in
/etc/lightdm/lightdm-gtk-greeter.conf
Boot hangs on "[  OK  ] Reached target Graphical Interface."
There is a possibility that user and group lookups fail if you modified
/etc/nsswitch.conf
. That happens when
nsswitch.conf
group: includes
ldap
without setting
nss_initgroups_ignoreusers ALLLOCAL
in
/etc/nslcd.conf
Wayland session not working with duplicate GNOME entries in greeter
Some greeters (
lightdm-webkit2-greeter
for example) do not support two sessions with the same name
[1]
. To check for duplicate entries:
$ ls -1 /usr/share/wayland-sessions /usr/share/xsessions
Rename the duplicate entry in
/usr/share/xsessions
. For example:
# mv /usr/share/xsessions/gnome.desktop /usr/share/xsessions/gnome.desktop.disabled
Login always segfaults on first attempt
Set a hostname as described in
Network configuration#Set the hostname
. See also
FS#47694
.
Infinite login loop
If you get stuck in loop in which you type your correct username and password but the screen goes black and then you return to the login prompt after every attempt, running
rm ~/.Xauthority
(or the stuck user's problematic
.Xauthority
) may fix the issue.
Another reason for this may be that you tried to recreate your "lightdm.conf" from scratch and your version is missing this line:
session-wrapper=/etc/lightdm/Xsession
In that case, lightdm tries to use "lightdm-session" as the session-wrapper which does not exist on Arch Linux.
If your lightdm.conf file contains the intended session-wrapper but the lightdm logs indicate that the default session wrapper is being used instead, ensure that your lightdm.conf file is available during startup. For example, you may have created a symlink to a file in your home directory, but your home directory is not being mounted before the LightDM service started. In such cases LightDM will fall back to the default session wrapper.
Input devices do not work in Wayland sessions
When starting a Wayland session, input devices may sometimes not work unless disconnecting and reconnecting the physical connection. See
LightDM issue 63
.
A workaround is to delay the startup of Wayland compositors by adding
sleep 1
to
/etc/lightdm/Xsession
. See
archlinux/packaging/packages/lightdm!4
for a proposed workaround for the Arch package.
See also
Ubuntu Wiki article
Gentoo:LightDM
LightDM on GitHub