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

Añadir disco en caliente a un Ubuntu virtualizado

  En este artículo vamos a explicar cómo aumentar un volumen de discos en una máquina virtual. Pongamos por caso que tenemos un servidor que se nos ha quedado corto de espacio en disco y que no podemos parar. La solución es añadir un nuevo disco virtual a nuestra máquina y, con ese espacio añadido, extender el volumen de discos.  En principio, este es un proceso en el que no hay pérdida de datos. Sin embargo, es conveniente que exista una copia de seguridad antes de llevarlo a cabo como precaución. He de decir que yo lo he hecho en un par de ocasiones y no ha habido problemas con la máquina virtual ni con los datos. De hecho, los usuarios ni se enteraron de que se amplió el espacio en disco. Consideraciones iniciales En primer lugar, este es un proceso que sólo se puede llevar a cabo en una máquina virtual. Para añadir un disco nuevo en una máquina física hay que pararla y, por lo tanto, no se puede añadir en caliente. Cierto es que la parte de extender el volumen sí que se realiza igu

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 desarrollo predeterm

Zed: ahora un editor de código de código abierto

  Zed: ahora un editor de código de código abierto Introducción Como ya les comenté en un artículo anterior  Atom ha muerto, viva ZED , Microsoft dejó de dar soporte para el editor de código Atom en el año 2022 en beneficio del Visual Studio Code . En aquel artículo les comentaba que para mi el sucesor de Atom era Zed pues era un editor que se estaba creando por el mismo grupo de trabajo que creó el Atom . Además de que parecía que iba a seguir con la misma filosofía con la que nació  Atom . El editor Zed, una descripción de sus características Zed es un editor de código desarrollado en Rust que, como deberíamos saber, es un lenguaje de programación de sistemas que se enfoca en la seguridad, el rendimiento y la concurrencia. Pues, como decíamos, Zed acaba de dar el salto a ser de código abierto bajo la licencia GPL v3 . Este cambio no solo representa una nueva era para Zed , sino que también nos dirige a un nuevo mundo de colaboración y desarrollo en el ámbito de la programación.