wir haben Kubuntu 24.04 als Clients laufen, geht auch alles inkl. Anmeldung mit dem sddm (im Wayland-Modus).
Wir haben aber folgendes Problem:
Wenn man das DP- oder HDMI-Kabel am Rechner abzieht, läuft der sddm-greeter weiter.
Wenn man das Kabel wieder einsteckt, beendet sich der sddm-greeter, der User sieht nur einen schwarzen Bildschirm mit blinkendem Cursor ganz oben links.
Wenn man auf der Konsole sddm restartet, kommt auf dem Bildschirm wieder die sddm-Anmeldemaske.
Das Problem besteht bei uns, weil der Strom für den hdmi-Switch und den Monitor an unseren Medientischen per zentralem Schalter eingeschaltet werden, während die Rechner (für’s WOL) dauernd am Strom hängen. Wenn nun der Rechner hochgefahren wird, der Tisch aber noch nicht „an“ ist, erhalten die User nach Einschalten des Tisches kein Bild auf dem Monitor, weil sich der greeter verabschiedet hat.
Kennt jemand das Problem und hat eine Lösung oder ersatzweise evt. schon ein Script zur Wiederbelebung des greeters gebastelt?
Seltsam, der sddm service steht ja auf „restart always“.
Gib’ts für den greeter nochmal einen extraservice? mit welchem befehl startest du denn den greeter neu?
Notfalls pack den restart befehl in einen cron job, auch wenn das sehr hässlich wäre …
Noch eine Idee: Habt ihr bei dem schwarzen Bildschirm mal windows p gedrückt? evtl. ist der greeter auf dem falschen Bildschirm (wobei das unwahrscheinlich ist, wegen des blinkenden cursors).
nein, der Bildschirm stimmt, im journal wird das Beenden des greeters ja auch vermerkt.
Wir haben jetzt in der Tat einen service eingerichtet, der den greeter sofort (deshalb service, nicht cron) restartet, wenn er beendet wurde - außer, es gibt einen erfolgreichen Login, dann sollte der greeter natürlich nicht wieder starten, sondern die Sache Plasma überlassen.
In der Tat etwas hässlich, aber es funktioniert und die Kollegen meckern nicht mehr…
hier die oben von Stefan erwähnte Lösung per „sddm-monitor“:
/usr/local/bin/sddm-monitor
#!/bin/bash
# Überwache das Journal auf Ereignis
journalctl -f -u sddm.service | while read line; do
if [[ "$line" == *"Greeter stopped. SDDM"* ]]; then
echo "Greeter stopped! Check Authentication..."
if ! journalctl -u sddm.service -r -n 20 | grep -o "Authentication for user \".*\" successful"; then
echo "Greeter stopped! No Authentication. Restart sddm.service..."
systemctl restart sddm.service
else
echo "Do not restart sddm.service..."
fi
fi
done