,
Le 19/02/2019 à 11:42 dans /Journal/2017/

Personnaliser l'écran de connexion d'OpenBSD : xenodm

OpenBSD propose par défaut un écran de connexion géré par xenodm, tout comme le fait aussi gdm, kdm ou lightdm. Cependant, son apparence par défaut laisse à désirer...

Puisque je n'ai pas forcément envie d'installer un autre gestionnaire de connexion, c'est parti pour configurer xenodm.

Tout d'abord, notez que la configuration se déroule dans un fichier /etc/X11/xenodm/Xresources. Puisque je ne veux pas risquer que ma configuration soit écrasée par une mise à jour, je vais la réaliser dans un autre fichier que celui par défaut.

doas cp /etc/X11/xenodm/Xresources /etc/X11/xenodm/Xresource-custom

Toutes les modifications se feront dans /etc/X11/xenodm/Xresource-custom. Je le précise dans la configuration de xenodm. Pour ça, on édite le fichier /etc/X11/xenodm/xenodm-config :

! DisplayManager*resources:  /etc/X11/xenodm/Xresources
 DisplayManager*resources:  /etc/X11/xenodm/Xresources-custom

Avant de configurer, je voudrais changer le fond derrière le widget de connexion. Il faut pour ça éditer le fichier /etc/X11/xenodm/Xsetup_0 pour y mettre par exemple une commande remplissant l'écran avec un fond uni :

xsetroot -solid "#001932"

Ou bien qui appose un fond d'écran (disponible ici) :

/usr/local/bin/feh --bg-scale /home/xavier/Images/Wallpapers/jarvis.jpg

Pensez à bien mettre le chemin complet vers l'outil qui définit le fond d'écran. Notez que vous pouvez lancer n'importe quelle commance, comme par exemple un terminal ou autre :

xterm +sb -bg black -fg green -geometry 100x22-0-0 cmatrix &

On peut commencer la configuration à proprement parler en modifiant le fichier /etc/X11/xenodm/Xresource-custom. Chaque élément de configuration est expliqué ici. Principalement, j'ai modifié les couleurs, les polices et les messages "login" et "password" pour obtenir ça :

Et voici la configuration :


 ! $OpenBSD: Xresources.cpp,v 1.1 2016/10/23 08:30:37 matthieu Exp $
 !
 !
 !
 !
 !
 
 
 
 
 xlogin*login.translations: #override \
    Ctrl<Key>R: abort-display()\n\
    <Key>F1: set-session-argument(failsafe) finish-field()\n\
    <Key>Left: move-backward-character()\n\
    <Key>Right: move-forward-character()\n\
    <Key>Home: move-to-begining()\n\
    <Key>End: move-to-end()\n\
    Ctrl<Key>KP_Enter: set-session-argument(failsafe) finish-field()\n\
    <Key>KP_Enter: set-session-argument() finish-field()\n\
    Ctrl<Key>Return: set-session-argument(failsafe) finish-field()\n\
    <Key>Return: set-session-argument() finish-field()
 
 xlogin*greeting: .: AUTH ON CLIENTHOST :.
 xlogin*namePrompt: login =
 xlogin*passwdPrompt: password =
 xlogin*fail: Login incorrect
 
 xlogin*greetFont: Hack-16:dpi=75
 xlogin*font: Hack-14:dpi=75
 xlogin*promptFont: Hack-14:dpi=75
 xlogin*failFont: Hack-14:dpi=75
 xlogin*greetFace:       Hack-14:dpi=75
 xlogin*face:            Hack-14:dpi=75
 xlogin*promptFace:      Hack-14:dpi=75
 xlogin*failFace:        Hack-14:dpi=75
 
 ! Change this according to your screen
 ! Use ``xdotool getmouselocation`` to find coordinates
 xlogin.Login.width: 220
 xlogin.Login.height: 140
 xlogin.Login.x: 280
 xlogin.Login.y: 50
 
 ! Colors
 xlogin*background: #000001
 !   The color used to display the input typed by the user.
 xlogin.Login.foreground: #52AEF4
 !    The color used to display the greeting.
 xlogin.Login.greetColor: #21B4FD
 !The color used to display prompts.
 xlogin.Login.promptColor: #52AEF4
 ! fail text color
 xlogin*failColor: red
 ! input background color
 xlogin*inpColor: #000001
 
 xlogin*borderWidth: 0
 xlogin*frameWidth: 0
 xlogin*innerFramesWidth: 0
 xlogin.Login.sepWidth: 0
 xlogin.Login.sepWidth: 0
 
 !    If set to true, a placeholder character (echoPasswdChar) will be shown for fields normally set to not echo, such as password input. The default is false.
 xlogin.Login.echoPasswd: true
 
 xlogin.Login.allowRootLogin:   false
 
 XConsole*background:   black
 XConsole*foreground:   white
 XConsole*borderWidth:  2
 XConsole*borderColor:   grey
 XConsole.text.geometry:    480x130
 XConsole.verbose:  true
 XConsole*iconic:   true
 XConsole*font:     fixed
 

À votre tour de montrer votre écran d'accueil. Les possibilités sont infinies, laissez libre cours à votre imagination! N'oubliez pas que vous pouvez lancer n'importe quelle commande en éditant le fichier Xsetup_0. Qui a envie de mettre un conky ? Des widgets qui vont chercher une VDM? Ou bien le script ci-dessous (cadeau!) :

#!/bin/sh
 # Auteur :      thuban <thuban@yeuxdelibad.net>
 # licence :     MIT
 # Description : surprise !
 
 URL="$(/usr/bin/ftp -o - 'http://feeds.feedburner.com/BonjourMadame?format=xml' | /usr/bin/grep -o 'src="http[^"]*"'| /usr/bin/cut -d\" -f2 | /usr/bin/head -n1)"
 ftp -o /tmp/bm.jpg "$URL"
 /usr/local/bin/display /tmp/bm.jpg &