9 votes

Lancement de programmes avec interface graphique sans gestionnaire d'affichage

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 ?

7voto

esh Points 11

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.

5voto

Mohsin Points 11

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 :

enter image description here

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.

3voto

James Mertz Points 390

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 :

  1. Il démarre d'abord un "serveur d'affichage" X11, tel que Xorg,
  2. 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 .

1voto

UltimateBrent Points 6167

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X