Starten von Programmen mit GUI ohne Display Manager


9

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?


Müssen Sie mit der GUI interagieren?
Daniel B

@ DanielB ja, wahrscheinlich
Ben

1
Sie können sie ohne Display Manager ausführen, benötigen jedoch eine laufende X-Sitzung. Welche Distribution verwenden Sie? Haben Sie einen X-Server installiert? Kannst du rennen xinitoder startx?
Terdon

@terdon Ja, ich leite derzeit lmint, aber die Frage ist eher für Allgemeinwissen (nicht auf Distribution ausgerichtet).
Ben

Antworten:


5

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:

Geben Sie hier die Bildbeschreibung ein

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.


2
Es könnte erwähnenswert sein, dass "normales Ausführen" höchstwahrscheinlich einen Hintergrund des Prozesses beinhaltet, sodass Sie höchstwahrscheinlich xterm &ein zusätzliches Terminal verwenden möchten , nicht nur xterm. Etc.
ein CVn

6

Hier sind die Grundlagen zum Ausführen einer GUI-App ohne Kopf mit einer Möglichkeit ( vnc), eine Verbindung zu ihr herzustellen. Arbeitet an RHEL7und Centos 7mit 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 DockerfileSetup und init/setupStart).

# 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.


3

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:

  1. Zuerst wird ein X11 "Anzeigeserver" wie Xorg gestartet.
  2. Dann werden "Clients" gestartet, die Xorg mitteilen, was und wo gezeichnet werden soll.

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 ~/.xinitrcDatei aufgeführten Clients .

Zum Beispiel könnte die Datei .xinitrc hat startkdeoder gnome-session, oder es könnte die einzelnen Komponenten (die Fenstermanager, eine Platte / Taskleiste, ein Desktop ...) Liste

(Beachten Sie, dass es einige Unterschiede zwischen xinitund gibt startx- normalerweise sollten Sie Letzteres verwenden, da einige Distributionen einige wichtige Konfigurationselemente haben, die von einfachem xinit ignoriert werden, nämlich das xserverrcSkript.)

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 westonGNOME mit ausführen oder starten gnome-session --session=gnome-wayland.


1

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 $DISPLAYApps 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 xauthSicherheit ü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.


Antwort ist nicht verwandt, aber nützlich
Ben
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.