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?
xinit
o startx
?
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?
xinit
o startx
?
Risposte:
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:
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.
xterm &
per ottenere un terminale aggiuntivo, non solo xterm
. Ecc.
Ecco le basi per l'esecuzione di un'app GUI senza testa, con un modo ( vnc
) per connettersi ad essa. Lavora su RHEL7
e 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 Dockerfile
per la configurazione e init/setup
per 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.
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:
Puoi usare strumenti come startx
avviare X11 allo stesso modo da un accesso alla console; lancerà Xorg seguito dai client elencati nel tuo ~/.xinitrc
file.
Ad esempio, il file .xinitrc potrebbe avere startkde
o 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 xinit
e 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 xserverrc
script.)
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 weston
o avviare GNOME usando gnome-session --session=gnome-wayland
.
È 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 $DISPLAY
per 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 xauth
sicurezza 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.