LightDM
Summary |
---|
LightDM is the display manager running in Ubuntu. It starts the X servers, user sessions and greeter (login screen). The default greeter in Ubuntu is Unity greeter. |
Related |
Xfce |
SDDM |
GDM |
LightDM is a cross-desktop display manager. Its key features are:
- Cross-desktop - supports different desktop technologies.
- Supports different display technologies (X, Mir, ...).
- Lightweight - low memory usage and high performance.
- Supports guest sessions.
- Supports remote login (incoming - XDMCP, VNC, outgoing - XDMCP, pluggable).
- Comprehensive test suite.
- Low code complexity.
More details about LightDM's design can be found here.
Contents
- 1 Installation
- 2 Enabling LightDM
- 3 Command line tool
- 4 Testing
- 5 Optional configuration and tweaks
- 5.1 Changing background images/colors
- 5.2 Changing your avatar
- 5.3 Enabling autologin
- 5.4 Enabling interactive passwordless login
- 5.5 Hiding system and services users
- 5.6 Migrating from SLiM
- 5.7 NumLock on by default
- 5.8 User switching under Xfce4
- 5.9 Default session
- 5.10 Customization of the login window
- 5.11 VNC Server
- 6 Troubleshooting
- 7 See also
- 8 Acknowledgement
1 Installation
sudo pacman -Su --noconfirm lightdm
If you are using OpenRC on your system:
pacman -S lightdm-openrc
1.1 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's possible to use LightDM without a greeter, but only if an automatic login is configured. The reference greeter is lightdm-gtk-greeter. LightDM attempts to use this greeter when started unless configured to do otherwise.
The official repositories contain the following alternative greeters.
- lightdm-kde-greeter: A greeter used with KDE4.
- lightdm-gtk-greeter: GTK+ greeter
- lightdm-deepin-greeter (deepin-session-ui): A greeter from the Deepin project.
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
Which greeters are available? What values may be assigned to the greeter-session option? Each .desktop file in the /usr/share/xgreeters directory denotes an available greeter. In this example, the lightdm-gtk-greeter and lightdm-kde-greeter greeters are available:
$ ls -1 /usr/share/xgreeters/ lightdm-gtk-greeter.desktop lightdm-kde-greeter.desktop
2 Enabling LightDM
Make sure to enable lightdm.service so LightDM will be started at boot, see also Display manager#Loading the display manager. If you are using OpenRC for your boot, make sure that lightdm is on default runlevel.
3 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
4 Testing
First, install xorg-server-xephyr from the official repositories.
Then, run LightDM as an X application:
$ lightdm --test-mode --debug
5 Optional configuration and tweaks
LightDM can be configured by modifying its config file, /etc/lightdm/lightdm.conf.
Some greeters have their own configuration files. For example:
lightdm-gtk-greeter: /etc/lightdm/lightdm-gtk-greeter.conf
lightdm-kde-greeter: /etc/lightdm/lightdm-kde-greeter.conf
5.1 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.
5.1.1 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
5.1.1.1 GTK3 Dark Theme
GTK3 introduced "dark" alternate color palettes for themes, but lightdm-gtk-greeter does not yet support specifing one natively. A workaround is to override the theme with an evironment variable in /usr/share/xgreeters/lightdm-gtk-greeter.desktop For example:
/usr/share/xgreeters/lightdm-gtk-greeter.desktop
[Desktop Entry] Name=LightDM GTK+ Greeter Comment=This runs the GTK+ greeter, it should only be run from LightDM Exec=env GTK_THEME=Adwaita:dark lightdm-gtk-greeter Type=Application X-Ubuntu-Gettext-Domain=lightdm
5.1.2 KDE greeter
Go to System Settings > Login Screen (LightDM) and change the background image for your theme.
Alternatively, you can edit the Background variable in lightdm-kde-greeter.conf :
/etc/lightdm/lightdm-kde-greeter.conf
[greeter] theme-name=classic [greeter-settings] Background=/usr/share/archlinux/wallpaper/archlinux-underground.jpg BackgroundKeepAspectRatio=true GreetMessage=Welcome to %hostname%
5.2 Changing your avatar
First, make sure the accountsservice package from the official repositories is installed, then set it up as follows, replacing username with the desired user's login name. The .png file extension should not be included in the filename.
- Edit or create the file /var/lib/AccountsService/users/username, and add the lines
[User] Icon=/var/lib/AccountsService/icons/username
- Create the file /var/lib/AccountsService/icons/username using a 96x96 PNG image file.
5.3 Enabling autologin
Edit the LightDM configuration file and ensure these lines are uncommented and correctly configured:
/etc/lightdm/lightdm.conf
[Seat:*] pam-service=lightdm pam-autologin-service=lightdm-autologin autologin-user=username autologin-user-timeout=0 session-wrapper=/etc/lightdm/Xsession
LightDM goes through PAM even when autologin is enabled. 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
5.4 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 to be able to login interactively without entering your password:
# groupadd -r nopasswdlogin # gpasswd -a username nopasswdlogin
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 -s /bin/bash username
5.5 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.
5.6 Migrating from SLiM
Move the contents of xinitrc to xprofile, removing the call to start the window manager or desktop environment.
5.7 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
5.8 User switching under Xfce4
If you use the Xfce desktop, the Switch User functionality of the Action Button found in your Application Launcher specifically looks for the gdmflexiserver executable in order to enable itself. If you provide it with an executable shell script /usr/bin/gdmflexiserver consisting of
#!/bin/sh /usr/bin/dm-tool switch-to-greeter
then user switching in Xfce should work with Lightdm.
Alternatively, if you use the Whisker Menu, you can go to Properties -> Commands and change the "Switch Users" command directly to:
dm-tool switch-to-greeter
You can also switch users from the XScreenSaver lock screen - see XScreenSaver#LightDM.
5.9 Default session
Lightdm, like other DMs, stores the last-selected xsession in ~/.dmrc. See Display manager#Session configuration for more info.
5.10 Customization of the login window
5.10.1 GTK+ greeter
Users need to edit /etc/lightdm/lightdm-gtk-greeter.conf
position 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
font-name default: Sans 10. This set the font style and the font size. See Font configuration for valid values.
Example: font-name=Sans 18
a11y-states This set the states of the accessibility features. Example for a large default font: a11y-states=+font
5.11 VNC Server
Lightdm can also be used to connect to via vnc. Make sure to install tigervnc on the server side and optional as your vncclient 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. 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.
6 Troubleshooting
If you encounter consistent screen flashing and ultimately no LightDM on boot, ensure that you have defined the greeter correctly in LightDM's config 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.
6.1 Wrong locale displayed
In case of your locale not being displayed correctly in Lightdm add your locale to /etc/environment
LANG=pt_PT.utf8
6.2 Missing icons with GTK greeter
If you're 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/
6.3 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.
6.4 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 HDMI1 --primary
Replace HDMI1 with your real monitor ID, which you can find from xrandr command output.
6.5 LightDM doesn't appear
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'll want to add the following config to your lightdm.conf file:
[LightDM] logind-check-graphical=true
This setting will tell LightDM to wait until graphics devices are ready before spawning greeters/autostarting sessions on them.
6.6 Pulseaudio not starting automatically
See PulseAudio#Running.
7 See also
- light-locker, a screen locker using LightDM.
- Ubuntu Wiki article
- Gentoo Wiki article
- LightDM blog