So starten Sie Xephyr ohne Einschlafen

So starten Sie Xephyr ohne Einschlafen

Das Ziel besteht darin, Xephyr in einem Skript zu starten. Der beliebteste Ansatz ist dieser:

Xephyr :4 &
sleep 1  # or sleep 2
launch_your_program_here

Mal sehen, was hier passiert. Erstens kann Xephyr sich leider nicht selbst als Daemon ausführen, also müssen wir es asynchron starten ( &). Dann wissen wir nicht, wann es initialisiert wird, also geben wir ihm 1-2 Sekunden Zeit zum Initialisieren. Das fühlt sich wie ein Hack an. Wie geht das schneller und zuverlässiger?

Antwort1

xinit erledigt diese Aufgabe. Sie können eine Datei erstellen your_xinitrc. Befehle darin your_xinitrcwerden ausgeführt, nachdem Xephyr initialisiert wurde.

xinit your_xinitrc -- /usr/bin/Xephyr :4

Der auszuführende X-Server muss mit einem absoluten Pfad angegeben werden, wenn es sich nicht um X selbst handelt. man xinitWeitere Einzelheiten finden Sie unter. Nachdem alle Befehle your_xinitrcbeendet wurden, beendet xinit Xephyr.

Antwort2

Eine mögliche Lösung könnte die Verwendung von

Xephyr :4
inotifywait --timeout 9 /tmp/.X11-unix/
launch_your_program_here

Die zweite Zeile blockiert sich selbst, während sie auf Änderungen am Dateisystem wartet /tmp/.X11-unix/. Dies geschieht, wenn Xephyr mit der Initialisierung fertig ist.

verwandte Informationen