Connexion/déconnexion à un serveur X
Connexion
Avant toutes choses, vous devez établir une connexion sur un serveur X. Pour cela, vous utiliserez la fonction XOpenDisplay()
Display *XOpenDisplay(display_name) char *display_name;
Les paramètres
En entrée:
display_name spécifie le nom physique du périphérique d'affichage:Hôte:serveur.ecran ou Hôte::serveur.ecran
Sur un système POSIX, si le display_name est NULL, la valeur de la variable d'environnement DISPLAY est prise par défaut.
Pour connaître
la valeur par défaut, tapez la ligne suivante dans un shell
echo $DISPLAY
Pour modifier la valeur, vous utiliserez
pour le C shell:
setenv DISPLAY display_name
Pour le Bourne shell ou le Korn shell:
DISPLAY=display_name; export DISPLAY
Ce nom pourra aussi être un numéro de périphérique d'affichage, dans ce cas, Xlib utilisera le transport qu'il estimera être le plus rapide par la suite pour l'échange de données entre le serveur et l'application.
Il est possible d'indiquer un nom d'hôte. La syntaxe sera alors du style nom_hôte:serveur.ecran pour une connexion TCP, ou nom_hôte::serveur.ecran pour une connexion DECnet.
En sortie:
S'il n'y a pas d'erreur, vous récupérerez une structure de type Display qui vous permettra de récupérer toutes les informations concernant le serveur. Voir chapitre annexe display.
S'il y a une erreur, la fonction retournera la valeur NULL.
Il est interdit
d'accéder aux membres de la structure Display en lecture comme en écriture
! Utilisez les fonctions ou macros correspondantes (Voir chapitre annexe
display).
Déconnexion
Avant la fin de votre application, il faudra se déconnecter. Vous utiliserez alors la fonction XCloseDisplay()
XCloseDisplay(display) Display *display;
Cette fonction fait beaucoup de choses, elle va d'abord libérer toutes les ressources X window que vous n'auriez pas encore libéré ( Window, Font, Pixmap, Colormap, Cursor, et GContext, ...) suivant le paramétrage XSetCloseDownMode. Après destruction des fenêtres, fermeture de la connexion avec le serveur.
Paramètres en entrées: La structure display récupérée lors de l'appel à la fonction XOpenDisplay().
Exemple
Exemple tout bête qui ne fera qu'établir une connexion et vous indiquera si tout est ok ou non. Puis déconnexion. Il n'y a donc pas de création de fenêtre !
Il y a un bout de code pour traiter le nom physique du périphérique d'affichage passé éventuellement en paramètre. Ce code sera à revoir afin de traiter les paramètres tels que l'on peut les passer habituellement dans ce genre de programme (Voir annexes paramètres d'un programme X).
Récupération d'informations sur le serveur
La connexion au serveur étant établie, il sera possible de récupérer des informations sur l'environnement graphique.
Voir le chapitre sur Display
L'utilité de ces informations sera vue dans les chapitres qui suivent...
Voici en attendant un exemple qui retourne des informations sur le serveur ainsi que sur l'écran utilisé: