web-dev-qa-db-fra.com

Comment déterminer quel lightdm greeter est utilisé?

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:

  • unité-greeter
  • kylin-Greeter
  • lightdm-gtk-greeter
  • lightdm-kde-greeter
  • lightdm-webkit-greeter
  • razorqt-lightdm-greeter

Le but:

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

Problèmes et approches infructueuses:

  • Vérifier la liste des processus ne fonctionne pas. Kylin-greeter est actuellement utilisé, mais 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.
  • L'analyse de /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.
  • l’examen des chemins et des méthodes sur le service org.freedesktop.DisplayManager pour le bus système n’a fourni aucune indication sur le type d’utilisation de la machine.
4
Sergiy Kolodyazhnyy

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.

4
muru

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.

0
ianorlin