GDM
Summary |
---|
GDM is the GNOME Display Manager, a graphical login program. This article covers its installation and configuration. |
Related |
GNOME |
user:hd_scania/Liri |
Display manager |
SDDM |
Wayland |
LightDM |
From GDM - GNOME Display Manager: "The GNOME Display Manager (GDM) is a program that manages graphical display servers and handles graphical user logins." Display managers provide X Window System and Wayland users with a graphical login prompt.
Contents
- 1 Installation
- 2 Configuration
- 2.1 Autostarting applications with GDM
- 2.2 Log-in screen background image
- 2.3 DConf configuration
- 2.4 GDM keyboard layout
- 2.5 Change the language
- 2.6 Automatic login
- 2.7 Passwordless login
- 2.8 Passwordless shutdown for multiple sessions
- 2.9 Add or edit GDM sessions
- 2.10 Enable root login in GDM
- 2.11 Hide user from login list
- 2.12 Rotate login screen
- 2.13 xrandr at login
- 2.14 Configure X server access permission
- 3 Troubleshooting
- 4 See also
- 5 Acknowledgement
1 Installation
GDM can be installed with the gdm package, and it is installed as part of the gnome group. To start GDM at boot time, type the following at a command prompt: {{hc|sudo nano /etc/conf.d/xdm|2= DISPLAYMANAGER=gdm DISPLAY_MANAGER=gdm
sudo rc-update add xdm default
2 Configuration
2.1 Autostarting applications with GDM
See Display manager#Autostarting. Note that adding scripts to /etc/gdm/Init no longer works, see the upstream bug report.
2.2 Log-in screen background image
Firstly, you need to extract the existing GNOME Shell theme to a folder in your home directory. You can do this using the following script:
extractgst.sh
#!/bin/sh workdir=${HOME}/shell-theme if [ ! -d ${workdir}/theme ]; then mkdir -p ${workdir}/theme fi gst=/usr/share/gnome-shell/gnome-shell-theme.gresource for r in `gresource list $gst`; do gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/} done
Navigate to the created directory. You should find that the theme files have been extracted to it. Now copy your preferred background image to this directory.
Next, you need to create a file in the directory with the following content:
gnome-shell-theme.gresource.xml
<?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/org/gnome/shell/theme"> <file>calendar-arrow-left.svg</file> <file>calendar-arrow-right.svg</file> <file>calendar-today.svg</file> <file>checkbox-focused.svg</file> <file>checkbox-off-focused.svg</file> <file>checkbox-off.svg</file> <file>checkbox.svg</file> <file>close-window.svg</file> <file>close.svg</file> <file>corner-ripple-ltr.png</file> <file>corner-ripple-rtl.png</file> <file>dash-placeholder.svg</file> <file>filter-selected-ltr.svg</file> <file>filter-selected-rtl.svg</file> <file>gnome-shell.css</file> <file>gnome-shell-high-contrast.css</file> <file>logged-in-indicator.svg</file> <file>filename</file> <file>more-results.svg</file> <file>no-events.svg</file> <file>no-notifications.svg</file> <file>noise-texture.png</file> <file>page-indicator-active.svg</file> <file>page-indicator-inactive.svg</file> <file>page-indicator-checked.svg</file> <file>page-indicator-hover.svg</file> <file>process-working.svg</file> <file>running-indicator.svg</file> <file>source-button-border.svg</file> <file>summary-counter.svg</file> <file>toggle-off-us.svg</file> <file>toggle-off-intl.svg</file> <file>toggle-on-hc.svg</file> <file>toggle-on-us.svg</file> <file>toggle-on-intl.svg</file> <file>ws-switch-arrow-up.png</file> <file>ws-switch-arrow-down.png</file> </gresource> </gresources>
Replace filename with the filename of your background image.
Now, open the gnome-shell.css file in the directory and change the #lockDialogGroup definition as follows:
#lockDialogGroup { background: #2e3436 url(filename); background-size: [WIDTH]px [HEIGHT]px; background-repeat: no-repeat; }
Set background-size to the resolution that GDM uses, this might not necessarily be the resolution of the image. For a list of display resolutions see Display resolution. Again, set filename to be the name of the background image.
Finally, compile the theme using the following command:
$ glib-compile-resources gnome-shell-theme.gresource.xml
Then copy the resulting gnome-shell-theme.gresource file to the /usr/share/gnome-shell directory.
Restart GDM - you should find that it is using your preferred background image.
For more information, please see the following forum thread.
2.3 DConf configuration
Some GDM settings are stored in a DConf database. They can be configured either by adding keyfiles to the /etc/dconf/db/gdm.d directory and then recompiling the GDM database by running dconf update as root or by logging into the GDM user on the system and changing the setting directly using the gsettings command line tool. Note that for the former approach, a GDM profile file is required - this must be created manually as it is no longer shipped upstream, see below:
/etc/dconf/profile/gdm
user-db:user system-db:gdm file-db:/usr/share/gdm/greeter-dconf-defaults
For the latter approach, you can log into the GDM user with the command below:
# machinectl shell gdm@
2.3.1 Log-in screen logo
Either create the following keyfile
/etc/dconf/db/gdm.d/02-logo
[org/gnome/login-screen] logo='/path/to/logo.png'
and then recompile the GDM database or alternatively log in to the GDM user and execute the following:
$ gsettings set org.gnome.login-screen logo '/path/to/logo.png'
2.3.2 Changing the cursor theme
GDM disregards GNOME cursor theme settings and it also ignores the cursor theme set according to the XDG specification. To change the cursor theme used in GDM, either create the following keyfile
/etc/dconf/db/gdm.d/10-cursor-settings
[org/gnome/desktop/interface] cursor-theme='theme-name'
and then recompile the GDM database or alternatively log in to the GDM user and execute the following:
$ gsettings set org.gnome.desktop.interface cursor-theme 'theme-name'
2.3.3 Larger font for log-in screen
Click on the accessibility icon at the top right of the screen (a white circle with the silhouette of a person in the centre) and check the Large Text option.
To set a specific scaling factor, you can create the following keyfile:
/etc/dconf/db/gdm.d/03-scaling
[org/gnome/desktop/interface] text-scaling-factor='1.25'
and then recompile the GDM database or alternatively log in to the GDM user and execute the following:
$ gsettings set org.gnome.desktop.interface text-scaling-factor '1.25'
2.3.4 Turning off the sound
This tweak disables the audible feedback heard when the system volume is adjusted (via keyboard) on the login screen.
Either create the following keyfile:
/etc/dconf/db/gdm.d/04-sound
[org/gnome/desktop/sound] event-sounds='false'
and then recompile the GDM database or alternatively log in to the GDM user and execute the following:
$ gsettings set org.gnome.desktop.sound event-sounds 'false'
2.3.5 Make the power button interactive
The behaviour of the power buttons can be configured in GDM. The example below will configure the power and hibernate buttons to Show dialog:
Create the following keyfile:
/etc/dconf/db/gdm.d/05-power
[org/gnome/settings-daemon/plugins/power button] power='interactive' hibernate='interactive'
and then recompile the GDM database.
2.3.6 Enabling tap-to-click
Tap-to-click is disabled in GDM (and GNOME) by default, but you can easily enable it with a dconf setting.
To directly enable tap-to-click, use:
# sudo -u gdm gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
If you prefer to do this with a GUI, use:
# sudo -u gdm dconf-editor
To check the if it was set correctly, use:
$ sudo -u gdm gsettings get org.gnome.desktop.peripherals.touchpad tap-to-click
If you get the error dconf-WARNING **: failed to commit changes to dconf: Error spawning command line, make sure dbus is running:
$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
2.4 GDM keyboard layout
See Keyboard configuration in Xorg#Using X configuration files.
2.4.1 GNOME Control Center
If the package gnome-control-center is installed, the keyboard layout(s) can be configured using a graphical frontend. Start gnome-control-center and navigate to Keyboard -> Input Sources. Then, in the header bar, hit the Login Screen toggle button to configure the keyboard layout for GDM specifically.
2.4.2 GDM 2.x layout
Users of legacy GDM may need to follow the instructions below:
Edit ~/.dmrc:
~/.dmrc
[Desktop] Language=de_DE.UTF-8 # change to your default lang Layout=de nodeadkeys # change to your keyboard layout
2.5 Change the language
To change the GDM language, ensure that gnome-control-center is installed. Then, start gnome-control-center and choose Region & Language. In the header bar, check the Login Screen toggle button. Finally, click on Language and choose your language from the list. You will be prompted for your root password.
Alternatively, edit the file /var/lib/AccountsService/users/gdm and change the language line using the correct UTF-8 value for your language. You should see something similar to the text below:
/var/lib/AccountsService/users/gdm
[User] Language=fr_FR.UTF-8 XSession= SystemAccount=true
Now just reboot your computer.
Once you have rebooted, if you look at the /var/lib/AccountsService/users/gdm file again, you will see that the language line is cleared — do not worry, the language change has been preserved.
2.6 Automatic login
To enable automatic login with GDM, add the following to /etc/gdm/custom.conf (replace username with your own):
/etc/gdm/custom.conf
# Enable automatic login for user [daemon] AutomaticLogin=username AutomaticLoginEnable=True
or for an automatic login with a delay:
/etc/gdm/custom.conf
[daemon] TimedLoginEnable=true TimedLogin=username TimedLoginDelay=1
2.7 Passwordless login
If you want to bypass the password prompt in GDM then simply add the following line on the first line of /etc/pam.d/gdm-password:
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
Then, add the group nopasswdlogin to your system. See Groups for group descriptions and group management commands.
Now, add your user to the nopasswdlogin group and you will only have to click on your username to login.
- Do not do this for a root account.
- You won't be able to change your session type at login with GDM anymore. If you want to change your default session type, you will first need to remove your user from the nopasswdlogin group.
2.8 Passwordless shutdown for multiple sessions
GDM uses polkit and logind to gain permissions for shutdown. You can shutdown the system when multiple users are logged in by setting:
/etc/polkit-1/localauthority.conf.d/org.freedesktop.logind.policy
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd"> <policyconfig> <action id="org.freedesktop.login1.power-off-multiple-sessions"> <description>Shutdown the system when multiple users are logged in</description> <message>System policy prevents shutting down the system when other users are logged in</message> <defaults> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults> </action> </policyconfig>
You can find all available logind options (e.g. reboot-multiple-sessions) here.
2.9 Add or edit GDM sessions
Each session is a .desktop file located at /usr/share/xsessions/.
To add a new session:
1. Copy an existing .desktop file to use as a template for a new session:
$ cd /usr/share/xsessions # cp gnome.desktop other.desktop
2. Modify the template .desktop file to open the required window manager:
# nano other.desktop
If you happen to have KDM installed in parallel, you can alternatively open the new session in KDM which will create the new .desktop file. Then return to using GDM and the new session will be available.
See also Display manager#Session configuration.
2.10 Enable root login in GDM
It is not advised to login as root, but if necessary you can edit /etc/pam.d/gdm-password and add the following line before the line auth required pam_deny.so:
/etc/pam.d/gdm-password
auth sufficient pam_succeed_if.so uid eq 0 quiet
The file should look something like this:
/etc/pam.d/gdm-password
... auth sufficient pam_succeed_if.so uid eq 0 quiet auth sufficient pam_succeed_if.so uid >= 1000 quiet auth required pam_deny.so ...
You should be able to login as root after restarting GDM.
2.11 Hide user from login list
The users for the gdm user list are gathered by AccountsService. It will automatically hide system users (UID < 1000). To hide ordinary users from the login list create or edit a file named after the user to hide in /var/lib/AccountsService/users/ to contain at least:
/var/lib/AccountsService/users/<username>
[User] SystemAccount=true
2.12 Rotate login screen
If you have your monitors setup as you like (orientation, primary and so on) in ~/.config/monitors.xml and want GDM to honor those settings:
# cp ~/.config/monitors.xml /var/lib/gdm/.config/monitors.xml
Changes will take effect on logout. This is necessary because GDM does not respect xorg.conf.
2.13 xrandr at login
If you want to run a script using xrandr that affects the login screen you must add a script in /etc/X11/xinit/xinitrc.d.
For example, to select automatically a external screen connected through HDMI:
#!/bin/sh EXTERNAL_OUTPUT="HDMI1" INTERNAL_OUTPUT="eDP1" if (xrandr | grep $EXTERNAL_OUTPUT | grep " connected "); then xrandr --output $INTERNAL_OUTPUT --off --output $EXTERNAL_OUTPUT --auto else xrandr --output $INTERNAL_OUTPUT --auto fi
2.14 Configure X server access permission
You can use the xhost command to configure X server access permissions.
For instance, to grant GDM the right to access the X server, use the following command:
# xhost +SI:localuser:gdm
3 Troubleshooting
3.1 Failure to start with AMD Catalyst driver
Downgrade the xorg-server package or try to use another display manager like LightDM.
3.2 Failure on logout
If GDM starts up properly on boot, but fails after repeated attempts on logout, try adding this line to the daemon section of /etc/gdm/custom.conf:
GdmXserverTimeout=60
3.3 Xorg 1.16
See Xorg#Rootless Xorg (v1.16).
3.4 Use Xorg backend
The Wayland backend is used by default and the Xorg backend is used only if the Wayland backend cannot be started. As the Wayland backend has been reported to cause problems for some users, use of the Xorg backend may be necessary. To use the Xorg backend by default, edit the /etc/gdm/custom.conf file and uncomment the following line:
#WaylandEnable=false
3.5 Incomplete removal of gdm
After removing gdm, systemd may report the following:
user 'gdm': directory '/var/lib/gdm' does not exist
To remove this warning, login as root and delete the primary user "gdm" and then delete the group "gdm":
# userdel gdm # groupdel gdm
Verify that gdm is successfully removed via pwck and grpck. To round it off, you may want to double-check no unowned files for gdm remain.
4 See also