Avvio di programmi con GUI senza display manager


9

Ho sentito che esiste un modo per avviare programmi con interfaccia grafica senza display manager - direttamente dal terminale. È vero e se sì, come posso farlo?


Devi interagire con la GUI?
Daniel B,

@DanielB sì, probabilmente
Ben

1
Puoi eseguirli senza display manager, ma hai bisogno di una sessione X in esecuzione. Quale distribuzione stai usando? Hai un server X installato? Puoi correre xinito startx?
terdon,

@terdon sì, attualmente sto usando lmint, ma la domanda è più per conoscenza generale (non mirata alla distribuzione).
Ben

Risposte:


5

Puoi eseguirli senza display manager, ma hai bisogno di una sessione X in esecuzione. I dettagli dipenderanno dalla tua distribuzione ma dovresti essere in grado di ottenere una sessione X minima con un singolo terminale eseguendo

xinit

Non lo faccio da anni ma, l'ultima volta, ho dato qualcosa del genere:

inserisci qui la descrizione dell'immagine

Una volta lì, puoi eseguire normalmente un programma GUI, preferibilmente avviandolo in background (con &) in modo da non perdere l'accesso al tuo unico terminale.


2
Vale la pena ricordare che "eseguirli normalmente" implica molto probabilmente il background del processo, quindi molto probabilmente vorrai utilizzare xterm &per ottenere un terminale aggiuntivo, non solo xterm. Ecc.
un CVn

6

Ecco le basi per l'esecuzione di un'app GUI senza testa, con un modo ( vnc) per connettersi ad essa. Lavora su RHEL7e Centos 7, con la famiglia. E strappato dalla mia immagine Docker che uso per Crashplan, disponibile su https://github.com/xeor/dockerfiles/tree/master/crashplan/ (vedi Dockerfileper la configurazione e init/setupper l'avvio.

# 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

Ora dovresti essere in grado di connetterti al server: 5900 e vedere l'applicazione.


3

Sì. Fai semplicemente le stesse cose che fa un display manager. A parte la schermata di accesso grafica (che in questo caso non è necessaria), il display manager fa solo due cose:

  1. Innanzitutto avvia un "display server" X11, come Xorg,
  2. quindi avvia "client" che dicono a Xorg cosa e dove disegnare.

Puoi usare strumenti come startxavviare X11 allo stesso modo da un accesso alla console; lancerà Xorg seguito dai client elencati nel tuo ~/.xinitrcfile.

Ad esempio, il file .xinitrc potrebbe avere startkdeo gnome-session, oppure potrebbe elencare i singoli componenti (il gestore di finestre, un pannello / barra delle applicazioni, un desktop ...)

(Nota che ci sono alcune differenze tra xinite startx- di solito dovresti usare quest'ultima, dato che alcune distro hanno alcune parti importanti della configurazione che xinit normale ignorerà, vale a dire lo xserverrcscript.)

Con Wayland, desktop e pannelli sono parte integrante del "compositore", quindi l'intera interfaccia si avvia in un unico passaggio senza strumenti aggiuntivi. Ad esempio, puoi eseguire westono avviare GNOME usando gnome-session --session=gnome-wayland.


1

È possibile avviare le applicazioni X utilizzando l'inoltro di ssh X (ssh -X; potrebbe essere necessario abilitare anche nella configurazione del server), a condizione che si disponga di un display X locale .

L'applicazione verrà avviata e visualizzata localmente, mentre è in esecuzione su un sistema senza testa. Dovrai avere X installato sul sistema headless per avere le librerie giuste, e questo potrebbe non funzionare con le più moderne applicazioni GNOME.

Puoi anche usare $DISPLAYper avviare app su un display X collegato anche se la tua shell è remota (ssh o console). Se sei root e la persona che ha effettuato l'accesso sul display X non lo è, puoi ignorare la xauthsicurezza e aprire comunque una finestra sul display. Questo funziona anche se hai due diversi server di visualizzazione X su monitor diversi.

Un altro poster menziona VNC; Ho anche usato NX per questo scopo e lo preferisco.


La risposta non è correlata, ma utile
Ben
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.