10.4. Customizing the Login Screen

The GNOME Login Screen has several elements that can be customized. These changes can only be performed by a system administrator and affect all users. This section describes how to customize the greeter text, logo, keyboard layout, and user list. Note that the login screen background image cannot be customized.

10.4.2. Displaying a Text Banner

The text banner on the login screen is controlled by the following GSettings keys (for more information about GSettings, see Chapter 9, Configuring Desktop with GSettings and dconf):
org.gnome.login-screen.banner-message-enable
enables showing the banner message.
org.gnome.login-screen.banner-message-text
shows the text banner message in the login window.
Note that since GDM uses its own dconf profile, you can configure the text banner by changing the settings in that profile.

Procedure 10.7. Displaying a Text Banner on the Login Screen

  1. Create or edit the gdm profile in /etc/dconf/profile/gdm which contains the following lines:
    user-db:user
    system-db:gdm
    file-db:/usr/share/gdm/greeter-dconf-defaults
    gdm is the name of a dconf database.
  2. Create a gdm database for machine-wide settings in /etc/dconf/db/gdm.d/01-banner-message:
    [org/gnome/login-screen]
    banner-message-enable=true
    banner-message-text='Type the banner message here'
    

    Note

    There is no character limit for the banner message. GNOME Shell autodetects longer stretches of text and enters two column mode. However, the banner message text cannot be read from an external file.
  3. Update the system databases:
    # dconf update
The banner text appears when you have selected yourself from the user list or when you start typing into the box. The next time you log in you will see the text when inserting the password.

10.4.2.1. What if the Banner Message Does Not Update?

If the banner message does not show, make sure you have run the dconf update command.
In case the banner message does not update, try restarting GDM. For more information, see Section 14.1.1, “Restarting GDM”.

10.4.3. Displaying Multiple Keyboard Layouts

You can add alternative keyboard layouts for users to chose from on the login screen.
This can be helpful for users who normally use different keyboard layouts from the default and who want to have those keyboard layouts available at the login screen. Nevertheless, the selection only applies when using the login screen. Once you are logged in your own user settings take over.

Procedure 10.8. Changing the System Keyboard Layout Settings

  1. Find the codes of the desired language layouts in the /usr/share/X11/xkb/rules/base.lst file under the section named ! layout.
  2. Use the localectl tool to change the system keyboard layout settings as follows:
    localectl set-x11-keymap layout
    You can specify multiple layouts as a comma-separated list. For example, to set es as the default layout, and us as the secondary layout, run the following command:
    $ localectl set-x11-keymap es,us
  3. Log out to find that the defined layouts are available at the top bar on the login screen.
Note that you can also use the localectl tool to specify the machine-wide default keyboard model, variant, and options. See the localectl(1) man page for more information.

10.4.4. Disabling the Login Screen User List

You can disable the user list shown on the login screen by setting the org.gnome.login-screen.disable-user-list GSettings key.
When the user list is disabled, users need to type their user name and password at the prompt to log in.

Procedure 10.9. Setting the org.gnome.login-screen.disable-user-list Key

  1. Create or edit the gdm profile in /etc/dconf/profile/gdm which contains the following lines:
    user-db:user
    system-db:gdm
    file-db:/usr/share/gdm/greeter-dconf-defaults
    gdm is the name of a dconf database.
  2. Create a gdm database for machine-wide settings in /etc/dconf/db/gdm.d/00-login-screen:
    [org/gnome/login-screen]
    # Do not show the user list
    disable-user-list=true
    
  3. Update the system databases by updating the dconf utility:
    # dconf update