The simple procedure for changing the login screen background image when using GDM display manager in Arch Linux
(From Arch Linux wiki page)
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
gst=/usr/share/gnome-shell/gnome-shell-theme.gresource
workdir=${HOME}/shell-theme
for r in `gresource list $gst`; do
r=${r#\/org\/gnome\/shell/}
if [ ! -d $workdir/${r%/*} ]; then
mkdir -p $workdir/${r%/*}
fi
done
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-today.svg</file>
<file>checkbox-focused.svg</file>
<file>checkbox-off-focused.svg</file>
<file>checkbox-off.svg</file>
<file>checkbox.svg</file>
<file>dash-placeholder.svg</file>
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
<file>icons/message-indicator-symbolic.svg</file>
<file>icons/pointer-double-click-symbolic.svg</file>
<file>icons/pointer-drag-symbolic.svg</file>
<file>icons/pointer-primary-click-symbolic.svg</file>
<file>icons/pointer-secondary-click-symbolic.svg</file>
<file>key-enter.svg</file>
<file>key-hide.svg</file>
<file>key-layout.svg</file>
<file>key-shift-latched-uppercase.svg</file>
<file>key-shift.svg</file>
<file>key-shift-uppercase.svg</file>
<file>no-events.svg</file>
<file>noise-texture.png</file>
<file>filename</file>
<file>no-notifications.svg</file>
<file>pad-osd.css</file>
<file>process-working.svg</file>
<file>toggle-off-dark.svg</file>
<file>toggle-off-hc.svg</file>
<file>toggle-off.svg</file>
<file>toggle-on-dark.svg</file>
<file>toggle-on-hc.svg</file>
<file>toggle-on.svg</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.
My (Karl) insertion: However, it doesn't quite end there, and another Arch user added the following:
Configuration is not persistent and will be gone after gdm update. Needs to be rewritten to enable user-themes gnome-shell extension for gdm user and use custom theme and set gsetting to use that theme
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.