Pour ceux qui ne savent pas, greeter est fondamentalement l'écran de connexion. Dans le cas spécifique de Lightdm, il en existe plusieurs versions:
J'ai besoin de savoir comment obtenir la version de greeter actuellement utilisée. Les solutions de script sont les bienvenues (de préférence python, scripts Shell, Perl) mais également ouvertes au code C. Idéalement, la solution fonctionnerait comme suit:
$ ./get_greeter
kylin-greeter
pgrep -f lightdm | xargs -L 1 ps -o args --no-header -p
ou pgrep -f kylin | xargs -L 1 ps -o args --no-header -p
ne renvoie rien qui pointe vers /usr/sbin/kylin-greeter
lsof -p <LIGHTDM_PID>
ne fournit également aucune information - pas de /usr/sbin/kylin-greeter
dans la liste./etc/lightdm/lightdm.conf
est une solution potentielle, mais pas idéale, car certaines versions d'Ubuntu (telles que Kylin) ne déclarent pas explicitement la session de greeter dans ce fichier. Je préférerais quelque chose de plus fiable.gsettings
ne fournit pas non plus de moyen fiable pour déterminer l'utilisation de greeter - la présence de schémas pour unity-greeter
ne signifie pas que je l'utilise actuellement.org.freedesktop.DisplayManager
pour le bus système n’a fourni aucune indication sur le type d’utilisation de la machine.A partir de quelques tests rapides, il semble que le seul moyen consiste à demander à LightDM lui-même:
$ lightdm --show-config |& awk -F= '/greeter-session=/{print $2}'
kylin-greeter
J'ai commencé à tester avec Ubuntu par défaut, puis j'ai installé lightdm-gtk-greeter
et le kylin-greeter
installé. Dans chaque cas, il a retourné la bonne option. Par exemple, après avoir modifié /etc/lightdm/lightdm.conf
pour ajouter greeter-session=unity
, la sortie a changé:
$ lightdm --show-config |& awk -F= '/greeter-session=/{print $2}'
unity
$ lightdm --show-config
[LightDM]
A backup-logs=false
[Seat:*]
B greeter-wrapper=/usr/lib/lightdm/lightdm-greeter-session
C guest-wrapper=/usr/lib/lightdm/lightdm-guest-session
D user-session=ubuntu
I greeter-session=unity
F xserver-command=X -core
I autologin-guest=false
I autologin-user=muru
I autologin-user-timeout=0
Sources:
A /usr/share/lightdm/lightdm.conf.d/50-disable-log-backup.conf
B /usr/share/lightdm/lightdm.conf.d/50-greeter-wrapper.conf
C /usr/share/lightdm/lightdm.conf.d/50-guest-wrapper.conf
D /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
E /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
F /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
G /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
H /usr/share/lightdm/lightdm.conf.d/95-kylin-greeter.conf
I /etc/lightdm/lightdm.conf
Notez la source de la configuration.
Eh bien, pour les systèmes basés sur Ubuntu et tous les autres systèmes de mise à jour, vous pouvez exécuter update-alternatives --list lightdm-greeter |head -n1
pour voir ce qu’ils utilisent en tant que greeter lightdm. Cela devrait au moins afficher la greeter lightdm par défaut. Je sais que si votre script risque d’être interrompu par un utilisateur arrêtant lightdm et le lançant avec un greeter non défini, je ne vois toutefois aucune raison logique de le faire. Si vous souhaitez plus d'informations à ce sujet, consultez man update-alternatives. Si vous ne transmettez pas le résultat de cette sortie à head et que vous ne lui affichez que la ligne du haut, tous les greeters lightdm installés seront affichés.