EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Le gestionnaire graphique sddm

Historique

17 avril 2018 : Création de cette page.

Difficulté

Pour : linuxien averti.

 Introduction

Habituellement, vous démarrez une session en mode graphique. La page Cliquez a montré que le script prefdm a déterminé quel est le gestionnaire de connexion graphique à utiliser.

Cette page montre le processus de démarrage lorsque le gestionnaire graphique est sddm.

Important !
SDDM est un gestionnaire de connexion, c'est-à-dire qu'il présente une fenêtre de connexion (login et mot de passe), à ne pas confondre avec le serveur X qui permet aux applications graphiques (et donc aussi à SDDM) de dialoguer avec l'écran, le clavier et la souris.

Haut

 Description

Écran de connexion xdm

SDDM est un gestionnaire de connexion qui convient bien à LXQt. Il permet la connexion et l'authentification de l'utilisateur, mais il permet également de choisir l'environnement avec lequel vous souhaitez travailler (si vous en avez plusieurs d'installés, par ex IceWM et LXQt).
Il permet également d'éteindre ou de redémarrer l'ordinateur.

En travaux de mise à jourTravaux




sddm cherche la liste des sessions dans /etc/X11/wmsession.d et garde en mémoire la dernière session utilisée par chaque utilisateur /var/cache/lightdm/dmrc/xxx.dmrc.

Haut

 Configuration

Le principal fichier de configuration est /etc/lightdm/lightdm.conf. Et il peut y avoir des fichiers complémentaires dans le répertoire /etc/lightdm/lightdm.conf.d
La fenêtre d'acceuil est configurée dans /etc/lightdm/lightdm-xxx-greeter.conf (xxx dépend de l'environnement choisi (gtk, razor ou lxqt)

 /etc/lightdm/lightdm.conf

Par défaut, tous les paramètres sont commentés et sont donc sans effet. Ce sont les valeurs par défaut qui sont prises en compte.

Mageia préfère utiliser des fichiers complémentaires pour définir d'autres valeurs.

 /etc/lightdm/lightdm.conf.d/50-mageia.conf

Ce fichier définit le terminal virtuel où doit s'ouvrir la fenêtre de connexion ainsi que le fichier qui définira la session.

Pour les curieux, survolez : analyse du fichier /etc/lightdm/lightdm.conf.d/50-mageia.conf

[LightDM]
minimum-vt=1

[SeatDefaults]
session-wrapper=/etc/lightdm/Xsession

 /etc/lightdm/lightdm.conf.d/50-mageia-autologin.conf

Ce fichier doit être complété avec le login de l'utilisateur pour réaliser une auto-connexion.

Pour les curieux, survolez : analyse du fichier /etc/lightdm/lightdm.conf.d/50-mageia-autologin.conf

[SeatDefaults]
#dummy-autologin=
autologin-user=

 /etc/lightdm/lxqt-lightdm-greeter.conf

Il permet de définir l'image de fond et la position de la fenêtre de connexion

Pour les curieux, survolez : analyse du fichier /etc/lightdm/lxqt-lightdm-greeter.conf

[General]
greeter-background-image=/usr/share/mga/backgrounds/default.jpg
#loginform-offset-x=50%
#loginform-offset-y=50%

Haut

 Le déroulement de lightdm

prefdm et lookupdm ont lancé la commande /usr/sbin/lightdm

 /usr/sbin/lightdm

Il s'agit d'un programme compilé. Il est donc assez difficile de trouver le déroulement exact.

 /etc/lightdm/Xsession

Ce fichier est lancé d'après /etc/lightdm/lightdm.conf.d/50-mageia.conf avec, comme argument, le nom de la session à ouvrir.
Ce nom de session est défini par la valeur choisie dans la fenêtre de connexion.

Pour les curieux, survolez : Détermination du nom de la session

Lors de la première session d'un utilisateur, il n'y a pas encore de session définie pour cet utilisateur. Lightdm-greeter prend alors un nom de la liste des sessions du répertoire /usr/share/xsessions.
Pour favoriser une session par rapport aux autres, dans le fichier .desktop, il faut donner un nom commençant par une lettre du début de l'alphabet, par exemple Bureau xxx.

Lors des sessions suivantes, lightdm recherche le dernier utilisateur dans /var/lib/lightdm/.cache/*/state (le nom exact du répertoire dépent e la version du greeter). Ensuite, c'est AccountsService qui définit quelle était la session de cet utilisateur, dans le fichier /var/lib/AccountsServices/users/nom_utilisateur. Et c'est cette session qui est proposée par défaut.

Bien sûr, au moment de la connexion, l'utilisateur peut modifier les choix par défaut.

/etc/lightdm/Xsession exécute éventuellement un fichier profile, puis exécute le fichier /etc/X11/Xsession

Pour les curieux, survolez : analyse du fichier /etc/lightdm/Xsession

Le fichier

#!/bin/bash -login

[ -f /etc/profile ] && . /etc/profile
[ -f ~/.profile ] && . ~/.profile

exec /etc/X11/Xsession $*

Haut

 /etc/X11/Xsession

Il est également utilisé par la commande startx ou par les autres gestionnaires de connexion.

Ce script ouvre une session graphique correspondant aux éventuels paramètres spécifiés lors de la commande.
Voici, en résumé, le processus :

ConsoleKit conserve la trace de tous les utilisateurs connectés. Il est utilisé par différentes applications pour interagir avec les modifications pouvant intervenir, telles qu'un changement d'utilisateur par exemple

Pour les curieux, survolez : un peu plus de détails

* gestion des paramètres nationaux avec /etc/profile.d/10lang.sh et /etc/sysconfig/i18n
* création ou vidage du journal de session $HOME/.xsession-errors
* fond d'écran rouge, si c'est root qui se connecte
* définit la forme du curseur : patienter
* assemble toutes les ressources X de l'utilisateur et du système (icônes, mappage du clavier...) aux ressources système
* définition du fichier d'initialisation de console-kit (suivi des utilisateurs, des sessions, des sièges ...)
* définition du fichier de lancement du navigateur internet
* définition du bureau : celui donné en argument, sinon celui du fichier $HOME/.desktop, sinon celui du fichier /etc/sysconfig/desktop
* définition de la session : la même que le bureau; si, à ce stade, aucun bureau n'est défini, lance la commande chksession -F
* lancement des scripts du répertoire /etc/X11/xinit.d, avec chaque fois le nom de la session comme argument.
Le contenu du répertoire dépend de votre installation. Voici ce que j'ai, avec une installation minimale et avec le bureau IceWM :

  02XIM : interface de UIM, pour la gestion des langues japonaise et chinoise
  canberra-gtk-module.sh : ajoute canberra-gtk-module à la variable $GTK_MODULES
  menu : migration des anciens menus vers les nouveau, si besoin
  mgaapplet (appliquette signalant des mises à jour) : exécute /usr/bin/mgaapplet, uniquement avec les bureaux IceWM et Fluxbox
  numlock : active le verrouillage numérique en mode graphique, s'il est déjà activé en mode texte
  s2u : active le démon s2u (communication du système vers l'utilisateur, avec dbus)
  xdg-user-dirs-update : création ou mise à jour des répertoires de l'utilisateur
  xdg-user-dirs-update-gtk : n'est utilisé que pour les bureaux autres que GNOME, KDE et xfce4
* lancement du bureau, au sein de ConsoleKit, selon le cas :
  bureau failsafe : un simple terminal (essai, dans l'ordre : rxvt, xterm, xvt, twm)
  le bureau est défini : lancement de ce bureau
  le bureau n'est pas défini default : essai de diverses solutions : une session utilisateur est définie, des clients utilisateurs sont définis, recherche d'une session avec chksession -F, icewm, icewm-light, twm, xsm

Haut

 En résumé

/usr/sbin/lightdm

/usr/sbin/lightdm définit le bureau à ouvrir à partir de la fenêtre de connexion

  1. le bureau choisi dans la fenêtre de connexion, si vous ne laissez pas la valeur Par défaut
  2. à défaut, lors d'une première connexion, celui donné par le répertoire /usr/share/xsessions,
  3. à défaut, lors d'une connexion suivante celui qui est défini par AcountsService

Remarque : la fenêtre de connexion garde en mémoire le dernier utilisateur.

/etc/lightdm/Xsession

Il prépare la commande exec /etc/X11/Xsession Nom_du_Bureau.

/etc/X11/Xsession

Xsession assemble toutes les ressources X, définit la session à ouvrir, lance les commandes du répertoire /etc/X11/xinit.d et enfin ouvre votre session avec son bureau.

Haut

 Auto-connexion

Si vous êtes le seul utilisateur de l'ordinateur et que personne d'autre ne risque de l'utiliser, vous pouvez vous passer de la fenêtre de connexion et de l'obligation de fournir le mot de passe Vous serez automatiquement connectés.

Pour ceci, en tant que root, vous éditez le fichier /etc/lightdm/lightdm.conf.d/50-mageia-autologin.conf. Complétez avec votre nom de login

Haut