Bonjour,
Je me suis fait un petit script pour modifier le fond d'écran de l'écran de connexion de
GDM. Il fonctionne bien sur Ubuntu 20.04.
Il y a besoin d'installer un paquet (
libglib2.0-dev-bin) et il faut s'assurer que l'image qui servira de fond d'écran pour
GDM soit placée au même endroit que le script et qu'elle soit renommer en :
noise-texture.png.
J'ai fait en sorte que mon image soit dans le format
PNG puisque le nom est noise-texture.
png. Je suppose qu'on peut mettre du
JPG mais dans ce cas, dans le script, il faut penser à changer le nom de l'extension dans la variable en fonction du format de votre image.
Si l'image a une extension en
.jpg.
wallpaper=noise-texture.png
devient
wallpaper=noise-texture.jpg
Également, la taille de mon image est de
1920x1080px. Il est tout à fait possible d'en choisir une autre mais il faut penser à renseigner les valeurs souhaitées dans le script, vers le début dans la partie
modified_part (par exemple :
1680 px 1050 px ou
1024 px 768 px etc).
J'ai appelé mon script
custom_gdm3.sh. Ne pas oublier de le rendre exécutable (chmod +x
custom_gdm3.sh). Il se lance en tant qu'utilisateur normal (
non root) mais demandera
une élévation des privilèges à la fin, pour copier les fichiers nécessaires dans les répertoires concernés, à savoir :
/usr/share/gnome-shell
/usr/share/gnome-shell/theme
ainsi que pour exécuter la commande
update-alternatives gdm3-theme.gresource
#!/bin/bash
## Add personal wallpaper to gdm3 login screen
## Tested with Ubuntu 20.04
##
## Needs the following package : libglib2.0-dev-bin
#
if [ ! $(command -v glib-compile-resources) ]; then
printf '%s\n' "The following package must be installed to continue : libglib2.0-dev-bin
You can run the following command to a terminal :
sudo apt install libglib2.0-dev-bin"; exit 1
fi
workdir=${PWD}
wallpaper=noise-texture.png # Place your picture in ${wordir} and rename it to 'noise-texture.png'
gst=/usr/share/gnome-shell/gnome-shell-theme.gresource
css=gdm3.css
original_part="#lockDialogGroup {\n background-color: #41494c; }"
modified_part="#lockDialogGroup {\n background: #41494c url(file:///usr/share/gnome-shell/theme/${wallpaper});\n background-size: 1920 px 1080 px;\n background-repeat: none; }"
# If not present, create 'theme' directory
#
if test ! -d ${workdir}/theme; then
mkdir -p ${workdir}/theme
fi
# Copying Yaru-dark theme to 'theme' directory
#
if test -d /usr/share/themes/Yaru-dark; then
cp /usr/share/themes/Yaru-dark/gnome-shell/* ${workdir}/theme/
else
printf '%s\n' "No Yaru-dark directory found!
Maybe your operating system is not Ubuntu..?"; exit 1
fi
# gdm3 picture file 'noise-texture.png' must be found in ${workdir} directory
#
if test -f ${workdir}/${wallpaper}; then
cp -vf ${workdir}/${wallpaper} ${workdir}/theme/${wallpaper}
else
printf '%s\n' "'${wallpaper}' file not found!"; exit 1
fi
# Extract resources
#
for r in `gresource list $gst`; do
gresource extract $gst $r 2>/dev/null >$workdir/${r#\/org\/gnome\/shell/}
done
# Apply customization to 'gdm3.css' file
#
sed -i -z "s%${original_part}%${modified_part}%" "${workdir}/theme/${css}"
# Make "gnome-shell-theme.gresource.xml" file
#
FILES=$(find "theme" -type f -printf "%P\n" | xargs -i echo " <file>{}</file>")
cat <<EOF >"${workdir}/theme/gnome-shell-theme.gresource.xml"
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">
${FILES}
</gresource>
</gresources>
EOF
# Compile gresource file
#
printf '%s\n' "Compile gnome-shell-theme.gresource"
cd ${workdir}/theme
glib-compile-resources gnome-shell-theme.gresource.xml && \
printf '%s\n' "The file 'gnome-shell-theme.gresource' was successfully created!
"
###
## The following operations will be done with administrator rights
#
printf '%s\n' "#####
### The following operations will be done with administrator rights
#####
"
# Save original 'gnome-shell-theme.gresource'
#
printf '%s\n' "Saving original 'gnome-shell-theme.gresource' to 'gnome-shell-theme.gresource.backup'"
if test -f /usr/share/gnome-shell/gnome-shell-theme.gresource; then
sudo cp /usr/share/gnome-shell/gnome-shell-theme.gresource{,.backup}
printf '%s\n' "Done !
"
fi
# Copy your picture renamed 'noise-texture.png' to /usr/share/gnome-shell/theme
#
printf '%s\n' "Copy your picture as 'noise-texture.png' to /usr/share/gnome-shell/theme"
sudo cp ${wallpaper} /usr/share/gnome-shell/theme &&
printf '%s\n' "Done !
"
# Copy the custom 'gnome-shell-theme.gresource' to /usr/share/gnome-shell
#
printf '%s\n' "Copy the custom 'gnome-shell-theme.gresource' to /usr/share/gnome-shell/theme"
sudo cp ${workdir}/theme/gnome-shell-theme.gresource /usr/share/gnome-shell &&
printf '%s\n' "Done !
"
# Make new gnome-shell-theme.gresource as default alternative
#
printf '%s\n' "Make new gdm3.css the new default alternative"
sudo update-alternatives --set gdm3-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource >/dev/null &&
printf '%s\n' "Done !
"
# End operations
printf '%s\n' "Restart you pc and enjoy :)"
Normalement, il ne devrait pas y avoir de problème. Au cas où, on peut toujours restaurer le fichier original avec cette commande :
sudo cp /usr/share/gnome-shell/gnome-shell-theme.gresource.backup /usr/share/gnome-shell/gnome-shell-theme.gresource
et éventuellement, si on veut retrouver les couleurs originales d'Ubuntu :
sudo update-alternatives --set gdm3-theme.gresource /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource
Voila ! Si ça peut servir à quelqu'un. N'hésiter pas à l'améliorer ; je sais que dans le coin, il y a des pros du bash. 😛