(Probado en Ubuntu Gnome Shell 16.04+)
Dos caminos. Si desea saber qué está haciendo exactamente, siga la Solución n. ° 1 . Si desea que un solo script haga todo por usted, siga la Solución n. ° 2 (Todo lo que hace es automatizar la Solución n. ° 1)
Solución 1
Información de fondo: El fondo de inicio de sesión de Gnome no es un parámetro que puede cambiar directamente (¡extraño!). Está presente en el archivo CSS de Gnome Shell que está presente en el archivo binario. Por lo tanto, debe extraer el archivo binario, modificarlo y reemplazar el nuevo binario con un archivo antiguo.
Paso 1: extracción del archivo binario de shell Gnome
Ejecute el siguiente script extractgst.sh
para extraer el tema de shell Gnome al ~/shell-theme
directorio
#!/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
Paso2: Modificándolo
- Copie su imagen de fondo a esta carpeta
~/shell-theme/theme
.
- Crear archivo
~/shell-theme/theme/gnome-shell-theme.gresource.xml
con contenido
- Reemplace el nombre de archivo con el nombre de archivo de su imagen de fondo
Ahora, abra el gnome-shell.css
archivo en el directorio y cambie la #lockDialogGroup
definición de la siguiente manera:
#lockDialogGroup {
background: #2e3436 url(filename);
background-size: [WIDTH]px [HEIGHT]px;
background-repeat: no-repeat;
}
Establezca el nombre de archivo para que sea el nombre de la imagen de fondo y el tamaño de fondo a su resolución.
Paso 3: Crear un nuevo tema binario de shell Gnome y reemplazar los existentes
Dentro del directorio del tema, ejecute
glib-compile-resources gnome-shell-theme.gresource.xml
Obtendrá un archivo binario. Cópialo a
/usr/share/gnome-shell
Ahora reinicie GDM usando
service gdm restart
Si no funciona o se atascó, reinicie su computadora para ver su nuevo fondo de pantalla de inicio de sesión :))
Solución 2
Ok, como se prometió, hay una manera más simple de automatizar todo esto. Simplemente guarde este script como login-background.sh
WORKDIR=~/tmp/gdm-login-background
GST=/usr/share/gnome-shell/gnome-shell-theme.gresource
GSTRES=$(basename $GST)
mkdir -p $WORKDIR
cd $WORKDIR
mkdir theme
for r in `gresource list $GST`; do
gresource extract $GST $r >$WORKDIR$(echo $r | sed -e 's/^\/org\/gnome\/shell\//\//g')
done
cd theme
cp "$IMAGE" ./
echo "
#lockDialogGroup {
background: #2e3436 url(resource:///org/gnome/shell/theme/$(basename $IMAGE));
background-size: cover;
background-repeat: no-repeat;
}" >>gnome-shell.css
echo '<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">' >"${GSTRES}.xml"
for r in `ls *.*`; do
echo " <file>$r</file>" >>"${GSTRES}.xml"
done
echo ' </gresource>
</gresources>' >>"${GSTRES}.xml"
glib-compile-resources "${GSTRES}.xml"
sudo mv "/usr/share/gnome-shell/$GSTRES" "/usr/share/gnome-shell/${GSTRES}.backup"
sudo mv "$GSTRES" /usr/share/gnome-shell/
rm -r $WORKDIR
if [ "$CREATED_TMP" = "1" ]; then
rm -r ~/tmp
fi
Ejecute el script usando
IMAGE=~/Bat.jpg sh login-background.sh
Ahora reinicie gdm usando service gdm restart
o reinicie la computadora portátil para su nuevo fondo de inicio de sesión :))
Referencias:
https://wiki.archlinux.org/index.php/GDM
https://bbs.archlinux.org/viewtopic.php?id=197036