Führen Sie startx im Hintergrund aus, ohne zum neuen virtuellen Terminal zu wechseln

Führen Sie startx im Hintergrund aus, ohne zum neuen virtuellen Terminal zu wechseln

startxkann einen neuen X-Server in einem neuen virtuellen Terminal erstellen. Aber auch wenn ich es im Hintergrund laufen lasse, d. h. sudo startx &, wechselt es trotzdem automatisch zum neuen virtuellen Terminal. Ist es möglich, ein neues virtuelles Terminal zu erstellen und dabei im alten zu bleiben?

Und wie kann ich den Dateinamen des neuen Terminals herausfinden? (Bisher konnte ich ttyim neuen Fenster nachsehen, aber wie kann ich dasselbe im alten erreichen?)

Antwort1

Vorausgesetzt, Sie verwenden X.org, scheint dies nicht möglich zu sein. Der X-Server unterstützt eineMöglichkeitaufgerufen -novtswitch, aber das gilt nur, wenn der X-Server beendet wird, nicht, wenn er gestartet wird. Angesichts der Diskussion inFedora-Fehler #246267, es scheint, dass diese Option auch beim Start angewendet wurde, sie wurde jedoch entfernt, da sie auf vielen Hardwarekomponenten zum Absturz des X-Servers führte: Der X-Server muss beim Start auf die Videohardware zugreifen.

Die nächstbeste Lösung wäre, ein kurzes Flackern zu einem anderen VT zuzulassen und dann wieder zurückzuschalten. Unter Linux können Sieopenvteinen Befehl in einem neuen virtuellen Terminal auszuführen undchvtum es wieder zu ändern.

Erstellen Sie ein Skript ~/.xinitrc.chvtmit

#!/bin/sh
echo "New X session running on vt$X_FGCONSOLE" >"$ORIGINAL_TTY"
chvt "$ORIGINAL_FGCONSOLE"
exec ~/.xinitrc

und Renn

ORIGINAL_FGCONSOLE=$(fgconsole) ORIGINAL_TTY=$(tty) openvt -s -- sh -c 'export X_FGCONSOLE=$(fgconsole); startx ~/.xinitrc.chvt -- vt$X_FGCONSOLE'

~/.xinitrc.chvt( Im Gegensatz zu ist das separate Skript sh -c …erforderlich, da startxes Argumente mit Platzhaltern durcheinander bringt und Sie aufgrund einer weiteren Eigenart von startx den absoluten Pfad übergeben müssen. Alternativ können Sie es direkt aufrufen und selbst xiniteinrichten .)XAUTHORITY

Je nachdem, wo Sie dieses Skript ausführen, haben Sie möglicherweise keine Berechtigung zum Ausführen fgconsole(„Es konnte kein Dateideskriptor mit Bezug auf die Konsole abgerufen werden“), da es geöffnet werden muss /dev/consoleund dies nicht möglich ist, wenn es einem anderen Benutzer (in der Praxis root) gehört. Ich weiß nicht, wie ich sonst herausfinden kann, wie ich zur ursprünglichen Konsole zurückkehren kann. Eine Lösung, wenn Sie Root-Zugriff haben, wäre, ORIGINAL_FGCONSOLE=$(fgconsole) …durch zu ersetzen

ORIGINAL_FGCONSOLE=$(sudo fgconsole)

und erteilen Sie Ihrem Konto die Berechtigung, fgconsoleals Root ausgeführt zu werden, indem Sie visudodie Zeile ausführen und hinzufügen

zzy ALL = (root) NOPASSWD: /bin/fgconsole

nach jeder anderen Zeile, die für Ihr Konto gilt. Es ist sicher, sofern kein Programmfehler vorliegt fgconsole.

¹ Wenn Sie Linux verwenden, verwenden Sie X.org, und wenn Sie Linux nicht verwenden, besteht immer noch eine gute Chance, dass Sie X.org verwenden.

verwandte Informationen