Ich möchte eine minimale X-Sitzung mit nur einem Window-Manager und einem einzigen Vollbild-Programm ausführen. Der offensichtliche Weg, dies zu tun, ist durch so etwas wie dies in .xinitrc setzen:Gibt es eine zuverlässige Möglichkeit, programmgesteuert festzustellen, dass ein Fenstermanager vollständig initialisiert worden ist?
metacity & # this could be any window manager
exec my-fullscreen-app
Aber da diese parallel gestartet werden, gibt es ein bisschen eine Race-Bedingung. Ich möchte nicht, dass meine App angezeigt wird, bevor der Fenstermanager bereit ist, da dann die Größe des Fensters im Vollbildmodus geändert wird. Ich möchte sicherstellen, dass der Fenstermanager die Initialisierung beendet hat.
Das Beste, was ich habe kommen mit etwas wie folgt aus:
metacity &
while ! xprop -root | grep -q _NET_SUPPORTING_WM_CHECK
do
sleep 0.1
done
sleep 0.3
exec my-fullscreen-app
Aber nur weil _NET_SUPPORTING_WM_CHECK hat auf dem Root-Fenster gesetzt wurde, bedeutet nicht notwendigerweise, dass die WM wirklich bereit ist, und die 0,3 zweiter Schlaf, nachdem es ein Kludon ist, der auf einigen Systemen ein schwerer Overkill sein könnte und bei anderen völlig unzureichend sein könnte.
Gibt es also eine bessere Möglichkeit, zuverlässig zu erkennen, dass der Fenstermanager vollständig initialisiert ist?
Ich könnte hier etwas fehlen, aber ist das nicht ein Fall, wo Sie überhaupt keinen Fenstermanager brauchen? –
Karl, du brauchst einen Fenstermanager, um dein Fenster richtig zu öffnen. Außerdem kann die App andere Anwendungen starten, während sie ausgeführt wird, die ebenfalls einen laufenden Fenstermanager benötigen, um ordnungsgemäß zu funktionieren. (Ich denke, ich vernachlässige diesen Teil zu erwähnen) – mackstann