Ir al contenido principal

Configuración del GDM

 

Logotipo de Gnome Display Manager

En este nuevo artículo presentaré otros aspectos sobre la configuración del Gnome Display Manager que no fueron tratados en el artículo sobre el cambio del fondo de pantalla

Configuración usando el dconf

Antes que nada explicaré un poco el sistema dconf. Si no estás interesado en saber que es dconf y sólo quieres ver como cambiar la configuración del GDM, te puedes saltar esta sección e ir directamente a la Configuración del GDM.

¿Qué es dconf?

Dconf es un sistema de configuración de bajo nivel y una herramienta de administración de configuraciones. Cuyo principal propósito es proporcionar un back-end para GSettings en plataformas que aún no tienen sistemas de almacenamiento de configuración. Forma parte de GNOME 3.
Una base de datos de dconf consiste en un único fichero en formato binario. El formato en el que se almacenan los datos se llama gvdb (archivo de base de datos GVariant). Es un formato altamente optimizado para realizar lecturas, ya que una secuencia de entrada en el sistema (login) en GNOME 3 consta, literalmente, de miles de lecturas y 0 escrituras. Por tanto, el formato gvdb es un formato simple que almacena un mapeo de cadenas a valores GVariant de una manera que es extremadamente eficiente para búsquedas.
GVariant, por otro lado, es un tipo de datos fuertemente tipado. En programación, un lenguaje fuertemente tipado es aquel que no permite violación de los tipos de datos, es decir, que si se ha definido una variable con un tipo específico, por ejemplo, un número entero, no se puede utilizar para almacenar otro tipo de valor que no sea el definido a menos que se haga una conversión de ese valor en el momento de la asignación.
GVariant es un tipo de datos variable que pueden contener uno o más valores junto con información sobre el tipo al que pertenecen esos valores. Por ejemplo, una GVariant puede contener tipos simples, como números enteros o valores booleanos; o tipos complejos, como una matriz de dos cadenas o un diccionario de pares clave-valor. 
GVariant también es inmutable: una vez que se ha creado, ni su tipo ni su contenido se pueden modificar más. 
GVariant es útil siempre que sea necesario serializar datos, por ejemplo, cuando se envían parámetros de métodos en DBus o cuando se guardan configuraciones mediante GSettings.
GSettings es una clase que proporciona una API de alto nivel para que una aplicación almacene y recupere su propia configuración.

Configuración del GDM

¿A qué vino todo el rollo teórico anterior? Pues a que algunos aspectos de la configuración de GDM están almacenados en la base de datos de dconf.
La configuración de dconf se puede hacer de dos maneras. Una sería añadiendo ficheros con claves de configuración en el directorio /etc/dconf/db/gdm.d y luego recompilando la base de datos de GDM usando dconf-update como superusuario
La segunda sería entrando en el sistema con el usuario GDM y actualizando la configuración usando el comando gsettings. Para poder hacer esto último, hay que crear un perfil de GDM. El fichero con el perfil se ha de crear manualmente en el directorio /etc/dconf/profile. Su nombre debe ser gdm. Por ejemplo:

user-db:user

system-db:gdm

Para entrar en el shell con el usuario gdm debemos ejecutar, con privilegios de superusuario, la siguiente orden en la terminal. 
# machinectl shell gdm@ /bin/bash
Las configuraciones que se pueden hacer pueden consultarse en el archivo /etc/gdm3/greeter-dconf-defaults. Este archivo está dividido en secciones y cada sección contiene pares de clave = valor. El archivo será más o menos así:
# These are the options for the greeter session that can be set 
# through GSettings. Any GSettings setting that is used by the 
# greeter session can be set here.

# Note that you must configure the path used by dconf to store the 
# configuration, not the GSettings path.


# Theming options
# ===============
#  - Change the GTK+ theme
[org/gnome/desktop/interface]
# gtk-theme='Adwaita'
#  - Use another background
[org/gnome/desktop/background]
# picture-uri='file:///usr/share/themes/Adwaita/backgrounds/stripes.jpg'
# picture-options='zoom'
#  - Or no background at all
[org/gnome/desktop/background]
# picture-options='none'
# primary-color='#000000'

# Login manager options
# =====================
[org/gnome/login-screen]
#logo='/usr/share/images/vendor-logos/logo-text-version-128.png'

# - Disable user list
# disable-user-list=true
# - Disable restart buttons
# disable-restart-buttons=true
# - Show a login welcome message
# banner-message-enable=true
# banner-message-text='Welcome'

# Automatic suspend
# =================
[org/gnome/settings-daemon/plugins/power]
# - Time inactive in seconds before suspending with AC power
#   1200=20 minutes, 0=never
# sleep-inactive-ac-timeout=1200
# - What to do after sleep-inactive-ac-timeout
#   'blank', 'suspend', 'shutdown', 'hibernate', 'interactive' or 'nothing'
# sleep-inactive-ac-type='suspend'
# - As above but when on battery
# sleep-inactive-battery-timeout=1200
# sleep-inactive-battery-type='suspend'
La primera sección del archivo, la llamada Theming options, en las pruebas que yo he hecho no he podido configurar nada. Todos los cambios en el GDM acerca del tema hay que manejarlos como expliqué en el artículo Cambiar fondo de pantalla de Gnome Display Manager. Sin embargo, sí que podemos hacer otras cosas.

Poner un logo en la pantalla de entrada

Para pone un logo en la pantalla de entrada podemos, como dijimos, hacerlo de dos maneras: 
  • Compilando dconf:
    En primer lugar crearemos un archivo en /etc/dconf/db/gdm.d llamado 02-logo con el siguiente contenido:
                	
    [org/gnome/login-screen]
    logo='/ruta/a/logo_128x128.png'
    Como explicamos anteriormente, lo que ahora hay que hacer es compilar la base de datos de dconf, para eso ejecutamos como superusuario el comando:
    dconf update
  • Usando gsettings:
    Por otro lado, podemos hacer lo mismo utilizando la herramienta de línea de comandos gsettings. Entraremos primero al shell del usuario gdm, tal y como se comentó antes, y luego ejecutaremos el comando:
    gsettings set org.gnome.login-screen logo /ruta/a/logo_128x128.png
Para especificar la ruta puedes observar que en el caso del fichero de configuración se hace la separación mediante barras diagonales. Sin embargo, en el caso del comando gsettings la ruta se especifica separando las partes con un punto (.).
Una última aclaración, hay que usar un método u otro. En el caso del primero, puedes ver la configuración que has especificado consultando los ficheros en /etc/dconf/db/gdm.d. Si decides utilizar el comando gsettings, no conseguí averiguar dónde se guarda la configuración actual. Además, en las pruebas que he hecho parece que el comando gsettings tiene prioridad sobre lo especificado en el fichero de configuración.

Mostrar un mensaje de bienvenida

Siguiendo la misma tónica que para mostrar el logo, también se puede poner un mensaje de bienvenida en la pantalla de entrada. Podemos hacerlo de las dos maneras que ya conocemos:
  • Compilando dconf:
    Crearemos un archivo en /etc/dconf/db/gdm.d llamado , por ejemplo, 10-wellcome con el siguiente contenido:
    [org/gnome/login-screen]
    banner-message-enable=true
    banner-message-text='Bienvenidos a BitUbuntu'
    Luego volvemos a compilar la base de datos de dconf:
    dconf update
  • Usando gsettings:
    En este caso ejecutaremos dos comandos:
    gsettings set org.gnome.login-screen banner-message-enable true
    gsettings set org.gnome.login-screen banner-message-text 'Bienvenidos a BitUbuntu'

Siguiendo este modo de configurar podemos hacerlo con el resto de directivas que podemos ver en el fichero /etc/gdm3/greeter-dconf-defaults. Podemos también combinar todas las directivas referentes a una sección (login-screen, por ejemplo) en un solo fichero. Eso a gusto de cada uno.

Activación del inicio de sesión automática (Autologin)

Se puede configurar el inicio de sesión automática para un solo usuario de los creados en el sistema. Por supuesto, no se debe hacer para el usuario root (superusuario). En este caso no es necesario recurrir a la configuración usando dconf. Para habilitar el inicio automático, hay que descomentar y modificar las líneas siguientes en el fichero /etc/gdm3/custom.conf:
# Enabling automatic login
AutomaticLoginEnable = true
AutomaticLogin = user1
Cambiando user1 por el nombre de usuario con el que se desea entrar.
Existe también la posibilidad de activarlo usando el entorno gráfico. Abrimos la ventana de Configuración tras realizar una búsqueda en el cuadro de Actividades y seleccionamos Usuarios, tal como se muestra en la imagen.
Lo primero que debemos hacer es darle al botón Desbloquear para poder interactuar con la interfaz de usuario. Nos harán falta las credenciales de superusuario.
Una vez desbloqueada la interfaz, sólo tenemos que seleccionar el usuario con el que queremos iniciar automáticamente la sesión. En el ejemplo de las imágenes sólo hay un usuario y por eso sale su ficha directamente. Si hubiera varios usuarios definidos en el sistema, habría que seleccionar uno y en su ficha, habilitar la opción Iniciar sesión automáticamente:


Evitar que un usuario salga en la lista

Por defecto, el GDM muestra todos los usuarios que tienen un UID (identificador de usuario) mayor de 999. Estos UID corresponden a usuarios normales, que no son de sistema, como el superusuario. Si tienes varios usuarios creados en el ordenador y quieres que uno de ellos no aparezca tenemos que decirle al GDM que se trata de una cuenta de sistema. 

Para hacer esto podemos seguir estos pasos:

  • Editamos el fichero /var/lib/AccountsService/users/<usuario>. Donde <usuario> es el nombre del usuario que queremos que no salga en la lista inicial.
    sudo nano /var/lib/AccountsService/users/<usuario>
  • Buscamos en el fichero la línea que pone SystemAccount y establecemos su valor a true.
    [User]
    Session=
    XSession=
    Icon=/home/fernandogc/.face
    SystemAccount=true
    
    [InputSource0]
    xkb=es

Y con esto es suficiente para que el usuario no aparezca.

Conclusiones

Podemos observar por los dos artículos que la configuración del GDM no es cosa fácil. Yo espero haber ayudado en lo posible para que entiendan como ha de hacerse y en qué sitios buscar cada cosa. Seguro que algo se me ha quedado atrás, pero dejo para ustedes ulteriores investigaciones.


Comentarios

Entradas populares de este blog

Atom ha muerto, viva Zed

El día 8 de junio de 2022, Microsoft anunció que a partir del día 31 de diciembre de este mismo año dejaría de dar soporte para el editor de código Atom .  ¿En qué nos afecta esto a nosotros? Bueno, pues si me han seguido en artículos anteriores saben que tras una comparativa de varios IDEs había decidido utilizar Atom para los ejemplos que tuviera que hacer en este blog. Sobre todo los artículos que prepararé para ilustrar el uso de Laravel . Amén de los miles de programadores que actualmente usan Atom  en sus proyectos, claro. Pero, ¿qué editor de código abierto podremos utilizar para sustituir a Atom ? En el mismo comunicado, Microsoft explicaba que el abandono del proyecto Atom  se debía a que querían volcar todos sus esfuerzos en el Visual Studio Code y, por supuesto, recomendó a los usuarios de Atom la utilización del mismo como alternativa natural. No quiero entrar en las bondades o defectos del Visual Studio Code  si quieres elegirlo como tu IDE para d...

Gestión de la red usando la línea de comandos (III): gestión DNS

  Introducción En este nuevo artículo de la serie vamos a hablar de la gestión del DNS, Domain Name System. El sistema de resolución de nombres nos permite traducir los nombres de los dominios de Internet en direcciones IP númericas. Más difíciles de recordar para los humanos.  El DNS fue concebido a mediados de los años 80. Hasta esa época, los ordenadores conectados a una red disponían de una dirección numérica, la dirección IP. Pero con el tiempo, cada vez había más ordenadores conectados a las redes. Esto hacía que cada vez fuera más difícil recordar las direcciones IP. Sobre el año 1983, Paul Mockapetris , un informático estadounidense, desarrolló un sistema jerárquico de nombres para identificar a los ordenadores conectados a una red. Y, a mediados de la década, ya se convirtió en un estándar. Pueden consultar más información sobre el sistema DNS consultando el artículo de la Wikipedia: Sistema de nombres de dominio . En este artículo, no vamos a explicar como montar un ...

Gestión de la red usando la línea de comandos (IV): monitorización de conexiones

  Introducción En este artículo de la serie de gestión de la red usando la línea de comandos nos vamos a centrar en la monitorización de las conexiones. Para ello vamos a utilizar el comando netstat , que es el decano de los comandos de monitorización de la red. También mostraremos el comando ss , que viene a sustituir a netstat  en las funciones de monitorización de conexiones de red. Asimismo mostraré una breve explicación de los conceptos que se van a trabajar en el artículo. S ockets, puertos, protocolos y procesos En primer lugar vamos a empezar con un poco de teoría para alumbrar lo que luego se explicará en el artículo. Si ya sabes de lo que estamos hablando, sáltate esta sección y ve al meollo del asunto [1] . Nos referiremos al contexto de la conexiones TCP/IP. Dentro de este contexto, cada conexión queda definida por dos endpoints , puntos finales, uno en el host , equipo, que establece la conexión y otro en el host con el que se comunica. Generalmente este último es...