Chapter 8. Customizing desktop appearance This section explains how system administrators can customize appearance of the desktop environment for different users of the system. 8.1. Customizing desktop backgrounds As a system administrator, you can configure the default desktop background, add extra backgrounds, or add multiple backgrounds available to all users of the system. If the users are not permitted to change background from the defaults, you must lock the settings using the locks directory. Otherwise, each user can customize the background according to their preferences. 8.1.1. Customizing the default desktop background You can configure the default desktop background and its appearance by setting the relevant GSettings keys in the org.gnome.desktop.background schema. Procedure Create a local database for machine-wide settings in /etc/dconf/db/local.d/00-background : 1 Specify the path to the desktop background image file. 2 Specify one of the rendering options for the background image: none wallpaper centered scaled stretched zoom spanned 3 Specify the left or top color when drawing gradients or the solid color. 4 Specify the right or bottom color when drawing gradients. Optional: If you want to prevent a user from changing the default background, override the user's setting in the /etc/dconf/db/local.d/locks/background file: Update the system databases: Users must log out and back in again before the system-wide settings take effect. Additional resources For more information about GSettings , see Section 6.1, "Introduction to configuring GNOME" . 8.1.2. Adding extra backgrounds You can make extra backgrounds available to users on your system. Procedure Create the /usr/share/gnome-background-properties/extra-backgrounds.xml file. In the new file, specify the extra background files and their appearance in the following format: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd"> <wallpapers> <wallpaper deleted="false"> <name> Background name </name> <filename> full-path-to-the-image </filename> <options> display-option </options> <shade_type> background-shade </shade_type> <pcolor> primary-color </pcolor> <scolor> secondary-color </scolor> </wallpaper> </wallpapers> The new backgrounds are now available to all users in the Background section of the Settings application. 8.1.3. Frequently used background schema keys The following configuration controls the behavior of desktop backgrounds in the GSettings system. Table 8.1. Frequently used GSettings and XML background keys Key name XML name Possible values Description picture-options options none wallpaper centered scaled stretched zoom spanned Determines how the image set by wallpaper_filename is rendered. color-shading-type shade_type horizontal vertical solid Determines the shade of the background color. primary-color pcolor default: #023c88 Left or Top color when drawing gradients, or the solid color. secondary-color scolor default: #5789ca Right or Bottom color when drawing gradients, not used for solid color. Example 8.1. An extra backgrounds file with one <wallpaper> element <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd"> <wallpapers> <wallpaper deleted="false"> <name>Company Background</name> <name xml:lang="de">Firmenhintergrund</name> <filename>/usr/local/share/backgrounds/company-wallpaper.jpg</filename> <options>zoom</options> <shade_type>solid</shade_type> <pcolor>#ffffff</pcolor> <scolor>#000000</scolor> </wallpaper> </wallpapers> Example 8.2. An extra backgrounds file with two <wallpaper> elements In one configuration file, you can specify multiple <wallpaper> elements to add more backgrounds as shown in the following example with two <wallpaper> elements, adding two different backgrounds. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd"> <wallpapers> <wallpaper deleted="false"> <name>Company Background</name> <name xml:lang="de">Firmenhintergrund</name> <filename>/usr/local/share/backgrounds/company-wallpaper.jpg</filename> <options>zoom</options> <shade_type>solid</shade_type> <pcolor>#ffffff</pcolor> <scolor>#000000</scolor> </wallpaper> <wallpaper deleted="false"> <name>Company Background 2</name> <name xml:lang="de">Firmenhintergrund 2</name> <filename>/usr/local/share/backgrounds/company-wallpaper-2.jpg</filename> <options>zoom</options> <shade_type>solid</shade_type> <pcolor>#ff0000</pcolor> <scolor>#00ffff</scolor> </wallpaper> </wallpapers> 8.1.4. Setting the screen shield Screen shield is the screen that slides down when you lock the system. You can set a default screen shield picture for all users on the system. Procedure Create the /etc/dconf/db/gdm.d/01-screensaver file: Replace /opt/corp/background.jpg with the absolute path to the image file that you want to use as the default screen shield. Supported formats are PNG, JPG, JPEG, and TGA. Note that the screen shield scales your image if necessary to fit the screen. Update the system databases: Users must log out and back in again before the system-wide settings take effect. Troubleshooting If the screen shield does not update: Verify that you have updated the system databases: Try restarting GDM: Warning Restarting the gdm service terminates all currently running GNOME sessions of all desktop users who are logged in. This might result in users losing unsaved data. Additional resources For more information about GSettings and dconf , see Section 6.1, "Introduction to configuring GNOME" . 8.2. Customizing the branding of the login screen You can change the logo that appears on the GNOME login screen (GDM) using a dconf profile. Prerequisites Prepare an image file in any of the supported formats: ANI, BPM, GIF, GTIFF, ICNS, ICO, JPEG, JPEG 2000, PCX, PNM, PBM, PGM, PPM, RAS, SVG, TGA, TIFF, WBMP, XBM, or XPM. The image must be around 48 pixels in height. If it is significantly larger, it will exceed the logo area. Store the image file in a location that the gdm user can access. For example, select a universally readable system directory such as /opt/ or /usr/local/ . Procedure Create the /etc/dconf/db/gdm.d/01-override-logo configuration file with the following content: Replace /path/to/logo.png with the full path to the image file that you want to use as the login screen logo. Update the system databases: Verification Log out or otherwise switch to the login screen. Check if it displays the logo that you selected. If the logo does not update, restart GDM: Warning Restarting the gdm service terminates all currently running GNOME sessions of all desktop users who are logged in. This might result in users losing unsaved data. 8.3. Using GNOME Shell extensions to customize desktop environment GNOME Shell extensions allow for the customization of the default GNOME Shell interface and its parts, such as window management and application launching. Important Before deploying third-party GNOME Shell extensions on Red Hat Enterprise Linux, make sure to read the following document to learn about the Red Hat support policy for third-party software: How does Red Hat Global Support Services handle third-party software, drivers, and/or uncertified hardware/hypervisors? 8.3.1. Overview of GNOME Shell extensions The following is an overview of GNOME Shell extensions available on RHEL 8, including the name of the package providing a particular extension, and the description of what each extension does. Table 8.2. Overview of available GNOME Shell extensions Package name Extension name Description gnome-shell-extension-apps-menu apps-menu Applications menu for GNOME Shell gnome-shell-extension-top-icons Top Icons Show legacy icons on top gnome-shell-extension-user-theme user-theme Support for custom themes in GNOME Shell gnome-shell-extension-drive-menu drive-menu Drive status menu for GNOME Shell gnome-shell-extension-window-list window-list Display a window list at the bottom of the screen in GNOME Shell gnome-shell-extension-dash-to-dock Dash to Dock Dock for the Gnome Shell by micxgx.gmail.com gnome-shell-extension-desktop-icons Desktop Icons Desktop icons support for the GNOME Classic experience gnome-shell-extension-no-hot-corner nohotcorner Disable the hot corner in GNOME Shell gnome-shell-extension-systemMonitor systemMonitor System Monitor for GNOME Shell gnome-shell-extension-updates-dialog Updates Dialog Show a modal dialog when there are software updates gnome-shell-extension-window-grouper window-grouper Keep windows that belong to the same process on the same workspace gnome-shell-extension-panel-favorites panel-favorites Favorite launchers in GNOME Shell's top bar gnome-shell-extension-windowsNavigator windowNavigator Support for keyboard selection of windows and workspaces in GNOME shell gnome-shell-extension-auto-move-windows Autom Move Windows Assign specific workspaces to applications in GNOME Shell gnome-shell-extension-launch-new-instance launch-new-instance Always launch a new application instance for GNOME Shell gnome-shell-extension-workspace-indicator workspace-indicator Workspace indicator for GNOME Shell gnome-shell-extension-disable-screenshield Disable Screen Shield Disable GNOME Shell screen shield if lock is disabled gnome-shell-extension-native-window-placement native-window-placement Native window placement for GNOME Shell gnome-shell-extension-screenshot-window-sizer screenshot-window-sizer Screenshot window sizer for GNOME Shell gnome-shell-extension-horizontal-workspaces horizontal-workspaces Desktop icons support for the GNOME Classic experience gnome-shell-extension-places-menu places-menu Places status menu for GNOME Shell gnome-classic-session - GNOME Classic mode session 8.3.2. Enabling machine-wide extensions Prerequisites To make extensions available to all users on the system, install them in the /usr/share/gnome-shell/extensions directory. Procedure Create a local database file for machine-wide settings in /etc/dconf/db/local.d/00-extensions : The enabled-extensions key specifies the enabled extensions using the extensions' UUID ( myextension1@myname.example.com and myextension2@myname.example.com ). Update the system databases: Users must log out and back in again before the system-wide settings take effect. Note There is currently no way to enable additional extensions for users who have already logged in. This does not apply for existing users who have installed and enabled their own GNOME extensions. 8.3.3. Locking down enabled extensions You can prevent the user from enabling or disabling extensions by locking down the org.gnome.shell.enabled-extensions key. Procedure Create a local database file for machine-wide settings in /etc/dconf/db/local.d/00-extensions : The enabled-extensions key specifies the enabled extensions using the extensions' UUID ( myextension1@myname.example.com and myextension2@myname.example.com ). Override the user's setting and prevent the user from changing it in /etc/dconf/db/local.d/locks/extensions : Update the system databases: Users must log out and back in again before the system-wide settings take effect. After locking down the org.gnome.shell.enabled-extensions , any extensions installed in ~/.local/share/gnome-shell/extensions or /usr/share/gnome-shell/extensions that are not listed in the org.gnome.shell.enabled-extensions key will not be loaded by GNOME Shell, thus preventing the user from using them. 8.3.4. Setting up mandatory extensions In GNOME Shell, you can provide a set of extensions that the user has to use. Prerequisites The extensions must be installed under the /usr/share/gnome-shell/extensions directory. Procedure Create a local database file for machine-wide settings in /etc/dconf/db/local.d/00-extensions-mandatory : The enabled-extensions key specifies the enabled extensions using the extensions' UUID ( myextension1@myname.example.com and myextension2@myname.example.com ). Override the user's setting and prevent the user from changing it in /etc/dconf/db/local.d/locks/extensions-mandatory : Update the system databases: Users must log out and back in again before the system-wide settings take effect.

Commands:
[org/gnome/desktop/background] picture-uri=' file:///usr/local/share/backgrounds/wallpaper.jpg ' 1 picture-options=' scaled ' 2 primary-color=' 000000 ' 3 secondary-color=' FFFFFF ' 4
List the keys used to configure the desktop background /org/gnome/desktop/background/picture-uri /org/gnome/desktop/background/picture-options /org/gnome/desktop/background/primary-color /org/gnome/desktop/background/secondary-color
dconf update
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd"> <wallpapers> <wallpaper deleted="false"> <name> Background name </name> <filename> full-path-to-the-image </filename> <options> display-option </options> <shade_type> background-shade </shade_type> <pcolor> primary-color </pcolor> <scolor> secondary-color </scolor> </wallpaper> </wallpapers>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd"> <wallpapers> <wallpaper deleted="false"> <name>Company Background</name> <name xml:lang="de">Firmenhintergrund</name> <filename>/usr/local/share/backgrounds/company-wallpaper.jpg</filename> <options>zoom</options> <shade_type>solid</shade_type> <pcolor>#ffffff</pcolor> <scolor>#000000</scolor> </wallpaper> </wallpapers>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd"> <wallpapers> <wallpaper deleted="false"> <name>Company Background</name> <name xml:lang="de">Firmenhintergrund</name> <filename>/usr/local/share/backgrounds/company-wallpaper.jpg</filename> <options>zoom</options> <shade_type>solid</shade_type> <pcolor>#ffffff</pcolor> <scolor>#000000</scolor> </wallpaper> <wallpaper deleted="false"> <name>Company Background 2</name> <name xml:lang="de">Firmenhintergrund 2</name> <filename>/usr/local/share/backgrounds/company-wallpaper-2.jpg</filename> <options>zoom</options> <shade_type>solid</shade_type> <pcolor>#ff0000</pcolor> <scolor>#00ffff</scolor> </wallpaper> </wallpapers>
[org/gnome/desktop/screensaver] picture-uri='file:// /opt/corp/background.jpg '
dconf update
dconf update
systemctl restart gdm.service
[org/gnome/login-screen] logo='/path/to/logo.png'
dconf update
systemctl restart gdm
List all extensions that you want to have enabled for all users enabled-extensions=['myextension1@myname.example.com', 'myextension2@myname.example.com']
dconf update
List all extensions that you want to have enabled for all users enabled-extensions=['myextension1@myname.example.com', 'myextension2@myname.example.com']
Lock the list of mandatory extensions /org/gnome/shell/enabled-extensions
dconf update
List all mandatory extensions enabled-extensions=['myextension1@myname.example.com', 'myextension2@myname.example.com']
Lock the list of mandatory extensions /org/gnome/shell/enabled-extensions
dconf update