it-swarm.com.de

Wie ermittle ich, welcher lightdm-Begrüßer verwendet wird?

Für diejenigen, die es nicht wissen, ist der Anmeldebildschirm der Begrüßer. Für Lightdm gibt es verschiedene Versionen:

  • einheitsgrüßer
  • kylin-Greeter
  • lightdm-gtk-greeter
  • lightdm-kde-greeter
  • lightdm-webkit-greeter
  • razorqt-lightdm-greeter

Das Ziel:

Ich muss wissen, wie ich die aktuell verwendete Begrüßerversion erhalte. Skriptlösungen sind sehr willkommen (vorzugsweise Python, Shell-Skripte, Perl), aber auch offen für C-Code. Im Idealfall würde die Lösung folgendermaßen aussehen:

$ ./get_greeter
kylin-greeter

Probleme und gescheiterte Ansätze:

  • Das Überprüfen der Prozessliste funktioniert nicht. Ich habe kylin-greeter gerade im Einsatz, aber pgrep -f lightdm | xargs -L 1 ps -o args --no-header -p oder pgrep -f kylin | xargs -L 1 ps -o args --no-header -p geben nichts zurück, was auf /usr/sbin/kylin-greeter verweist
  • lsof -p <LIGHTDM_PID> bietet auch keine Einblicke - kein /usr/sbin/kylin-greeter in der Auflistung.
  • Das Parsen von /etc/lightdm/lightdm.conf ist eine mögliche, aber nicht ideale Lösung, da einige Ubuntu-Varianten (wie Kylin) in dieser Datei nicht explizit die Begrüßungssitzung angeben. Ich würde etwas zuverlässigeres bevorzugen.
  • gsettings bietet auch kein zuverlässiges Mittel zur Bestimmung des verwendeten Begrüßers - das Vorhandensein von Schemas für unity-greeter bedeutet nicht, dass ich das derzeit verwende.
  • das Untersuchen von Pfaden und Methoden für den org.freedesktop.DisplayManager -Dienst für den Systembus ergab keine Einsicht in die Verwendung des Begrüßers.
4

Nach ein paar kurzen Tests scheint es die einzige Möglichkeit zu sein, LightDM selbst zu fragen:

$ lightdm --show-config |& awk -F= '/greeter-session=/{print $2}'
kylin-greeter

Ich habe mit dem Testen von Ubuntu begonnen und dann lightdm-gtk-greeter und den installierten kylin-greeter installiert. In jedem Fall wurde die richtige Option zurückgegeben. Nach dem Bearbeiten von /etc/lightdm/lightdm.conf, um greeter-session=unity hinzuzufügen, hat sich die Ausgabe geändert:

$ 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

Notieren Sie die Quelle der Konfiguration.

4
muru

Nun, für Ubuntu-basierte Systeme und alle anderen waren Update-Alternativen Arbeiten in Ihrem Skript können Sie update-alternatives --list lightdm-greeter |head -n1 ausführen, um zu sehen, was sie als lightdm-Begrüßer verwenden. Dies sollte mindestens den Standard-Lightdm-Begrüßer anzeigen. Ich weiß, ob Ihr Skript möglicherweise von einem Benutzer beschädigt wird, der lightdm stoppt und es mit einem nicht defizienten Begrüßungsprogramm startet. Ich kann jedoch keinen logischen Grund dafür erkennen. Weitere Informationen finden Sie unter man update-alternatives. Wenn Sie das Ergebnis dieser Ausgabe nicht an head leiten und nur die oberste Zeile anzeigen lassen, werden alle installierten lightdm-Begrüßer angezeigt.

0
ianorlin