====== Fond d'écran de connexion KDM ======
Une opération aussi banale la modification de l'écran de connexion (login screen wallpaper ou background) peut virer au casse-tête.
===== Thème ou pas =====
L'écran de connexion de KDM peut être contrôlé par un thème ou pas.
Ce choix de configuration se fait classiquement : Configuration du système > Écran de connexion > Général. Puis cocher ou décocher la case "Utiliser un accueil à thème".
Si l'on souhaite que notre connexion soit contrôlée par un thème (themed), changer le fond d'écran nécessite de créer un nouveau thème. Rien que ça ! En effet, le choix d'une image de fond parmi plusieurs n'est pas une option de configuration d'un thème de connexion :-(
===== Sans thème =====
La manière la plus simple d'imposer un fond d'écran de connexion est donc de désactiver le thème de connexion. Cette désactivation redonne le contrôle à l'utilisatrice sur les onglets "Boîte de dialogue" et "Fond d'écran".
L'avantage est qu'on impose facilement le fond d'écran souhaité. L'inconvénient est qu'on est limitée aux paramètres proposés par l'interface de configuration. Les thèmes offrent plus de possibilités de configuration.
===== Avec thème =====
Si l'on a choisi une connexion à thème, l'onglet "Thème" permet de sélectionner le thème voulu parmi ceux qui sont installé sur son système. On peut également en télécharger de nouveaux, depuis ce même onglet. C'est bien gentil, mais cela ne résout pas notre problème initial : imposer un fond d'écran de connexion…
==== Cloner et adapter un thème existant ====
L'adaptation d'une structure de données dont on ne connaît pas la logique intime reste un exercice hasardeux.
Les thèmes KDM disponible sur votre système se trouvent dans le répertoire "/usr/share/kde4/apps/kdm/themes/".
Chaque thème se présente comme un répertoire. Attention : le nom du répertoire n'est pas toujours celui qui apparaît dans l'interface graphique de sélection des thèmes !
En première approximation, un thème se compose de :
* un fichier .desktop
* un fichier .xml
* plusieurs fichiers d'images (png, jpeg, svg)
Puisqu'on souhaite imposer une image de fond, on choisira un thème qui en contient une (généralement background.xxx). En effet, certains thèmes utilisent d'autres techniques pour générer le fond d'écran.
Le contrôle de connexion étant global au système, il faut intervenir avec les droits de super-utilisatrice (ou tout simplement en root). Il faut :
- dupliquer le thème retenu
- changer l'image de fond d'écran
- adapter le fichier .desktop
- adapter le fichier .xml
=== Dupliquer le thème ===
La duplication doit respecter précisément les droits sur les fichiers. On utilisera donc une commande qui les respecte :
# cp -a
=== Changer l'image ===
Si on veut limiter les risques, fera en sorte que l'image que l'on veut imposer en fond d'écran de connexion ait les mêmes caractéristiques techniques que l'image originale. Si on respecte cette contrainte, on conservera le nom du fichier original.
=== Adapter le fichier .xml ===
Au minimum, on renommera le fichier .xml pour qu'il reflète le nom de notre nouveau thème.
Ce fichier étant le cœur du thème, c'est là que l'on effectuera les adaptations les plus importantes. Mais c'est également le plus "fragile". Si l'on a remplacé l'image de fond par une image techniquement équivalente et que l'on a conservé le nom du fichier image, on garde le contenu du fichier xml en l'état ;-)
=== Adapter le fichier .desktop ===
C'est dans ce fichier que l'on indiquera le nouveau que l'on a donnée au fichier xml (paramètre //Greeter//) et que l'on indiquera le nom sous lequel notre thème sera présenté dans l'interface graphique de sélection des thèmes de connexion.
Le nom donné au répertoire contenant le thème est indifférent mais on s'emploiera à garder une unité entre le nom du réperrtoire, le nom usuel (paramètre //Name//) et le nom du fichier xml,
=== Adapter le fichier screenshot.png ===
Ce fichier donne un aperçu votre écran de connexion. La création de ce fichier soulève le problème classique de "la poule et l'œuf". On devrai le fournir alors que l'on est en train de créer le thème, mais on ne peut pas faire de capture d'image de l'écran de connexion (screenshot) tant qu'on n'a pas activé ce thème !
On commence donc pas laisser tel quel le fichier screenshot du thème que l'on a cloné. On viendra le modifier dès qu'on aura activé le thème et fait une capture d'écran.
Deuxième problème, lorsque l'ordi affiche l'écran de connexion, on n'est pas connectée! On n'a donc accès à aucune application permettant de faire la capture d'écran… Il faut donc ruser…
Si la suite vous semble trop compliquée, vous pouvez en rester là. L'image d'aperçu de ne sera pas fidèle à votre thème mais ça ne l'empêchera pas de fonctionner.
== Capture d'écran de connexion ==
Source : [[https://www.howtoforge.com/how-to-take-a-screenshot-of-your-login-screen|How To Take A Screenshot Of Your Login Screen]] (en), (howtoforge.com)
Pour pouvoir utiliser cette procédure vous devez avoir préalablement installé certains paquetages. Le plus simple et d'ouvrir un terminal et de lancer les commandes :
$ sudo apt-get update
$ sudo apt-get install imagemagick xnest
La procédure utilise les terminaux virtuels :
- se déconnecter de sa session (affiche l'écran de connexion)
- basculer sur un autre terminal virtuel; par exemple "1" : Ctrl + Alt + F1, qui affiche une console texte
- revenir au terminal virtuel contenant l'écran de connexion (normalement le n°7, Ctrl + Amt + F7) et retenir son numéro (balayer tous les numéros F1 à F12 pour trouver le bon)
- rebasculer sur la console texte
- s'identifier
- lancer la commande capture d'écran décrite ci-après
La commande permettant d'effectuer la capture d'écran reprend la structure suivante :
chvt 7; sleep 5; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 import -window root /tmp/my_login_screenshot.png
Il faudra remplacer :
* le nombre qui suit "chvt" par celui du terminal virtuel contenant l'écran de login (découvert précédemment)
* /tmp/my_login_screenshot.png par ce que vous voudrez.
Vous disposez alors d'un fichier de capture d'écran que vous pourrez copier dans le répertoire de votre thème en remplacement de la capture d'écran du thème cloné. Conserver l'ancien nom du screenshot, généralement //screenshop.png//, sans aucune référence au nom du thème.
==== Créer un thème ====
Sources : [[https://docs.kde.org/stable4/fr/kde-workspace/kdm/kdm-themes.html|Création de thèmes pour l'écran de bienvenue kdm]] (kde.org)
Les [[https://docs.kde.org/stable4/fr/kde-workspace/kdm/kdm-themes.html|contraintes à respecter]] pour la création d'un thème KDM sont décrites dans la documentation.
La création à partir de rien d'un thème est un exercice moyennement compliqué de programmation déclarative. Si cela vous tente, la source citée contient toutes les informations nécessaire. À lire tranquillement, à tête reposée, puis à relire. Les principes sont simples même si la syntaxe est lourde. La consultation de [[fond_d_ecran_de_connexion_kdm#Cloner et adapter un thème existant|fichiers xml de thèmes existants]] n'est pas inutile ;-)
On regrettera l'absence d'un outil de génération de thème. C'est la vie…
Les utilisatrice d'éditeurs XML s'affranchiront de cette lourdeur et bénéficieront d'une validation grâce à la dtd.