Skip to topic | Skip to bottom
Home
Linfo
Linfo.UtilSystemesEnonceTD2r1.8 - 05 Oct 2004 - 14:05 - OlivierDalletopic end

Start of topic | Skip to actions

L3 : Utilisation de Systèmes - TD2 - X window (enoncé)


Avant tout, n'oubliez pas de vous enregistrer sur votre liste de présence : Groupe 1 - Groupe 2 - Groupe 3 - Groupe 4

Session X Window

Nous allons commencer par identifier les différents processus qui sont en charge du système X window. Dans la suite [Xroot] désigne le chemin /usr/lib/X11.

Démarrage d'une session X : partie non configurable par l'utilisateur

Connectez-vous puis lancez le script ~dalle/bin/init_Xenv.sh a partir d'un terminal. Ce script réinitialize votre environnement Xwindows par défaut (vous pourrez eventuellement revenir à votre configuration originale en renommant les fichiers .x*.save en .x*). Deconnectez-vous puis reconnectez-vous, mais en choisissant 'Défaut' à partir du menu Session de la bannière de login. (Vous devriez lancer une session avec le gestionnaire de fenetres fvwm2).

1 . Ouvrez sous emacs les fichiers [Xroot]/xdm/Xsession et $HOME/.xsession. A présent, dessinez une arborescence de tous les processus impliqués dans votre session X (c.a.d. depuis xdm jusqu'aux clients X démarrés par .xsession). Servez-vous des colonnes PID et PPID du résultat d'un ps - avec les bonnes options ! - pour contrôler votre réponse.

2 . Pourquoi allez-vous être déconnecté si vous cherchez à quitter votre gestionnaire de fenêtres en vue d'en lancer un autre (par exemple, twm) ?

3 . Déconnectez-vous puis à présent, reconnectez-vous en empéchant la session X de démarrer complètement. Pour ce faire, si vous êtes sur un PC, il suffit de choisir Secours comme Session. Quels processus sont absents ? Poursuivez alors à la main le démarrage de votre session X. Profitez-en pourquoi pas, pour essayer un autre gestionnaire de fenêtres tel le tout vieux twm, ou les environnements de kde (commande startkde), ou gnome (commande gnome-session).

4 . * Pour comprendre comment une session autre que celle par défaut est démarrée, consultez les fichiers /etc/X11/gdm/Sessions.

Démarrage d'une session X : partie configurable par l'utilisateur

5 . Comme vous l'avez déjà constaté, la bannière de login vous permet de choisir entre des environnements intégrés tels que Gnome ou Kde, et un environnement plus traditionnel au travers du choix 'Défaut'. Les deux premiers sont aisément paramétrables au travers de nombreux menus de configuration. Mais où enregistrentils les modifications que vous apportez à leur configuration ?

6 . * Que contient le fichier ~/.gnome/session ? Par quel menu de gnome pouvez-vous modifier son contenu ?

7 . L'environnement de la session 'Défaut' est plus rustique. Comment faire pour le modifier ? Modifiez-le de façon à afficher systématiquement une horloge dans le coin supérieure droit de l'écran lors du démarrage de la session 'Défaut'.

Clients X distants

Il y a deux moyens d'autoriser un client distant à utiliser un serveur X.

Autorisation par le biais du Magic Cookie

8 . Dans un nouvel xterm, connectez-vous par un rlogin, sur une autre machine de la salle ou sur clio. Depuis ce shell, après avoir correctement positionné la valeur de $DISPLAY, demandez l'exécution d'un client X (par exemple, xload).

Pourquoi est-ce que ce client a l'autorisation de s'afficher sur votre station de travail ? Pour répondre, il vous faut voir le contenu de votre fichier .Xauthority contenant des clés magiques, utilisez xauth list; et penser au fait qu'il y a "montage" de votre compte, sur toutes les machines connectées à cet étage.

9 . Maintenant, tentons d'utiliser le display correspondant à la station où travaille votre voisin. Lancez par exemple xload -display display-du-voisin. Vous n'y arrivez pas ! Posez-vous les questions suivantes:

  • Possédez-vous la clé magique correspondant au serveur X qui gère le display sur la station de votre voisin ?
  • Puisque la réponse est non, où pourriez-vous trouver cette clé ?
  • Puisque la réponse est "dans le fichier .Xauthority" de mon voisin, regardez si vous avez accès ne serait-ce qu'en lecture à ce fichier.
  • Puisque la réponse est non, quel peut-être alors l'unique moyen d'obtenir cette clé magique ?

Autorisation via xhost

Un moyen beaucoup plus simple mais moins "personnalisé" d'autoriser des clients X à utiliser votre serveur X est par le biais de xhost.

10 . Tapez xhost + nomMachine . Demandez à votre voisin de lancer un client X, depuis un shell qu'il aura lancé sur nomMachine et dans lequel il aura affecté la variable DISPLAY à votre display. Constatez que vous n'avez pas eu besoin de lui communiquer la clé magique associée à votre serveur X.

11 . Recommencez l'exercice précédent en demandant à un autre utilisateur de se connecter par un rlogin sur nomMachine puis de démarrer un client X qui utilise votre serveur X.

Donc, vous venez d'expérimenter le fait que xhost permet d'attribuer des autorisations à des machines, mais pas de façon plus fine à des utilisateurs.

12 . Désactivez toutes les autorisations accordées à nomMachine en tapant xhost - nomMachine. Attention : si vous tapez juste xhost -, vous interdirez aussi l'accès à votre serveur X pour vos propres clients, puisque votre station sur laquelle vous lancez ces clients n'avait pas été préalablement autorisée par un xhost + votre_station.

Configuration du serveur X

13 . Consultez la page de manuel de xset afin d'essayer quelques options telles celles relatives au son des touches, à la vitesse du pointeur de la souris, ...

14 . * Comme le clavier des machines de cette salle est probablement différent de celui que l'on trouve dans les autres salles de l'étage, nous pourrions utiliser tout d'abord xkeycaps. Cet exercice doit être fait depuis une connexion sur une machine Solaris (où xkeycaps est installé). Sélectionner le bon clavier, et éventuellement, configurer quelques touches de fonction pour avoir les caractères accentués, par exemple ô sur la touche F5. Sauvez cette modification dans un fichier .xmodmap-pc.

15 . Quelles sont les 3 intensités de rouge, vert, bleu, associées à la couleur de nom "SkyBlue" (pensez que les couleurs sont répertoriées dans un fichier rgb.txt) ?

Ressources des applications clientes

Le terme de ressources (en anglais, resources avec un seul "s" !) signifie en fait "paramètres", qu'ils soient graphiques ou non. Les ressources ont des valeurs par défaut. Mais l'utilisateur est libre de leur donner d'autres valeurs.

Manipulation simple de quelques ressources

Les ressources standard sont par exemple la taille des fenêtres, leur couleur, l'iconification ou non à la création de la fenêtre graphique ... Elles ont des noms standard (c.a.d. valables sur de nombreux programmes clients X) telles geometry, foreground, background, iconic.

Pour indiquer pour une exécution particulière d'un client X une valeur de ressource, on a souvent la possibilité d'utiliser les options de la commande (qui rappelent le nom de la ressource).

16 . La valeur de la ressource "géométrie" d'un client X peut être consultée par xwininfo. Appliquez cette commande à votre xterm courant, pour savoir de quelle taille est sa fenêtre.

17 . Consultez la page de manuel de xterm. A présent, démarrez un xterm de taille 50 par 50 pixels (50x50), de couleur de fond rose, iconifié par défaut.

18 . Servez-vous de xfontsel pour connaitre l'effet de la valeur de la ressource Emacs*font: -bitstream-*-medium-r-*-*-16-*-*-*-*-*-iso8859-* A combien de polices de caractères correspond cette spécification de ressource ?

Visualisation et modification interactive des ressources

19 . On peut faire afficher la classe d'une application avec la commande xprop. Vérifiez ainsi les noms d'instance et de classe d'un client xterm et d'un client emacs.

20 . Démarrez une calculatrice (xcalc). Lancez editres,

  • demandez à voir la hiérarchie des widgets de xcalc.
  • Modifiez le bouton 16 (touche PI en émulation TI), afin que la couleur de fond soit rouge.

Positionnement des ressources

21 . Utilisez appres avec comme paramètre le nom de la classe du client voulu (ex XTerm), afin de voir les spécifications de ressources qu'un client de cette classe utiliserait à son démarrage.

Mais attention, ces spécifications peuvent provenir de sources différentes que nous allons à présent identifier.

22 . Où se trouvent indiquées les spécifications des ressources par défaut valables sur tout le site, pour les clients "xterms" ?

23 . Dans les fichiers de configuration qui sont par défaut dans votre répertoire principal, possédez-vous des spécifications de ressources personnelles pour les clients "xterm" ?

24 . Y-a-t-il des spécifications de ressources qui sont connues du gestionnaire de ressources au niveau du serveur X. (Utilisez xrdb). Si oui, à quel moment et par quel moyen ont-elles été indiquées ?

25 . Cet exercice devrait permettre de comprendre les règles/priorités de spécifications des valeurs des ressources. Nous allons le baser sur la configuration du menu d'un xterm accessible par CTRL-boutongauche souris avec celle-ci pointant l'intérieur de la fenêtre.

  • Repérez par appres XTerm la spécification de valeur pour la ressource: *mainMenu.Label
  • dans votre fichier $HOME/.ressources, vous allez recopier la ligne *mainMenu.Label: Main Options du fichier [Xroot]/app-defaults/XTerm. Cependant, vous donnerez une autre valeur de titre au menu principal (par exemple "Options principales").
  • Une fois .ressources modifié, il faut remettre à jour la base de données de ressources du serveur X par xrdb .ressources.
  • A présent, utilisez appres XTerm, et constatez qu'un nouvel xterm utiliserait cette nouvelle spécification. Bien que la ressource Label du widget mainMenu soit spécifiée de façon parfaitement identique, c'est bien la deuxième valeur qui est retenue car elle est lue à l'étape 3 p. 36 du cours, alors que la première valeur est lue à l'étape 1 p. 36 du cours. La deuxième écrase donc complètement la première car elles sont aussi précises l'une que l'autre. Dans ce cas c'est l'ordre de lecture qui compte.
  • Modifier maintenant cette ligne du .ressources en spécifiant de façon moins précise la ressource concernée : *mainMenu*Label (Vous avez bien lu ? On a juste remplacé un point par une étoile !)
  • rechargez la nouvelle spécification par xrdb .ressources, puis appres XTerm pour voir quelles spécifications de ressources vont être présentées au serveur X au moment du lancement d'un nouvel xterm.
  • Comme il y a 2 spécifications qui seront proposées au moment du lancement d'un nouvel xterm (*mainMenu.Label: Main Options et *mainMenu*Label: Options principales), essayez de prédire quel sera le titre du menu accessible par Ctrl-bouton gauche souris ? Confirmez votre prédiction en lançant un nouvel xterm, puis expliquez ...

26 . * A présent, préfixez la ligne de spécification mise dans .ressources par le nom de la classe, ici XTerm. Celà donnera : XTerm*mainMenu*Label: Options principales. Rechargez les nouvelles spécifications par xrdb. Constatez que votre menu reste toujours étiquetté en français. Et même, que toutes les lignes de ce menu sont maintenant étiquettées "Options principales". Expliquez.

Etude d'un client X incontournable : Le gestionnaire de fenêtres

Le gestionnaire de fenêtres qui est utilisé par défaut est fvwm2. Il est paramétré par le fichier .fvwm2rc du répertoire $HOME.

Chaque fois qu'une modification y sera apportée, pour l'expérimenter pensez à re-démarrer fvwm2 par le biais d'une ligne de menu prévue à cet effet ... mais qui ne relance pas fvwm2 avec $HOME/.fvwm2rc ! Donc, redéconnectez-vous et relancez votre session.

27 . Changez le style des boutons qui se trouvent dans les barres de titre des fenêtres.

28 . Faites-vous un bureau virtuel plus grand ("plus" de tables).

29 . Regardez la page de manuel de fvwm2, section Mouse, afin d'expliquer quelles actions sont associées aux différents boutons de la souris, selon le contexte où l'on clique.

30 . Supprimez ou modifiez la ligne Mail du menu Utilities.

31 . Faites en sorte que le bouton Samoa soit remplacé par un bouton Clio (avec l'action correspondante modifiée).

32 . * Essayez différentes images de fond d'écran :

  • Consultez la page de manuel de xsetroot; essayez différentes options.
  • Essayez également xpmroot (utile lorsque le suffixe du fichier d'images est .xpm), mais
attention, xpmroot consomme beaucoup d'entrées dans la palette de couleurs. Dans ce cas, utilisez plutôt xv -root.
  • Vous trouverez des petites images (appelées bitmap) dans /usr/include/X11/bitmaps et dans
/usr/include/X11/pixmaps/. On peut utiliser xv pour visualiser de telles images. Ou mieux, le client X xbmbrowser qui permet de voir des images de format xpm ou xbm (positionnez l'option LabelAllFiles)

33 . * Une fois que vous aurez choisi un fond d'écran qui vous plait comment faire en sorte que cette installation soit systématique et automatique à chaque session X ? Faites attention que le gestionnaire de fenêtre lui aussi utilise xsetroot. Donc, positionnez la ligne de commande xsetroot ou xv ... au bon endroit : pas dans .xsession, mais dans .fvwm2rc !

34 . * Choisissez un nouveau fichier d'icônes pour les applications xterm. Remarquez que ce paramétrage n'est pas celui d'une ressource de la classe XTerm, mais est propre au gestionnaire de fenêtres.


Permissions :

-- EricVecchie - 03 Oct 2003
to top


You are here: Linfo > UtilisationSystemes > UtilSystemesEnonceTD2

to top

Copyright © 1999-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback