File: HACKERS.GUIDE.fr

package info (click to toggle)
xlockmore 4.09-3
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 5,440 kB
  • ctags: 6,552
  • sloc: ansic: 54,180; sh: 1,624; makefile: 689; tcl: 439; java: 269; perl: 149
file content (286 lines) | stat: -rw-r--r-- 14,162 bytes parent folder | download
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
I translate a part of the HACKER.DOC in french 
first in text
second in html
bye
-- 
charles /  \
vidal  / ..|\
      (_\  |_)vidalc@club-internet.fr
      /  \@'
     /     \  http://www.chez.com/vidalc
 _  /  `   |
\\/  \  | _\
 \   /_ || \\
  \____)|_) \_)
-----------------------------------------
LA DOC DU BIDOUILLEUR

INTRODUCTION
________________________________________________________________________________

Ce document est pour tous ceux qui veulent modifier xlock (more), ajouter de 
nouveaux modes, debugger , etc....

xlock kesako ?

xlock est une application pour X-windows qui empche l'accs d'un ou plusieurs 
crans. Il peut tre envoy manuellement ou plus communment envoy 
automatiquement par un dmon aprs une priodes d'inactivit. 
Xlock cr une fentre couvrant entirement l'cran, et capte tous vnements 
prvenant ainsi l'accs extrieur. 
Quand une touche est presse alors xlock affiche un message mais aussi le mode 
dans une icone 
(MODE_ICONIQUE) et demande votre mot de passe.
Lorsque l'cran est lock ( ferm ), des images, des dessins, ou des animations 
sont affiches servant de screen-saver vitant la dgradation du phosphore.
Xlock fut dvelopp chez Sun Micro System par Pack J Naughton.David Bagley l'a 
repris et maintenu sous le nom de Xlockmore dans lequel d'innombrable mode ont 
t ajout, ainsi que la possibilit d'afficher un mode dans une fentre et 
aussi sur la root window.

________________________________________________________________________________
ORGANISATION GENERALE

xlock est organiser en deux partie.

1. le traitement de la ligne de commande, la cration de fentre, le mot de 
passe, etc ...

2 les modes: ils peuvent tre coder de tel manire qu'il n'y a pas besoin de 
faire appel  X pour la taille de la fentre, les couleurs ... 
Une API est comprise dans xlock pour avoir tout les renseignements en ce qui 
concerne l'cran.
C'est dans cette partie que vous allez pouvoir ajouter d'autres modes.

L'architecture logiciel d'un mode est structur en 4 sortes de fonctions:

-init:
celle-ci devra tre appelle pour prparer le droulement d'un mode. Le mode 
devra initialiser des tables de sinus 
par exemple, allouer des ressources, mmoire entre autre, tablir l'tat initial
par des variables etc. ...
Cette fonction peut tre appel plusieurs fois et la fentre ou l'cran peuvent avoir des taille diffrentes.

-callback:
C'est la principale fonction, c'est la que est implement le corps du mode.
 Elle est appel priodiquement.
 Cette fonction ne doit pas occuper beaucoup de temps a s'excuter.
Cette fonction peut etre appele dans deux contextes diffrents:
 plein cran ou en version icon. La fonction MI_WIN_IS_ICONIC vous dira dans 
quelle contexte on se trouve.

-release: 
Ici, cette fonction sera appel si un autre mode est appel ( random , et bouton
droit ), ou si xlock se termine. 
Dans cette fonction, il faut dsallouer la mmoire, X ressource, Pixmaps et 
graphics context.

-refresh:
 Celle ci est appel lorsque le dessin peut tre abim. Le mode doit repeindre 
l'ensemble de la fentre.

-change: ???? <A FINIR>



________________________________________________________________________________
CONVERSION:
Le prototype de ces fonctions est dfini dans mode.h et ressemble :
	void typefonction _mode( ModeInfo *mode_info)
La structure mode_info est en lecture seule, et contient l'ensemble des 
informations sur l'cran. 
Ne regardez pas les variables globales, n'crasez pas ce pointeur. 
Au lieu de faire des requetes pour connatre le numro de la couleur blanche 
etc... , il y a des fonctions propres a xlock: utilisez les.




________________________________________________________________________________
L'AJOUT D'UN NOUVEAU MODE:

Ajoutons un nouveau mode appel fadeplot:
Pour ce faire il faut d'abords ajouter dans mode.h
 extern ModeHook init_fadeplot;
extern ModeHook draw_fadeplot;
extern ModeHook release_fadeplot;
extern ModeHook refresh_fadeplot; 
les fonctions qui vont tre crs.

 extern ModeSpecOpt fadeplot_opts; 
une structure qui ne m'a pas rvl tous ces secrets.

mais aussi dans mode.c  cot des autres fonctions , dans ce que j'appelle la
 tableau des modes:
 {"fadeplot", init_fadeplot, draw_fadeplot, release_fadeplot,
 refresh_fadeplot, init_fadeplot, NULL, &blank_opts, 17000, 1, 20, 1.0,
  "fadeplot", 0, NULL},

On passe ensuite  l'implmentation des fonctions proprement dit dans un fichier
que l'on appellera fadeplot.c.
Il est vident qu'il faudra modifier le Makefile ( Pour cela je vous laisse 
faire :).

Dans ces fonctions,  partir de la structure ModeInfo, on va obtenir des 
informations sur l'cran qui sont indispensables pour la suite

MI_WIN_WIDTH(mi) et MI_WIN_HEIGHT(mi) 	vont nous donn la taille de l'cran.
Display    *display    = MI_DISPLAY(mi);	dlivre le display
Window      window = MI_WINDOW(mi);	  dlivre l'identificateur de la fentre
GC          gc               = MI_GC(mi);    donne le graphics context courant
XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi)); 
				Mettre la couleur du trac en noir
XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));
				 Mettre la couleur du trac en blanc

MI_WIN_IS_ICONIC(mi)		permet de savoir si on est pass en phase
								password.
NUMCOLORS			Donne le nombre de couleur


Oubliez pas aprs avoir dessin l'ensemble de faire Xflush(display), 
ce qui permettra d'afficher rellement votre graphisme sur l'cran.
La cration d'un nouveau mode s'ffectue souvent en rcuprant le squelette 
d'un autre et de le modifier  sa volont.
N'hsitez pas a  regarder le code des autres modes, c'est souvent trs 
instructifs.
Dernierement on peut utiliser la librairie mesa (la libraire GNU OpenGL de 
silicon Graphics) dans xlock.
Voila j'espere que vous prendrez plaisir a ajouter des nouveaux modes  xlock,
 un petit conseil le mainteneur de xlock est un fan de casse tte et compagnie.
Bon Xlock.

Charles VIDAL: vidalc@club-internet.fr
mode flag, fadeplot, circle
createur de xmxlock : GUI launcher de xlockmore.

------------------------------------------------------

<HTML>
<HEAD>
<TITLE>Xlock french hacker</TITLE>
</HEAD>
<BODY>
<Center><H1>XLOCK FRENCH HACKER</H1></Center>
<BR>
<H2>INTRODUCTION</H2>
<HR>
Ce document est pour tous ceux qui veulent modifier xlock (more), ajouter de nouveaux modes, debugger , etc....

<H2>xlock kesako ?</H2>

xlock est une application pour X-windows qui empche laccs dun ou plusieurs crans. Il peut tre envoy manuellement ou plus communment envoy automatiquement par un dmon aprs une priodes dinactivit.
 Xlock cr une fentre couvrant entirement lcran, et capte tous vnements prvenant ainsi laccs extrieur. 
Quand une touche est presse alors xlock affiche un message mais aussi le mode dans une icone (MODE_ICONIQUE) et demande votre mot de passe.<p>
Lorsque lcran est lock ( ferm ), des images, des dessins, ou des animations sont affiches servant de screen-saver vitant la dgradation du phosphore.
Xlock fut dvelopp chez Sun Micro System par Pack J Naughton.David Bagley la repris et maintenu sous le nom de Xlockmore dans lequel dinnombrable mode ont t ajout, ainsi que la possibilit dafficher un mode dans une fentre et aussi sur la root window ou dafficher sequentiellement plusieur mode par loption random et par lappuis du bouton du millieu.<p>
Il existe des terminaux X avec plusieur ecrans gere par un seul terminal, alors le mme mode saffichera sur plusieur ecran. On peut toutefois faire des effets, comme une balle passant de lui a lautre.

<HR>
<H2>ORGANISATION GENERALE</H2>

xlock est organiser en deux partie.<p>

<OL>
<LI> le traitement de la ligne de commande, la cration de fentre(s), le mot de passe, etc ...
<LI> les modes: ils peuvent tre coder de tel manire quil ny a pas besoin de faire appel  X pour la taille de la fentre, les couleurs ... Une API est comprise dans xlock pour avoir tout les renseignements en ce qui concerne lcran.Cest dans cette 
</OL>
<HR>
<B>Larchitecture logiciel dun mode est structur en 4 sortes de fonctions:</B>
<UL>
<LI><U><B>-init:</B></U>
celle-ci devra tre appelle pour prparer le droulement dun mode. Le mode devra initialiser des tables de sinus par exemple, allouer des ressources, mmoire entre autre, tablir ltat initial par des variables etc. ...
Cette fonction peut tre appel plusieurs fois et la fentre ou lcran peuvent avoir des taille diffrentes.<p>

<LI><U><B>-callback:</B></U>
Cest la principale fonction, cest la que est implement le corps du mode. Elle est appel priodiquement. Cette fonction ne doit pas occuper beaucoup de temps a sexcuter surtout si elle a plusieur ecran soccuper.
Cette fonction peut etre appele dans deux contextes diffrents:
 plein cran ou en version icon. La fonction MI_WIN_IS_ICONIC vous dira dans quelle contexte on se trouve.
la fonction init_mode est toujours appelle avant la fonction callback.
On peut choisir de faire quelque chose a chaque appelle, ou de compter le nombre dappelle, et puis de modifier lecran periodiquement.<p>

<LI><U><B>-release: </B></U>
Ici, cette fonction sera appel si un autre mode est appel ( random , et bouton droit ), ou si xlock se termine. Dans cette fonction, il faut dsallouer la mmoire, X ressource, Pixmaps et graphics context.
<p>
<LI><U><B>-refresh:</B></U>
 Celle ci est appel lorsque le dessin peut tre abim. Le mode doit repeindre lensemble de la fentre.
Aucun information sur la partie de lecran endomage nest delivre.
<p>
<LI><U><B>-change:</B></U> Dans la version courante, seule le mode random utilise cette fonctionnalite. Cet fonction est appele lorsque que lon change de mode par lappuie du boutton du millieu. Il est laisse a limagination de chacun en ce qui conserne 
</UL>


<HR>
<H2>CONVENTION:</H2>
Le prototype de ces fonctions est dfini dans mode.h et ressemble :<p>
<Center>	void typefonction _mode( ModeInfo *mode_info)</Center>
La structure mode_info est en lecture seule, et contient lensemble des informations sur lcran. Ne regardez pas les variables globales, ncrasez pas ce pointeur. Au lieu de faire des requetes pour connatre le numro de la couleur blanche etc... , il y a des fonctions propres a xlock: utilisez les. Si vous utilisez les informations passe en parametre des fonctions du modes ( voir ci dessus ), votre code sera toujours correcte.
Le temps entre chaque appelle  de fonctions est en milliseconde.

<HR>
<H2>LAJOUT DUN NOUVEAU MODE:</H2>

Ajoutons un nouveau mode appel <A HREF="file:fadeplot.txt">fadeplot</A>:<p>
Pour ce faire il faut dabords ajouter dans mode.h<p>
 extern ModeHook init_fadeplot;<p>
extern ModeHook draw_fadeplot;<p>
extern ModeHook release_fadeplot;<p>
extern ModeHook refresh_fadeplot; <p>
les fonctions qui vont tre crs.
<p>
 extern ModeSpecOpt fadeplot_opts; <p>
une structure qui ne ma pas rvl tous ces secrets.<p>

mais aussi dans mode.c  cot des autres fonctions , dans ce que jappelle le tableau des modes:<p>
 {"fadeplot", init_fadeplot, draw_fadeplot, release_fadeplot,
 refresh_fadeplot, init_fadeplot, NULL, &blank_opts, 17000, 1, 20, 1.0,
  "fadeplot", 0, NULL},<p>

On passe ensuite  limplmentation des fonctions proprement dit dans un fichier que lon appellera fadeplot.c.<p>
Il est vident quil faudra modifier le Makefile ( Pour cela je vous laisse faire :).<p>
Dans ces fonctions,  partir de la structure ModeInfo ( mode.h ) , on va obtenir des informations sur lcran qui sont indispensables pour la suite.<p>

<TABLE Border=1>
<CAPTION><B>fonction</B></CAPTION>
<TR><TD>MI_WIN_WIDTH(mi) et MI_WIN_HEIGHT(mi)</TD> 	<TD>vont nous donn la taille de lcran</TD></TR>.
<TR><TD>Display    *display    = MI_DISPLAY(mi);</TD>	<TD>dlivre le display</TD></TR>
<TR>	<TD>	         MI_SCREEN	</TD>	<TD>dlivre le screen</TD></TR>
<TR><TD>Window      window = MI_WINDOW(mi)</TD>;	<TD>dlivre lidentificateur de la fentre</TD></TR>
<TR><TD>GC          gc               = MI_GC(mi);</TD>	<TD>donne le graphics context courant</TD></TR>
<TR>	        <TD>MI_DELAY</TD>		<TD>    donne le delai (microsec.) entre callbacks</TD></TR>
<TR>        <TD>MI_CMAP</TD>		<TD>donne la table des couleurs</TD></TR>
<TR><TD>XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));</TD> 	<TD>Mettre la couleur du trac en noir</TD></TR>
<TR><TD>XSetForeground(display, gc, MI_WIN_WHITE_PIXEL(mi));</TD> <TD>Mettre la couleur du trac en blanc</TD></TR>
<TR><TD>MI_WIN_IS_ICONIC(mi)	</TD>	<TD>permet de savoir si on est pass en phase password. </TD></TR>
</TABLE>

<TABLE Border=1>
<CAPTION><B>variable</B></CAPTION>
<TR><TD>MI_WIN_IS_MONO	</TD>		<TD>lecran est monochrome</TD></TR>
<TR><TD>MI_WIN_IS_INWINDOW</TD>		<TD>le mode saffiche dans un fenetre reguliere</TD></TR>
<TR><TD>MI_WIN_IS_INROOT	</TD>		<TD>le mode saffiche sur la root windows</TD></TR>
<TR><TD>NUMCOLORS</TD>			<TD>Donne le nombre de couleur</TD></TR>
</TABLE>


Oubliez pas aprs avoir dessin lensemble de faire Xflush(display), ce qui permettra dafficher rellement votre graphisme sur lcran.
La cration dun nouveau mode sffectue souvent en rcuprant le squelette dun autre et de le modifier  sa volont.
Nhsitez pas a  regarder le code des autres modes, cest souvent trs instructifs.
<HR>
<H2>Perspective:</H2>
Dernierement on peut utiliser la librairie mesa (la libraire OpenGL de silicon GNU) dans xlock, quelquun sest propose de faire le screen-saver tube de Win NT.
Je pense quil serait interressant de joindre a xlock un langage simple ( genre logo un peu plus evolue).
<HR>
<H2>Reference: </H2>
HACKERS.GUIDE qui se trouve dans le repertoire docs ( jai essaye de le traduire :)<p>
	    X_Window programmation avec les Xt-Intrinsics Douglas A YOUNG MASSON PARIS.<p>
<HR>
Voila jespere que vous prendrez plaisir a ajouter des nouveaux modes  xlock; cest une maniere de programmer facilement des graphismes sous X11. Un petit conseil le mainteneur de xlock est un fan de casse tte et compagnie.
Bon Xlock.
<p>
Charles VIDAL: vidalc@club-internet.fr<p>
mode flag, fadeplot, bubble<p>
createur de xmxlock : GUI launcher de xlockmore.<p>

</BODY>
</HTML>