Ich habe gehört, dass es eine Möglichkeit gibt, Programme mit grafischer Oberfläche ohne Display Manager zu starten - direkt vom Terminal. Ist das echt und wenn ja, wie kann ich das machen?
xinit
oder startx
?
Ich habe gehört, dass es eine Möglichkeit gibt, Programme mit grafischer Oberfläche ohne Display Manager zu starten - direkt vom Terminal. Ist das echt und wenn ja, wie kann ich das machen?
xinit
oder startx
?
Antworten:
Sie können sie ohne Display Manager ausführen, benötigen jedoch eine laufende X-Sitzung. Die Details hängen von Ihrer Distribution ab, aber Sie sollten in der Lage sein, eine minimale X-Sitzung mit einem einzelnen Terminal durch Ausführen zu erhalten
xinit
Ich habe das seit Jahren nicht mehr gemacht, aber beim letzten Mal würde das ungefähr so etwas ergeben:
Dort können Sie ein GUI-Programm normal ausführen, vorzugsweise indem Sie es im Hintergrund (mit &
) starten, damit Sie nicht den Zugriff auf Ihr einziges Terminal verlieren.
xterm &
ein zusätzliches Terminal verwenden möchten , nicht nur xterm
. Etc.
Hier sind die Grundlagen zum Ausführen einer GUI-App ohne Kopf mit einer Möglichkeit ( vnc
), eine Verbindung zu ihr herzustellen. Arbeitet an RHEL7
und Centos 7
mit der Familie. Und aus meinem eigenen Docker-Image herausgerissen, das ich für Crashplan unter https://github.com/xeor/dockerfiles/tree/master/crashplan/ verwende (siehe Dockerfile
Setup und init/setup
Start).
# Needed environment variables
export DISPLAY=:99.0
export SCREEN_WIDTH=1200
export SCREEN_HEIGHT=960
export SCREEN_DEPTH=24
export GEOMETRY="${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH}"
# Needed packages
yum install -y xorg-x11-server-Xvfb x11vnc gtk2 xorg-x11-fonts-*
# Set a password (if variable vncpass is sat, else its `secret`)
mkdir -p ~/.vnc && x11vnc -storepasswd ${vncpass:-secret} ~/.vnc/passwd
# Start up the fake display and run the application you want (the `java ...` part)
xvfb-run --server-args="$DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR" java .... > log/ui_output.log 2> log/ui_error.log &
# Wait for the app to start, or else, the vnc server will die before starting
sleep 5
# vnc itself
x11vnc -forever -usepw -shared -rfbport 5900 -display $DISPLAY
Sie sollten jetzt in der Lage sein, eine Verbindung zum Server herzustellen: 5900 und die Anwendung anzuzeigen.
Ja. Machen Sie einfach die gleichen Dinge, die ein Display Manager macht. Abgesehen vom grafischen Anmeldebildschirm (den Sie in diesem Fall nicht benötigen) führt der Display-Manager nur zwei Dinge aus:
Sie können Tools verwenden startx
, um X11 auf dieselbe Weise über eine Konsolenanmeldung zu starten. Es wird Xorg gestartet, gefolgt von den in Ihrer ~/.xinitrc
Datei aufgeführten Clients .
Zum Beispiel könnte die Datei .xinitrc hat startkde
oder gnome-session
, oder es könnte die einzelnen Komponenten (die Fenstermanager, eine Platte / Taskleiste, ein Desktop ...) Liste
(Beachten Sie, dass es einige Unterschiede zwischen xinit
und gibt startx
- normalerweise sollten Sie Letzteres verwenden, da einige Distributionen einige wichtige Konfigurationselemente haben, die von einfachem xinit ignoriert werden, nämlich das xserverrc
Skript.)
Bei Wayland sind Desktop und Bedienfelder ein integraler Bestandteil des "Compositors", sodass die gesamte Benutzeroberfläche in einem einzigen Schritt ohne zusätzliche Tools gestartet wird. Beispielsweise können Sie weston
GNOME mit ausführen oder starten gnome-session --session=gnome-wayland
.
Sie können X-Anwendungen mithilfe der ssh X-Weiterleitung starten (ssh -X; muss möglicherweise auch in der Serverkonfiguration aktiviert werden), sofern Sie über eine lokale X-Anzeige verfügen .
Die Anwendung wird lokal gestartet und angezeigt, während sie auf einem Headless-System ausgeführt wird. Sie müssen X auf dem Headless-System installiert haben, um die richtigen Bibliotheken zu haben. Dies funktioniert möglicherweise nicht mit moderneren GNOME-Anwendungen.
Sie können $DISPLAY
Apps auch auf einem angeschlossenen X-Display starten, selbst wenn es sich bei Ihrer Shell um eine Remote-Shell (SSH oder Konsole) handelt. Wenn Sie root sind und die auf der X-Anzeige angemeldete Person dies nicht ist, können Sie die xauth
Sicherheit überschreiben und trotzdem ein Fenster auf ihrer Anzeige öffnen. Dies funktioniert auch, wenn Sie zwei verschiedene X-Anzeigeserver auf verschiedenen Monitoren haben.
Ein anderes Poster erwähnt VNC; Ich habe auch NX für diesen Zweck verwendet, und ich bevorzuge es.