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