1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
(sorry, in french for the moment)
GUI stack design
================
Two protocols :
- GIP (Graphics Initiation Protocol) : one GIP session handles one graphical
framebuffer, a keyboard, a mouse. The buffer is created by the server and
shared to the client with a token (a kernel IPC mechanism for file
descriptors). Reset operation. Possible extention for audio input/output to be
done at this level.
- WMP (Window Management Protocol) : creation of windows and of a GIP channel
for interacting with each window. Usual window managing messages. Hierarchy of
WMP channels : in a WMP channel you can ask for the creation of a sub-channel
; when a channel is closed all the sub-channels are closed too.
Software components of the GUI stack :
- `giosrv` handles the i/o with the hardware and makes that available as a GIP
channel
- login manager : talks to `giosrv`, displays the login manager, and once a
user is logged in, simply proxies the GIP between `giosrv` and the user
desktop manager. Intercepts Ctrl+Alt+Del to lock the current session and go
back to login screen.
- sessin manager : instantiated by login manager, runs with the privileges of
the user. Window managing.
- graphical toolkit library
----
Version française.
Deux protocoles :
- GIP (Graphics Initiation Protocol) : un buffer graphique, un clavier, une
souris. Redimensionnement. Création du buffer partagé. Opération de reset.
Extension possible de GIP pour le son.
- WMP (Window Management Protocol) : création de fenêtres et d'un canal GIP pour
chaque fenêtre. Déplacement, barres de titre, icônes, propriétés quelconques,
messages, notifications, ... Gère une hiérarchie de canaux WMP : dans un canal
WMP on peut demander la création d'un nouveau canal WMP qui sera créé comme
fils du canal actuel.
Pile graphique :
- Serveur graphique racine : parle au matériel, fournit un canal GIP (root GIP).
- Login manager : parle au root GIP, a sa propre UI pour lancer des sessions et
compagnie, crée pour chaque sous-session un canal GIP particulier (session
GIP).
- Session manager : parle au login manager, a accès au session GIP, gère les
fenêtres et propose des canaux WMP pour les applications de la session (ce qui
engendre la création de canaux window GIP pour chaque fenêtre)
- Bibliothèque "libtk" : sur une session GIP donner une interface facile pour
créer des widgets, gérer des layouts de widgets, gérer les interactions
(transformation des keycodes en lettres, etc.)
Applications système :
- Desktop manager : lancé par le session manager, affiche l'interface
utilisateur de base. C'est le client du WMP racine pour la session. Inclut la
portion "gestionnaire de fichier" de l'UI.
- Terminal : application qui peut tourner sur un simple GIP, en particulier en
plein écran dans une session administrateur (ou directement sur le serveur
racine tant qu'on n'aura pas écrit le login manager). Crée un canal
pur-textuel (type VT100) pour les applications console à l'intérieur.
Deux types d'application :
- Des applications WMP qui désirent utiliser plusieurs fenêtres (la majorité des
cas). S'attendent à être lancées avec comme file descriptor 0 un canal WMP.
- Des applications GIP qui utilisent une seule fenêtre (typiquement, les jeux).
S'attendent à être lancées avec comme FD0 un canal GIP.
Le desktop manager, lorsqu'il lance une application, doit demander la création
d'un nouveau canal WMP pour cette application. De plus si l'application indique
que c'est une simple application GIP alors le desktop manager s'occupe du
dialogue sur ce canal WMP particulier pour la création d'une fenêtre et du
lancement du GIP correspondant pour l'application. Il peut ainsi binder le bon
FD0 sur le process de l'application lancée.
Hiérarchie de raccourcis claviers et d'interceptions :
- Quand on est dans une session utilisateur, le login manager agit comme un
proxy GIP. Il intercepte simplement le raccourci Ctrl+Alt+Del, qui renvoie sur
l'interface du gestionnaire de session (changer d'utilisateur, ou bien tuer
des sessions ou lancer les outils d'administration)
- Quand on est dans une session utilisateur, le window manager (session manager)
intercepte tous les raccourcis avec la touche "super". La plupart sont
directement liés au window-management, mais on peut imaginer un raccourci qui
lance une interface qui liste la hiérarchie de toutes les sessions WMP actives
et permette de les tuer sélectivement, neutralisant ainsi les applications qui
spamment l'interface de messages débiles.
|