- Chooser: un programa usado para seleccionar un host (equipo) remoto para administrar una pantalla de forma remota (gdm-host-chooser).
- Greeter: la ventana gráfica de inicio de sesión. Proporcionado por Gnome Shell.
- PAM: módulo de autentificiación conectable (Pluggable Authentification Module). Encargado de verificar que el usuario que intenta acceder está definido en el sistema y dispone de las credenciales de acceso correctas.
- X Display Manager Control Protocol (XDMCP): es el protocolo utilizado para manejar las peticiones, y por tanto la comunicación, entre el servidor gráfico y el gestor de entrada.
Desgraciadamente, la configuración de GDM no es tan fácil como debería ser. Por ejemplo, desde la versión 3.16 de Gnome los archivos de temas de Gnome Shell se almacenan en binario (gresource). Esto hace que la edición de los temas sea más complicada. En este momento no existe una utilidad gráfica que permita modificar estos temas. Yo, personalmente, he intentado cambiar el fondo de GDM usando Gnome Tweaks (Retoques de Gnome). Un programa que nos permite personalizar la apariencia del Gnome Shell. Sin embargo, en la sección de apariencia de esta herramienta se puede observar que no es posible seleccionar un tema para Gnome Shell. Por lo tanto, deberemos realizar los retoques que queramos para el GDM usando otros métodos.
Cambiar el fondo de pantalla del GDM
Para poder cambiar el fondo de pantalla del GDM podemos utilizar dos métodos. Uno más manual y otro por medio de un script que recomiendo por su facilidad. Explico el método manual porque así podremos ver las tripas del tema de Gnome Shell, y también podremos realizar el cambio del fondo de pantalla si nos fallara el script en las siguientes actualizaciones de Ubuntu.
Método manual
Lo primero que debemos hacer para poder cambiar el fondo de pantalla utilizando este método es extraer el tema del Gnome Shell del archivo binario. Lo podemos hacer de una forma manual pura o asistiéndonos de un script para la extracción.
El método manual puro implica la utilización del comando gresource. En Ubuntu 20.04 por defecto viene instalado el tema Yaru, por lo que el archivo de recursos que debemos modificar será el que se encuentra en /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource. Si tuviéramos otro tema instalado debemos utilizar el archivo de recursos correspondiente a ese tema. Todas las operaciones para la extracción del contenido de este archivo de recursos se harán en la terminal. Por lo tanto, debemos abrir una usando la secuencia CTRL+ALT+T.
A continuación guardaremos una copia de seguridad del tema original en un directorio de nuestro home, que será donde realizaremos la extracción:
mkdir /home/usuario/shell-theme
cp /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource /home/usuario/shell-theme
Una vez hecho esto, nos posicionamos en la carpeta y examinamos el contenido del fichero de recursos usando:
gresource list gnome-shell-theme.gresource
Se nos mostrará algo así como esto:
Con esto en pantalla debemos recrear la estructura de directorios en nuestra carpeta temporal. Obviaremos /org/gnome/shell y comenzaremos a partir de theme. mkdir -p theme/Yaru-dark
mkdir -p theme/Yaru
mkdir -p theme/icons/scalable/actions
mkdir -p theme/icons/scalable/status
Una vez que tenemos creada la estructura de directorios, procederemos a la extracción del contenido del fichero de recursos (un comando para cada uno de los ficheros):
gresource extract gnome-shell-theme.gresource /org/gnome/shell/theme/Yaru-dark/gnome-shell-high-contrast.css > theme/Yaru-dark/gnome-shell-high-contrast.css
gresource extract gnome-shell-theme.gresource /org/gnome/shell/theme/Yaru-dark/gnome-shell.css > theme/Yaru-dark/gnome-shell.css
gresource extract gnome-shell-theme.gresource /org/gnome/shell/theme/calendar-today.svg > theme/calendar-today.svg
.
.
.
gresource extract gnome-shell-theme.gresource /org/gnome/shell/theme/toggle-on.svg > theme/toggle-on.svg
Todo este trabajo manual nos lo podemos ahorrar si utilizamos un script que, tras mucho buscar, he obtenido de la página de ArchWiki. El script lo crearemos en una carpeta temporal y le daremos los permisos de ejecución necesarios. Es decir, crearemos un fichero llamado extractgst.sh y le pondremos el contenido que se detalla a continuación (Sólo lo que está a partir de la línea). Asignaremos los permisos por terminal con la orden chmod 775 extractgst.sh (si estamos en el mismo directorio que el script).
extractgst.sh
#!/bin/sh
gst=/usr/share/gnome-shell/theme/Yaru/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
Este script revisa el contenido del fichero /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource y genera un directorio en el home del usuario llamado shell-theme con todo el contenido del tema del Gnome Shell. La estructura de esa nueva carpeta será:
Una vez generado el directorio con el tema, entramos y en el directorio theme, copiamos la imagen que queremos poner como fondo del GDM. Debe estar en formato JPG o PNG:
cp /ruta a la imagen/fondo-gdm.jpg ~/shell-theme/theme
A continuación editamos el fichero gdm3.css y buscamos dentro de él la cadena de caracteres #lockDialogGroup.
Vemos que esa sección tiene el siguiente contenido:
#lockDialogGroup {
background-color: #4f194c; }
Sustituimos esa sección por este otro valor:
#lockDialogGroup {
background: url('resource:///org/gnome/shell/theme/fondo-gdm.jpg');
background-size: cover; }"
Ahora llega el momento de volver a compilar el fichero de recursos. Para eso utilizaremos el comando glib-compile-resources. Sin embargo, antes de la compilación debemos crear un fichero XML con la definición del contenido del fichero de recursos. El fichero debe contener todos los ficheros de nuestro árbol y debería quedar más o menos así.
<?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>gdm3.css</file>
<file>Yaru-dark/gnome-shell-high-contrast.css</file>
<file>Yaru-dark/gnome-shell.css</file>
<file>Yaru/gnome-shell-high-contrast.css</file>
<file>Yaru/gnome-shell.css</file>
<file>icons/scalable/actions/pointer-double-click-symbolic.svg</file>
<file>icons/scalable/actions/pointer-drag-symbolic.svg</file>
<file>icons/scalable/actions/pointer-primary-click-symbolic.svg</file>
<file>icons/scalable/actions/pointer-secondary-click-symbolic.svg</file>
<file>icons/scalable/status/eye-not-looking-symbolic.svg</file>
<file>icons/scalable/status/eye-open-negative-filled-symbolic.svg</file>
<file>icons/scalable/status/keyboard-caps-lock-filled-symbolic.svg</file>
<file>icons/scalable/status/keyboard-enter-symbolic.svg</file>
<file>icons/scalable/status/keyboard-hide-symbolic.svg</file>
<file>icons/scalable/status/keyboard-layout-filled-symbolic.svg</file>
<file>icons/scalable/status/keyboard-shift-filled-symbolic.svg</file>
<file>icons/scalable/status/message-indicator-symbolic.svg</file>
<file>no-events.svg</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>
<file>fondo-gdm.jpg</file>
</gresource>
</gresources>
Con el fichero de definición ya preparado procedemos a compilar el recurso:
glib-compile-resources gnome-shell-theme.gresource.xml
Puede ser que te de un error, en ese caso debes instalar la librería libglib2.0-dev-bin para tener disponible la herramienta de compilación.
Tras la compilación se habrá creado un fichero con el nombre gnome-shell-theme.gresource. Este fichero tendremos que copiarlo a la ruta del tema.
sudo cp gnome-shell-theme.gresource /usr/share/gnome-shell/Yaru/gnome-shell-theme.gresource
Finalmente nos queda sólo reiniciar el servicio GDM (sudo service gdm3 restart). Sin embargo, reiniciar el GDM cerrará todas las sesiones abiertas en el sistema, así que asegúrate de haber grabado lo que tengas pendiente. Quizás prefieras reiniciar el equipo.
Usando un script para la configuración
Todo este trabajo se puede simplificar usando un script que lo haga automáticamente por nosotros. Este script existe y, de casualidad, lo encontré en esta página https://github.com/thiggy01/change-gdm-background. Los pasos a seguir están explicados en la propia página de GitHub, aunque en inglés. Para facilitar las cosas a aquellos que no entiendan ese idioma los pondré a continuación. Antes que nada he de advertirles que el script sólo funciona con Ubuntu 20.04, 21,10 y 21.04.
Prerrequisitos
En primer lugar hay que instalar la librería libglib2.0-dev-bin, si no la tienes ya instalada.
sudo apt install libglib2.0-dev-bin
Lo siguiente es descargar el script desde la terminal:
wget github.com/thiggy01/change-gdm-background/raw/master/change-gdm-background
Y, por último, hacerlo ejecutable:
chmod +x change-gdm-background
Modo de usarlo
Suponiendo que estamos en la misma carpeta que el script, hay que ejecutarlo con privilegios de superusuario, por lo que lo haremos con el siguiente comando:
sudo ./change-gdm-background /ruta-a-la-imagen
Si tras la ejecución se muestra el mensaje login image sucessfully changed, entonces, cuando reinicies el GDM o el ordenador, se mostrará la imagen que se seleccionó como fondo de pantalla del GDM.
Se puede restaurar la configuración original del tema de GDM usando el script de esta manera:
sudo ./change-gdm-background --restore
Por último, nos queda añadir que si en vez de querer poner un fondo de pantalla lo que queremos es cambiar el color del fondo actual, lo podemos hacer también con este script. Lo que debemos pasar como parámetro el código hexadecimal del color que queremos en vez de la ruta de la imagen. De este modo la línea de comandos quedaría de la siguiente manera:
sudo ./change-gdm-background \#código_color_hexadecimal
El formato de color hexadecimal debería ser de seis caracteres como \#40f46a o de tres caracteres como \#3df.
Conclusión
Bueno, ya conocemos la forma de cambiar el fondo de pantalla del GDM. No ha sido fácil, pero vale la pena si queremos darle un aspecto más personalizado a nuestro Ubuntu.
Antes de terminar debo hacer una aclaración, al principio del artículo digo que no existe una utilidad gráfica para realizar esta personalización. Sin embargo, escribí eso no sabía que existía el script change-gdm-background. Su autor dice que ha creado de una GUI que se puede descargar y compilar desde aquí. Yo no la he probado, lo dejo ahí para aquel que tenga curiosidad.
Comentarios
Publicar un comentario