
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_xinitrc
werden 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 xinit
Weitere Einzelheiten finden Sie unter. Nachdem alle Befehle your_xinitrc
beendet 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.