J'ai entendu dire qu'il existait un moyen de lancer des programmes avec une interface graphique sans gestionnaire d'affichage - directement à partir du terminal. Est-ce que c'est vrai et si oui, comment puis-je le faire ?
Réponses
Trop de publicités?Voici les bases de l'exécution d'une application GUI sans tête, avec un moyen ( vnc
) pour s'y connecter. Fonctionne sur RHEL7
y Centos 7
avec la famille. Et tiré de ma propre image Docker que j'utilise pour Crashplan situé à https://github.com/xeor/dockerfiles/tree/master/crashplan/ (voir Dockerfile
pour l'installation, et init/setup
pour le démarrage.
# 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
Vous devriez maintenant pouvoir vous connecter au serveur:5900 et voir l'application.
Vous pouvez les exécuter sans gestionnaire d'affichage, mais vous avez besoin d'une session X en cours d'exécution. Les détails dépendent de votre distribution, mais vous devriez pouvoir obtenir une session X minimale avec un seul terminal en lançant
xinit
Je ne l'ai pas fait depuis des années, mais la dernière fois que je l'ai fait, cela donnait quelque chose comme ça :
Une fois sur place, vous pouvez exécuter un programme GUI normalement, de préférence en le lançant en arrière-plan (avec &
) afin de ne pas perdre l'accès à votre seul terminal.
Oui. Il suffit de faire les mêmes choses qu'un gestionnaire d'affichage. Hormis l'écran de connexion graphique (dont vous n'avez pas besoin dans ce cas), le gestionnaire d'écran ne fait que deux choses :
- Il démarre d'abord un "serveur d'affichage" X11, tel que Xorg,
- puis lance des "clients" qui indiquent à Xorg où et comment dessiner.
Vous pouvez utiliser des outils tels que startx
pour démarrer X11 de la même manière à partir d'une connexion à la console ; il lancera Xorg suivi des clients listés dans votre fichier ~/.xinitrc
fichier.
Par exemple, le fichier .xinitrc pourrait contenir les éléments suivants startkde
o gnome-session
Il peut également énumérer les composants individuels (le gestionnaire de fenêtres, un panneau/une barre de tâches, un bureau...).
(Il convient de noter qu'il existe des différences entre xinit
y startx
- En général, vous devriez utiliser cette dernière, car certaines distros ont quelques éléments de configuration importants que xinit ordinaire ignorera, à savoir les éléments suivants xserverrc
script.)
Avec Wayland, le bureau et les panneaux font partie intégrante du "compositeur", de sorte que l'ensemble de l'interface démarre en une seule étape, sans outils supplémentaires. Par exemple, vous pouvez lancer weston
ou lancez GNOME en utilisant gnome-session --session=gnome-wayland
.
Vous pouvez lancer des applications X en utilisant la redirection ssh X (ssh -X ; il peut être nécessaire de l'activer également dans la configuration du serveur), à condition de disposer d'un serveur local Affichage X.
L'application sera lancée et affichée localement, tout en fonctionnant sur un système sans tête. Vous devrez avoir X installé sur le système sans tête afin d'avoir les bonnes bibliothèques, et cela peut ne pas fonctionner avec des applications GNOME plus modernes.
Vous pouvez également utiliser $DISPLAY
pour lancer des applications sur un écran X attaché même si votre Shell est distant (ssh ou console). Si vous êtes root et que la personne connectée sur l'écran X ne l'est pas, vous pouvez passer outre l'option xauth
et faire apparaître une fenêtre sur leur écran. Cela fonctionne également si vous avez deux serveurs d'affichage X différents sur des moniteurs différents.
Une autre personne a mentionné VNC ; j'ai également utilisé NX à cette fin et je le préfère.