Difference between revisions of "GDM"

From ArchWiki
Jump to: navigation, search
(Prevent suspend when closing the lid: deleted this paragraph - see Talk:GDM#Delete_GDM.23Prevent_suspend_when_closing_the_lid_paragraph.3F)
(Change the language: remove non-functional accountsservice method as per Talk:GDM#Change the language)
 
(74 intermediate revisions by 23 users not shown)
Line 4: Line 4:
 
[[ja:GDM]]
 
[[ja:GDM]]
 
[[pt:GDM]]
 
[[pt:GDM]]
[[zh-CN:GDM]]
+
[[zh-hans:GDM]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|GNOME}}
 
{{Related|GNOME}}
{{Related|GNOME Flashback}}
 
 
{{Related|Display manager}}
 
{{Related|Display manager}}
{{Related|LightDM}}
 
{{Related|LXDM}}
 
 
{{Related articles end}}
 
{{Related articles end}}
From [http://projects.gnome.org/gdm/about.html GDM - GNOME Display Manager]:
+
From [https://wiki.gnome.org/Projects/GDM GDM - GNOME Display Manager]: "The GNOME Display Manager (GDM) is a program that manages graphical display servers and handles graphical user logins."
  
:''The GNOME Display Manager (GDM) is a program that manages graphical display servers and handles graphical user logins. ''
+
[[Display manager]]s provide [[X Window System]] and [[Wayland]] users with a graphical login prompt.
 
 
[[Display manager]]s provide [[X Window System]] users with a graphical login prompt.
 
  
 
== Installation ==
 
== Installation ==
  
GDM can be [[installed]] with the {{Pkg|gdm}} package, and it is installed as part of the {{grp|gnome}} group. To start GDM at boot time [[enable]] {{ic|gdm.service}}.
+
GDM can be [[installed]] with the {{Pkg|gdm}} package, and it is installed as part of the {{grp|gnome}} group.
  
 
If you would prefer to use legacy GDM which was used in GNOME 2 and has its own configuration utility, install the {{AUR|gdm-old}} package. Note that the rest of this article discusses current GDM, not legacy GDM, unless indicated otherwise.
 
If you would prefer to use legacy GDM which was used in GNOME 2 and has its own configuration utility, install the {{AUR|gdm-old}} package. Note that the rest of this article discusses current GDM, not legacy GDM, unless indicated otherwise.
  
 
You might also wish to install the following:
 
You might also wish to install the following:
* {{App|gdm3setup|An interface to configure GDM3, autologin options and change Shell theme|https://github.com/Nano77/gdm3setup|{{AUR|gdm3setup}}}}
+
* {{App|gdm3setup|An interface to configure GDM3, autologin options and change Shell theme|https://github.com/Nano77/gdm3setup|{{AUR|gdm3setup}}{{Broken package link|package not found}}}}
 +
 
 +
== Starting ==
 +
 
 +
To start GDM at boot time [[enable]] {{ic|gdm.service}}.
 +
 
 +
=== Autostarting applications ===
 +
 
 +
One might want to autostart certain commands, such as ''xrandr'' for instance, on login. This can be achieved by adding a command or script to a location that is sourced by the display manager. See [[Display manager#Autostarting]] for a list of supported locations.
 +
{{Note|1=The {{ic|/etc/gdm/Init}} directory is no longer a supported location, see [https://bugzilla.gnome.org/show_bug.cgi?id=751602#c2].}}
  
 
== Configuration ==
 
== Configuration ==
Line 31: Line 35:
 
=== Log-in screen background image ===
 
=== Log-in screen background image ===
  
{{Note|Since GNOME 3.16, GNOME Shell themes are now stored binary files (gresource).}}
+
{{Note|
 +
* Since GNOME 3.16, GNOME Shell themes are now stored as binary files (gresource).
 +
* This change will be overwritten on subsequent updates of {{Pkg|gnome-shell}}.}}
  
 
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:
 
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:
Line 45: Line 51:
  
 
for r in `gresource list $gst`; do
 
for r in `gresource list $gst`; do
         gresource extract $gst $r >$workdir${r/#\/org\/gnome\/shell/}
+
         gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/}
 
done}}
 
done}}
  
Line 88: Line 94:
 
     <file>toggle-off-us.svg</file>
 
     <file>toggle-off-us.svg</file>
 
     <file>toggle-off-intl.svg</file>
 
     <file>toggle-off-intl.svg</file>
 +
    <file>toggle-on-hc.svg</file>
 
     <file>toggle-on-us.svg</file>
 
     <file>toggle-on-us.svg</file>
 
     <file>toggle-on-intl.svg</file>
 
     <file>toggle-on-intl.svg</file>
Line 105: Line 112:
 
  }
 
  }
  
Set {{ic|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 [https://en.wikipedia.org/wiki/Display_resolution#Computer_monitors Display resolution]. Again, set '''filename''' to be the name of the background image.
+
Set {{ic|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 [[wikipedia:Display_resolution#Computer_monitors|Display resolution]]. Again, set '''filename''' to be the name of the background image.
  
 
Finally, compile the theme using the following command:
 
Finally, compile the theme using the following command:
Line 111: Line 118:
 
Then copy the resulting {{ic|gnome-shell-theme.gresource}} file to the {{ic|/usr/share/gnome-shell}} directory.
 
Then copy the resulting {{ic|gnome-shell-theme.gresource}} file to the {{ic|/usr/share/gnome-shell}} directory.
  
Restart GDM - you should find that it is using your preferred background image.
+
Then restart {{ic|gdm.service}} (note that simply logging out is not enough) and you should find that it is using your preferred background image.
  
 
For more information, please see the following [https://bbs.archlinux.org/viewtopic.php?id&#61;197036 forum thread].
 
For more information, please see the following [https://bbs.archlinux.org/viewtopic.php?id&#61;197036 forum thread].
  
=== Log-in screen logo ===
+
=== DConf configuration ===
  
{{Out of date|I cannot get this to work - tested 2015-07-16. Similar style method for changing the wallpaper was established to be non functional and removed from the article.}}
+
Some GDM settings are stored in a DConf database. They can be configured either by adding ''keyfiles'' to the {{ic|/etc/dconf/db/gdm.d}} directory and then recompiling the GDM database by running {{ic|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:
 +
{{hc|/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@
  
To display a logo on your log-in screen, follow the instructions below.
+
==== Log-in screen logo ====
  
Create the directory to store the logo:
+
Either create the following keyfile
 +
{{hc|/etc/dconf/db/gdm.d/02-logo|2=
 +
[org/gnome/login-screen]
 +
logo=<nowiki>'</nowiki>''/path/to/logo.png''<nowiki>'</nowiki>}}
 +
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 <nowiki>'</nowiki>''/path/to/logo.png''<nowiki>'</nowiki>
  
# mkdir /opt/login
+
==== Changing the cursor theme ====
  
Create the necessary configuration file:
+
GDM disregards [[GNOME]] cursor theme settings and it also ignores the cursor theme set according to the [[Cursor themes#XDG specification|XDG specification]]. To change the cursor theme used in GDM, either create the following keyfile
  
# touch /etc/dconf/db/gdm.d/02-logo
+
{{hc|/etc/dconf/db/gdm.d/10-cursor-settings|
 +
<nowiki>[org/gnome/desktop/interface]
 +
cursor-theme='</nowiki>''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 <nowiki>'</nowiki>''theme-name''<nowiki>'</nowiki>
  
Copy this text into the file:
+
==== Larger font for log-in screen ====
  
[org/gnome/login-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.
logo='/opt/login/logo.png'
 
  
Copy your logo of choice into the directory:
+
To set a specific scaling factor, you can create the following keyfile:
 +
{{hc|/etc/dconf/db/gdm.d/03-scaling|2=
 +
[org/gnome/desktop/interface]
 +
text-scaling-factor=<nowiki>'</nowiki>''1.25''<nowiki>'</nowiki>}}
 +
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 <nowiki>'</nowiki>''1.25''<nowiki>'</nowiki>
  
# cp [YOUR FILE] /opt/login/logo.png
+
==== Turning off the sound ====
  
where [YOUR FILE] needs to be a path to a PNG image.
+
This tweak disables the audible feedback heard when the system volume is adjusted (via keyboard) on the login screen.
  
Update dconf:
+
Either create the following keyfile:
 +
{{hc|/etc/dconf/db/gdm.d/04-sound|2=
 +
[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'
  
# dconf update
+
==== Configure power button behavior ====
  
=== Changing the GDM cursor theme ===
+
{{Note|1=<nowiki></nowiki>
 +
* The [[Power management#ACPI events|logind settings]] for the power button are overriden by GNOME Settings Daemon. [https://bugzilla.gnome.org/show_bug.cgi?id=755953#c4]
 +
* As of October 2015, the power button cannot be set to ''interactive''. [https://bugzilla.gnome.org/show_bug.cgi?id=753713#c6]
 +
* In some cases, this setting will be ignored and hardcoded defaults will be used. [https://bugzilla.gnome.org/show_bug.cgi?id=755953#c17]}}
  
See [[Cursor themes#GDM]].
+
{{Warning|Please note that the [[acpid]] daemon also handles the "power button" and "hibernate button" events. Running both systems at the same time may lead to unexpected behaviour.}}
  
=== Larger font for log-in screen ===
+
Either create the following keyfile:
 +
{{hc|/etc/dconf/db/gdm.d/05-power|2=
 +
[org/gnome/settings-daemon/plugins/power]
 +
power-button-action=<nowiki>'</nowiki>''action''<nowiki>'</nowiki>}}
 +
and then recompile the GDM database or alternatively log in to the GDM user and execute the following:
 +
$ gsettings set org.gnome.settings-daemon.plugins.power power-button-action <nowiki>'</nowiki>''action''<nowiki>'</nowiki>
 +
where ''action'' can be one of {{ic|nothing}}, {{ic|suspend}} or {{ic|hibernate}}.
  
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.
+
==== Enabling tap-to-click ====
  
{{Out of date|I cannot get this to work - tested 2015-07-16. Similar style method for changing the wallpaper was established to be non functional and removed from the article.}}
+
Tap-to-click is disabled in GDM (and GNOME) by default, but you can easily enable it with a dconf setting.
  
Alternatively, follow the instructions below:
+
{{Note|If you want to do this under X, you have to first set up correct X server access permissions - see [[#Configure X server access permission]].}}
  
Create the necessary configuration file:
+
To directly enable tap-to-click, use:
  
# touch /etc/dconf/db/gdm.d/03-scaling
+
{{bc|# sudo -u gdm gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true}}
  
Copy this text into the file:
+
If you prefer to do this with a GUI, use:
  
[org/gnome/desktop/interface]
+
{{bc|# sudo -u gdm dconf-editor}}
text-scaling-factor='1.25'
 
  
Update dconf:
+
To check the if it was set correctly, use:
  
# dconf update
+
{{bc|$ sudo -u gdm gsettings get org.gnome.desktop.peripherals.touchpad tap-to-click}}
 
 
=== Turning off the sound ===
 
 
 
This tweak disables the audible feedback heard when the system volume is adjusted (via keyboard) on the login screen.
 
 
 
Create the necessary configuration file:
 
 
 
# touch /etc/dconf/db/gdm.d/04-sound
 
 
 
Copy this text into the file:
 
 
 
[org/gnome/desktop/sound]
 
event-sounds='false'
 
 
 
Update dconf:
 
 
 
# dconf update
 
 
 
=== Make the power button interactive ===
 
 
 
The default installation sets the power button to suspend the system. '''''Power off'''''  or  '''''Show dialog'''''  is a better choice.
 
 
 
Create the necessary configuration file:
 
  
# touch /etc/dconf/db/gdm.d/05-power
+
If you get the error {{ic|dconf-WARNING **: failed to commit changes to dconf: Error spawning command line}}, make sure dbus is running:
  
Copy this text into the file:
+
{{bc|$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true}}
  
[org/gnome/settings-daemon/plugins/power button]
+
==== Disable/Enable Accessibility Menu ====
power='interactive'
 
hibernate='interactive'
 
  
Update dconf:
+
To disable or enable the Accessibility Menu, set the following key in dconf editor:
  
# dconf update
+
{{bc|# machinectl shell gdm@
 +
# gsettings set org.gnome.desktop.interface toolkit-accessibility false
 +
# exit}}
  
{{Warning|Please note that the [[acpid]] daemon also handles the "power button" and "hibernate button" events. Running both systems at the same time may lead to unexpected behaviour.}}
+
The menu is disabled when the key is false, enabled when it is true.
  
=== GDM keyboard layout ===
+
=== Keyboard layout ===
  
 
See [[Keyboard configuration in Xorg#Using X configuration files]].
 
See [[Keyboard configuration in Xorg#Using X configuration files]].
Line 212: Line 229:
 
{{Tip|See [[Wikipedia:ISO 3166-1]] for a list of keymaps.}}
 
{{Tip|See [[Wikipedia:ISO 3166-1]] for a list of keymaps.}}
  
==== GNOME Control Center ====
+
Alternatively, if the package {{Pkg|gnome-control-center}} is installed, the keyboard layout(s) can be configured using a graphical frontend. Start ''gnome-control-center'' and navigate to ''Region & Language -> Input Sources''. Then, in the header bar, hit the ''Login Screen'' toggle button to configure the keyboard layout for GDM specifically.
If the package {{Pkg|gnome-control-center}} is installed, the keyboard layout(s) can be configured using a grapical frontend:
 
Settings > Keyboard > Input Sources > Login Screen
 
  
==== GDM 2.x layout ====
+
Users of GDM 2.x (legacy GDM) may need to edit {{ic|~/.dmrc}} as shown below:
 
 
Users of legacy GDM may need to follow the instructions below:
 
 
 
Edit {{ic|~/.dmrc}}:
 
  
 
{{hc|~/.dmrc|2=
 
{{hc|~/.dmrc|2=
Line 230: Line 241:
 
=== Change the language ===
 
=== Change the language ===
  
To change the GDM language, edit the file {{ic|/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:
+
To change the GDM language, ensure that {{Pkg|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.
  
{{hc|1=/var/lib/AccountsService/users/gdm|
+
{{Tip|By adding 2 different input languages, logging out then selecting your default language GDM will remember your choice once the second option is removed.}}
2=[User]
 
Language=fr_FR.UTF-8
 
XSession=
 
SystemAccount=true}}
 
  
Now just reboot your computer.
+
=== Users and login ===
  
Once you have rebooted, if you look at the {{ic|/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.
+
==== Automatic login ====
 
 
=== Automatic login ===
 
  
 
To enable automatic login with GDM, add the following to {{ic|/etc/gdm/custom.conf}} (replace ''username'' with your own):
 
To enable automatic login with GDM, add the following to {{ic|/etc/gdm/custom.conf}} (replace ''username'' with your own):
Line 253: Line 258:
 
}}
 
}}
  
{{Warning|If GDM fails after adding these lines, comment them out from a TTY.}}
+
{{Tip|If GDM fails after adding these lines, comment them out from a TTY.}}
  
 
or for an automatic login with a delay:
 
or for an automatic login with a delay:
Line 265: Line 270:
 
}}
 
}}
  
=== Passwordless login ===
+
You can set the session used for automatic login (replace {{ic|gnome-xorg}} with desired session):
 +
 
 +
{{hc|1=/var/lib/AccountsService/users/''username''|
 +
2=XSession=gnome-xorg
 +
}}
 +
 
 +
==== Passwordless login ====
  
 
If you want to bypass the password prompt in GDM then simply add the following line on the first line of {{ic|/etc/pam.d/gdm-password}}:
 
If you want to bypass the password prompt in GDM then simply add the following line on the first line of {{ic|/etc/pam.d/gdm-password}}:
Line 280: Line 291:
 
* 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 {{ic|nopasswdlogin}} group.}}
 
* 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 {{ic|nopasswdlogin}} group.}}
  
=== Passwordless shutdown for multiple sessions ===
+
==== 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:
 
GDM uses polkit and logind to gain permissions for shutdown. You can shutdown the system when multiple users are logged in by setting:
Line 309: Line 320:
 
You can find all available logind options (e.g. reboot-multiple-sessions) [http://www.freedesktop.org/wiki/Software/systemd/logind#Security here].
 
You can find all available logind options (e.g. reboot-multiple-sessions) [http://www.freedesktop.org/wiki/Software/systemd/logind#Security here].
  
=== Add or edit GDM sessions ===
+
==== Enable root login in GDM ====
 
 
Each session is a {{ic|.desktop}} file located at {{ic|/usr/share/xsessions/}}.
 
 
 
'''To add a new session:'''
 
 
 
1. Copy an existing {{ic|.desktop}} file to use as a template for a new session:
 
$ cd /usr/share/xsessions
 
# cp gnome.desktop other.desktop
 
2. Modify the template {{ic|.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 {{ic|.desktop}} file. Then return to using GDM and the new session will be available.
 
 
 
See also [[Display manager#Session list]].
 
 
 
=== Enable root login in GDM ===
 
  
 
It is not advised to login as root, but if necessary you can edit {{ic|/etc/pam.d/gdm-password}} and add the following line before the line {{ic|auth required pam_deny.so}}:
 
It is not advised to login as root, but if necessary you can edit {{ic|/etc/pam.d/gdm-password}} and add the following line before the line {{ic|auth required pam_deny.so}}:
Line 345: Line 340:
 
You should be able to login as root after restarting GDM.
 
You should be able to login as root after restarting GDM.
  
=== Hide user from login list ===
+
==== Hide user from login list ====
  
The users for the gdm user list are gathered by accountsservice. It will automatically hide system users (UID < 1000).
+
The users for the gdm user list are gathered by [https://www.freedesktop.org/wiki/Software/AccountsService/ 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 {{ic|/var/lib/AccountsService/users/}} to contain at least:
 
To hide ordinary users from the login list create or edit a file named after the user to hide in {{ic|/var/lib/AccountsService/users/}} to contain at least:
 
{{hc|/var/lib/AccountsService/users/<nowiki><username></nowiki>|
 
{{hc|/var/lib/AccountsService/users/<nowiki><username></nowiki>|
Line 353: Line 348:
 
<nowiki>SystemAccount=true</nowiki>}}
 
<nowiki>SystemAccount=true</nowiki>}}
  
=== Rotate login screen ===
+
=== Setup default monitor settings ===
 +
 
 +
Some [[desktop environments]] store display settings in {{ic|~/.config/monitors.xml}}. ''xrandr'' commands are then generated on the base of the file content. GDM has a similar file stored in {{ic|/var/lib/gdm/.config/monitors.xml}}.   
  
 
If you have your monitors setup as you like (orientation, primary and so on) in {{ic|~/.config/monitors.xml}} and want GDM to honor those settings:
 
If you have your monitors setup as you like (orientation, primary and so on) in {{ic|~/.config/monitors.xml}} and want GDM to honor those settings:
Line 361: Line 358:
 
Changes will take effect on logout.  This is necessary because GDM does not respect {{ic|xorg.conf}}.
 
Changes will take effect on logout.  This is necessary because GDM does not respect {{ic|xorg.conf}}.
  
=== xrandr at login ===
+
{{Note|Wayland backend may be [https://bbs.archlinux.org/viewtopic.php?id&#61;196219 ignoring] {{ic|/var/lib/gdm/.config/monitors.xml}} file. See [[#Use Xorg backend]] to learn how to disable Wayland backend.}}
 
 
{{Style|This is the first mention of {{ic|/etc/X11/xinit/xinitrc.d}} and {{ic|/etc/gdm/Init}} on this page, although it seems to be general feature.|Talk:GDM#xrandr at login}}
 
 
 
If you want to run a script using xrandr that affects the login screen you must add a script in {{ic|/etc/X11/xinit/xinitrc.d}} since GDM is not respecting or launching the scripts in {{ic|/etc/gdm/Init}}.
 
 
 
For example, to select automatically a external screen connected through HDMI:
 
 
 
{{bc|<nowiki>
 
#!/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
 
</nowiki>}}
 
  
 
=== Configure X server access permission ===
 
=== Configure X server access permission ===
Line 387: Line 367:
  
 
{{bc|# xhost +SI:localuser:gdm}}
 
{{bc|# xhost +SI:localuser:gdm}}
 
=== 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.
 
 
{{Note|If you want to do this under X, you have to first set up correct X server access permissions - see [[#Configure X server access permission]].}}
 
 
To directly enable tap-to-click, use:
 
 
{{bc|# sudo -u gdm gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true}}
 
 
If you prefer to do this with a GUI, use:
 
 
{{bc|# sudo -u gdm dconf-editor}}
 
 
To check the if it was set correctly, use:
 
 
{{bc|$ sudo -u gdm gsettings get org.gnome.desktop.peripherals.touchpad tap-to-click}}
 
  
 
== Troubleshooting ==
 
== Troubleshooting ==
Line 423: Line 385:
 
=== Use Xorg backend ===
 
=== Use Xorg backend ===
  
As of GDM version 3.16, 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 [https://bugzilla.redhat.com/show_bug.cgi?id=1199890 reported] to cause problems for some users, use of the Xorg backend may be necessary. To use the Xorg backend by default, edit the {{ic|/etc/gdm/custom.conf}} file and uncomment the following line:
+
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 [https://bugzilla.redhat.com/show_bug.cgi?id=1199890 reported] to cause problems for some users, use of the Xorg backend may be necessary. To use the Xorg backend by default, edit the {{ic|/etc/gdm/custom.conf}} file and uncomment the following line:
 
  #WaylandEnable=false
 
  #WaylandEnable=false
 +
 +
=== Incomplete removal of gdm ===
 +
 +
After removing {{Pkg|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 {{ic|pwck}} and {{ic|grpck}}. To round it off, you may want to double-check no [[Pacman/Tips_and_tricks#Identify_files_not_owned_by_any_package|unowned files]] for gdm remain.
  
 
== See also ==
 
== See also ==
  
 
* [https://help.gnome.org/admin/gdm/stable/index.html.en GDM Reference Manual]
 
* [https://help.gnome.org/admin/gdm/stable/index.html.en GDM Reference Manual]

Latest revision as of 11:31, 1 October 2017

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.

Installation

GDM can be installed with the gdm package, and it is installed as part of the gnome group.

If you would prefer to use legacy GDM which was used in GNOME 2 and has its own configuration utility, install the gdm-oldAUR package. Note that the rest of this article discusses current GDM, not legacy GDM, unless indicated otherwise.

You might also wish to install the following:

  • gdm3setup — An interface to configure GDM3, autologin options and change Shell theme
https://github.com/Nano77/gdm3setup || gdm3setupAUR[broken link: package not found]

Starting

To start GDM at boot time enable gdm.service.

Autostarting applications

One might want to autostart certain commands, such as xrandr for instance, on login. This can be achieved by adding a command or script to a location that is sourced by the display manager. See Display manager#Autostarting for a list of supported locations.

Note: The /etc/gdm/Init directory is no longer a supported location, see [1].

Configuration

Log-in screen background image

Note:
  • Since GNOME 3.16, GNOME Shell themes are now stored as binary files (gresource).
  • This change will be overwritten on subsequent updates of gnome-shell.

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.

Then restart gdm.service (note that simply logging out is not enough) and you should find that it is using your preferred background image.

For more information, please see the following forum thread.

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@

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'

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'

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'

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'

Configure power button behavior

Note:
  • The logind settings for the power button are overriden by GNOME Settings Daemon. [2]
  • As of October 2015, the power button cannot be set to interactive. [3]
  • In some cases, this setting will be ignored and hardcoded defaults will be used. [4]
Warning: Please note that the acpid daemon also handles the "power button" and "hibernate button" events. Running both systems at the same time may lead to unexpected behaviour.

Either create the following keyfile:

/etc/dconf/db/gdm.d/05-power
[org/gnome/settings-daemon/plugins/power]
power-button-action='action'

and then recompile the GDM database or alternatively log in to the GDM user and execute the following:

$ gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'action'

where action can be one of nothing, suspend or hibernate.

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.

Note: If you want to do this under X, you have to first set up correct X server access permissions - see #Configure X server access permission.

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

Disable/Enable Accessibility Menu

To disable or enable the Accessibility Menu, set the following key in dconf editor:

# machinectl shell gdm@
# gsettings set org.gnome.desktop.interface toolkit-accessibility false
# exit

The menu is disabled when the key is false, enabled when it is true.

Keyboard layout

See Keyboard configuration in Xorg#Using X configuration files.

Tip: See Wikipedia:ISO 3166-1 for a list of keymaps.

Alternatively, 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 Region & Language -> Input Sources. Then, in the header bar, hit the Login Screen toggle button to configure the keyboard layout for GDM specifically.

Users of GDM 2.x (legacy GDM) may need to edit ~/.dmrc as shown below:

~/.dmrc
[Desktop]
Language=de_DE.UTF-8   # change to your default lang
Layout=de   nodeadkeys # change to your keyboard layout

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.

Tip: By adding 2 different input languages, logging out then selecting your default language GDM will remember your choice once the second option is removed.

Users and login

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
Tip: If GDM fails after adding these lines, comment them out from a TTY.

or for an automatic login with a delay:

/etc/gdm/custom.conf
[daemon]

TimedLoginEnable=true
TimedLogin=username
TimedLoginDelay=1

You can set the session used for automatic login (replace gnome-xorg with desired session):

/var/lib/AccountsService/users/username
XSession=gnome-xorg

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.

Warning:
  • 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.

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.

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.

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

Setup default monitor settings

Some desktop environments store display settings in ~/.config/monitors.xml. xrandr commands are then generated on the base of the file content. GDM has a similar file stored in /var/lib/gdm/.config/monitors.xml.

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.

Note: Wayland backend may be ignoring /var/lib/gdm/.config/monitors.xml file. See #Use Xorg backend to learn how to disable Wayland backend.

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

Troubleshooting

Failure to start with AMD Catalyst driver

Downgrade the xorg-server package or try to use another display manager like LightDM.

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

Xorg 1.16

See Xorg#Rootless Xorg (v1.16).

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

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.

See also