gitweb rectification
[adesklets.git] / doc / adesklets_fr.texi
blob63e1c6e4b6b4d4c254f7b732907b1cee350fa335
1 \input texinfo   @c -*-texinfo-*-
2 @comment %**start of header
3 @setfilename adesklets_fr.info
4 @documentlanguage fr
5 @include version_fr.texi
6 @settitle adesklets @value{VERSION}
7 @syncodeindex pg cp
8 @comment %**end of header
9 @copying
10 Ce manuel concerne adesklets (version @value{VERSION}, @value{UPDATED}).
12 Copyright @copyright{} 2004, 2005
13 S.Fourmanoit @email{syfou@@users.sourceforge.net}. 
15 Traduction française originale de Guillaume Boitel @email{g.boitel@@wanadoo.fr}.
17 [ Ce document n'est malheureusement pas à jour. 
18 Vous pouvez aider à la traduction? Faites-nous le savoir! ]
20 @quotation
21 Permission est accordée de copier, distribuer et/ou modifier ce document selon
22 les termes de la Licence de Documentation Libre GNU (GNU Free Documentation
23 License), version 1.1 ou toute version ultérieure publiée par la Free Software
24 Foundation ; sans Sections Invariables ; avec les Textes de Première de
25 Couverture qui sont "A GNU Manual". Une copie de la présente Licence est
26 incluse dans la section intitulée "GNU Free Documentation License".
27 @end quotation
28 @end copying
30 @c Define useful weblink macro
31 @macro weblink{link}
32 @html
33 <a href="
34 @end html
35 \link\
36 @html
37 ">\link\</a>
38 @end html
39 @end macro
41 @c Define weblink2 macro: a variation on the previous one
42 @macro weblink2{desk,link}
43 @html
44 <a href="\link\">
45 @end html
46 \desk\
47 @html
48 </a>
49 @end html
50 @end macro
52 @dircategory Graphics
53 @direntry
54 * adesklets in french: (adesklets_fr).      Another desklets container (in French).
55 @end direntry
57 @titlepage
58 @title adesklets
59 @subtitle pour la version @value{VERSION}, @value{UPDATED}
60 @author Guillaume Boitel (@email{g.boitel@@wanado.fr})
61 @page
62 @vskip 0pt plus 1filll
63 @insertcopying
64 @end titlepage
66 @contents
68 @ifnottex
69 @node Top
70 @top adesklets
72 @ifnothtml
73 Suivez le lien pour la version originale
74 (@xref{Top,Version anglaise, Contents, adesklets,}.).
75 @end ifnothtml
76 @ifhtml
77 @weblink2{[Version anglaise],../en/index.html}
78 @end ifhtml
80 @insertcopying
81 @end ifnottex
83 @menu
84 * A propos d'adesklets::
85 * Nouveautés::
86 * Installation d'adesklets::
87 * Utilisation d'adesklets::
88 * Programmation d'adesklets::
89 * Extension d'adesklets::
90 * Recherche d'aide!::
91 * Questions fréquemment posées::
92 * Copier ce Manuel::
93 * Clé publique Open PGP::
94 * Index::
95 @end menu
97 @noindent Une version à jour de ce document peut être trouvée en ligne :
98 @weblink{http://adesklets.sf.net/}.
100 @noindent Captures d'écrans, codes sources, etc. peuvent aussi être trouvés
101 sur la page du projet : @weblink{http://sf.net/projects/adesklets/}.
103 @node A propos d'adesklets
104 @chapter Qu'est-ce qu'adesklets ?
106 @section Réponse courte
108 @command{adesklets} `adesklets' est une console interactive
109 d'@weblink2{Imlib2,http://www.enlightenment.org/pages/imlib2.html} pour le
110 système X Window. Il permet à des langages de script d'écrire de manière
111 propre et simple des applets graphiques intégrés au bureau (i.e. "desklets")
112 de belle apparence et légèrement interactif.
114 Il peut aussi être utilisé comme un éditeur graphique en ligne de commande,
115 un peu comme @weblink2{ImageMagick,http://www.imagemagick.org/}, mais avec
116 des fonctionnalités différentes.
118 @section Réponse longue
120 @command{adesklets} signifie "another desklets [container]". Il a été écrit
121 comme une alternative à d'autres programmes tels que :
123 @enumerate
124 @item
125 GNOME gDesklets (@weblink{http://gdesklets.gnomedesktop.org/})
126 @item
127 KDE SuperKaramba (@weblink{http://netdragon.sourceforge.net/}).
128 @item
129 GKrellM (@weblink{http://www.gkrellm.net/})
130 @end enumerate
132 Puisque ce projet s'appelle 'a'desklets, il est encore possible, pour
133 commencer des projets semblables, d'utiliser l'espace de 'b' à 'z' desklets,
134 à l'exception de 'g' desklets, qui est déjà pris.
136 Plus sérieusement, tous ces programmes sont bons. Néanmoins, les deux premiers
137 ont des pré-requis très lourds en termes de dépendances de bibliothèque
138 ; de base les gDesklets requiert que le bureau GNOME soit entièrement
139 installé (plus quelques bibliothèques spécialisées telles que gnome-python),
140 tandis que SuperKaramba a besoin de toutes les bibliothèques de KDE ainsi
141 que de l'environnement base. Ceci se répercute sur l'exécution des autres
142 taches@footnote{Bien sur, c'est uniquement l'opinion de l'auteur - et ces
143 deux applications ont fait de gros progrès sur la gestion des ressources
144 de version en version.}. D'autre part, alors que GkrellM est plus léger
145 (bien qu'il dépend toujours de GTK+), il ne fournit pas la même qualité en
146 terme de "présentation" (selon les goûts de l'auteur, naturellement) ou de
147 " scriptabilité " par rapport aux deux autres.
149 De ce constat est né @command{adesklets}. Il fournit :
151 @itemize
152 @item
153 un cadre minimal pour des desklets X Window totalement intégré dans le bureau,
154 avec une facilité d'emploi pour gérer leur lancement, leur placement et
155 leur arrêt.
156 @item
157 une API de dessin générique, riche et facile d'emploi semblable à celle
158 de gDesklets et de SuperKaramba concernant sa qualité visuelle, grâce à la
159 bibliothèque Imlib2.
160 @item
161 une dépendance très limitée de bibliothèques : utilisation de la très bonne (et
162 rapide) bibliothèque Imlib2 pour toutes les opérations graphiques. Aucune boite
163 à outils de fenêtre n'est utilisé : le programme repose directement sur xlib.
164 @item
165 un léger, robuste et petit interpréteur potentiellement utilisable avec
166 toutes sortes de langages de scripts, grâce à une syntaxe propre, limitée et
167 homogène. Dans cette version @value{VERSION}, le support de Python a été fourni
168 séparément. Dans les futurs versions, le support de Perl et Ruby sont prévus :
169 n'hésitez pas à contribuer afin que votre langage préféré soit supporté !
170 @item
171 un usage minimal de l'espace disque, de la mémoire vive et du
172 processeur. Typiquement, avec la glibc-2.3.4 et le noyau Linux 2.6 sur
173 une architecture x86, l'unique exécutable représente moins de 120 Ko sur
174 le disque et prend moins de 3Mo de mémoire virtuelle par desklet, après
175 initialisation, et quasiment aucun cycle de processeur (y compris ceux du
176 script python interprété) lorsque le desklet est lancé.
178 @end itemize
180 Il ne fournit PAS :
181 @itemize
182 @item
183 une API de fenêtre sophistiquée, ni même un accès aux widgets en dehors de
184 menus gris nus et laids : vous ne pouvez clairement pas écrire une application
185 GUI avec ces seuls desklets.
186 @item
187 des mécanismes compliqués (ni même de mécanismes clairs, en la matière)
188 pour la configuration de script. Les développeurs de scripts sont libres (ou
189 condamné, selon la façon de voir les choses) de faire ce qu'il leur convient.
190 @item
191 un support pour tout ce qui n'est pas entièrement compatible avec un système
192 POSIX. Par exemple, ce serait vraiment surprenant qu'il puisse être possible
193 de le compiler sur cygwin.
194 @item
195 un gestionnaire avec de nombreuses fonctionnalités pour les événements
196 utilisateurs. @command{adesklets} vise une faible consommation de ressource
197 et une fiabilité ; seuls quelques événements - principalement ceux concernant
198 le pointeur - sont utilisables dans l'API.
199 @end itemize
201 @node Nouveautés
202 @chapter Nouveautés
203 @unnumberedsec Quoi de neuf pour la version 0.3.1 ?
204 Cette version corrige un oubli en implantant la gestion de l'interruption
205 des barrières temporelles (time gate) par des évènements X. Cette correction
206 est essentielle à la bonne marche de plusieurs effets dynamiques possibles.
208 @unnumberedsec Quoi de neuf pour la version 0.3.0 ?
209 Ceci est une nouvelle version mineure. Nous nous sommes beaucoup souciés de
210 la portabilité depuis les toutes premières versions de adesklets; avec cette
211 version, le packetage compile et tourne dans accro sur FreeBSD et NetBSD 
212 (@xref{Portabilité}.). La gestion des évènements a également été revue à l'interne,
213 et le packetage python étendu pour supporter la modification dynamique des 
214 évènements interceptés (voir @file{test/test_events.py}).
216 L'interpréteur répond maintenant aux désidérata de l'auteur, et ne devrait
217 pas être significativement étendu dans le futur; tout est relativement en
218 place pour écrire le plein spectre des desklets qu'il désirait couvrir, incluant
219 les animations.
221 @unnumberedsec Quoi de neuf pour la version 0.2.1 ?
222 Cette version corrige un bogue mineur quant à la compatibilité avec 
223 les versions de la librairie GNU history incluse avec GNU readline de version
224 plus ancienne que 5.0. Merci à Mike Prinat pour avoir rapporté cette erreur.
226 @unnumberedsec Quoi de neuf pour la version 0.2.0 ?
227 Ceci est une nouvelle version mineure. L'interpréteur supporte dorénavant
228 les variables textuelles (la substitution dynamique de chaînes, pour être précis),
229 ainsi que l'exécution de séquences préenregistrées de commandes sous des contraintes
230 précises de temps (un mode indirect d'exécution); cela donne aux desklets un moyen
231 de générer des animations fluides. Lancer le script de démonstration
232 @file{test/fading.py} du packetage de base pour voir ces nouvelles capacités
233 à l'oeuvre.
235 Les développeurs, quant à eux, ont maintenant accès à une plateforme complètement
236 réécrite d'enregistrement de rapports d'exécution de toutes session 
237 de l'interpréteur (à des fins de débogage).
239 @unnumberedsec Détails
240 Allez voir @file{ChangeLog} pour obtenir l'historique complète des changements 
241 apportés.
243 @ifplaintext
244 @c Sets up a marker for automated INSTALL_FR file generation
245 INSTALL_BEG
246 @node Installation d'adesklets
247 @unnumbered Installation d'adesklets
248 @end ifplaintext
249 @ifnotplaintext
250 @node Installation d'adesklets
251 @chapter Installation d'adesklets
252 @end ifnotplaintext
254 @section Pré-requis pour la compilation
256 Pour compiler adesklets à partir des sources, vous avez besoin de :
258 @itemize
259 @item
260 Un compilateur supportant le C ANSI ainsi que les macros variadiques (à peu
261 près toutes les versions de @weblink2{gcc,http://gcc.gnu.org} à partir de
262 la 2.7.0 devraient fonctionner, ou n'importe quel compilateur sorti ces dix
263 dernières années)
264 @item
265 Les entêtes@footnote{Excepté pour les compilations sans fichiers entêtes, utile
266 pour les environnements serveurs et équivalents - lire la suite pour de plus
267 amples informations.} et les bibliothèques @weblink2{X11,http://www.x.org/}.
268 @item
269 Imlib2 1.1.2 ou supérieure (la plus récente sera la meilleure : vous pouvez
270 la télécharger sur @weblink{http://sourceforge.net/projects/enlightenment/}).
271 @item
272 @weblink2{GNU readline,http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html}
273 @item
274 un système raisonnablement compatible POSIX
275 @end itemize
277 @noindent Quand présents dans le système, les composantes suivantes peuvent 
278 également être utilisées:
280 @itemize
281 @item
282 @weblink2{fontconfig,http://www.fontconfig.org/}, pour la détections automatiques 
283 de l'ensemble des polices utilisables présentes dans le système
284 @item
285 @weblink2{GNU history,http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html}, 
286 le complément fidèle de GNU readline permettant l'enregistrement d'historiques 
287 de commandes
288 @item
289 @weblink2{Python,http://www.python.org} 2.3 ou supérieure, si vous désirez
290 le support pour Python (vous en aurez probablement besoin à ce niveau :
291 c'est le seul langage de script supporté pour l'instant)
293 @end itemize
294 @section Note sur la portabilité
295 @anchor{Portabilité}
296 Ce paquetage est construit en gardant à l'esprit la portabilité - toutes les
297 extensions spécifiques ont été évitées, et les spécifications (ANSI, SVID
298 3, BSD 4.3, POSIX) sont suivies de façon scrupuleuse. Néanmoins, tous les
299 développement ont été fait sur un seul système Linux : il est très probable
300 qu'adesklets ne compilera pas ou ne fonctionnera pas comme prévu dans
301 plusieurs cas. Régler ces problèmes est important pour nous.
303 @strong{Mise à jour}: adesklets a été porté et testé avec succès par les développeurs sur plusieurs systèmes. Au moment rendre publique la version @value{VERSION}, le packetage a été compilé et utilisé avec succès sous:
304 @itemize
305 @item Linux 2.4 i386, glibc 2.1.3, gcc 2.95.2 (Debian woody)
306 @item Linux 2.6 i686, glibc 2.3.4, gcc 3.4.3 (Gentoo linux 2004.2)
307 @item Linux 2.6 amd64, glibc 2.3.3, gcc 3.4.2 (Fedora core release 3)
308 @item FreeBSD i386, gcc 2.95.4 (4.10-BETA)
309 @item NetBSD i386, gcc 2.95.3 (1.6.1)
310 @end itemize
312 Vous avez vous-même essayé de faire tourner adesklets sur une architecture 
313 non citée plus haut? Laissez-nous le savoir, surtout si ça n'a pas marché.
315 @section Téléchargement du logiciel
317 La version à jour du logiciel (en archive source bzipée) peut
318 être trouvée sur la page du projet située sur sourceforge :
319 @weblink{http://sf.net/projects/adesklets/}
321 Vous pouvez l'extraire à partir de la console avec @command{tar}. Avec la
322 version @value{VERSION}, la ligne de commande devrait être :
323 @example
324 tar xvjf adesklets-@value{VERSION}.tar.bz2
325 @end example
326 ou, si la version que vous avez installée de @command{tar} ne supporte pas
327 les filtres d'archives bzip2 :
328 @example
329 bzcat adesklets-@value{VERSION}.tar.bz2 | tar xv
330 @end example
332 @section Vérification optionelle de l'intégrité du logiciel
334 Pour adesklets @value{VERSION},  vous pouvez également télécharger de
335 @weblink2{sourceforge,http://sf.net/projects/adesklets/} une signature 
336 détachée sous forme ascii nommée @command{adesklets-@value{VERSION}.tar.bz2.asc},
337 que vous pourrez utiliser avec la clé publique de l'auteur 
338 (@pxref{Clé publique Open PGP}, en appendice) pour vous assurer de 
339 l'intégrité du paquetage. Par exemple, avec @command{GnuPG}
340 (@weblink{http://www.gnupg.org/}), vous utiliseriez la commande:
342 @example
343 gpg --verify adesklets-@value{VERSION}.tar.bz2.asc adesklets-@value{VERSION}.tar.bz2
344 @end example
346 Vous pouvez également obtenir la clé publique pour
347 l'adresse @email{syfou@@users.sourceforge.net}
348 de plusieurs serveurs de clés publics tel @weblink{http://www.keyserver.net/} ou
349 encore @weblink{http://pgp.mit.edu/}. N'hésitez pas à contacter l'auteur directement
350 si vous désirez vous assurer plus avant l'authenticité de cette clé.
352 @section Compilation et Installation :
354 adesklets fournit les scripts usuels autoconf/automake des paquetages GNU.
356 Donc, dans la plupart des cas, l'installation suit les trois étapes normales :
358 @enumerate
359 @item
360 `cd' dans le répertoire contenant le code source du paquetage et tapez
361 `./configure' pour configurer le paquetage pour votre système.  Si vous utilisez
362 `csh' sur une ancienne version de System V, vous devrez peut-être tapez
363 `sh ./configure' afin de prévenir la tentative de `csh' d'exécuter lui-même
364 `configure'.
366 L'exécution de `configure' peut prendre du temps.  Pendant qu'il s'exécute,
367 il écrit quelques messages qui vous informent des fonctionnalités qu'il est
368 en train de vérifier.
369 @item
370 Tapez `make' pour compiler le paquetage.
371 @item
372 Tapez `make install' pour installer les programmes, tous les fichiers de
373 données et la documentation.
374 @end enumerate
376 Vous pouvez enlever les programmes binaires et les fichiers objets du
377 répertoire qui contient le code source en tapant `make clean'.  Pour enlever
378 également les fichiers que `configure' a créé (ainsi vous pourrez compiler
379 le paquetage pour une autre type d'ordinateur), taper `make distclean'.
381 @section Compilateurs et Options :
383 Certains systèmes requièrent des options inhabituelles pour la compilation
384 ou l'édition des liens que le script `configure' ne connaît pas.  Vous pouvez
385 donner à `configure' des valeurs initiales pour des variables en les déclarant
386 dans l'environnement.  En utilisant un shell compatible Bourne, vous pouvez
387 faire cela en ligne de commande comme ceci :
388 @example
389 CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
390 @end example
391 @noindent Ou dans les systèmes qui ont le programme `env', vous pouvez faire
392 comme cela :
393 @example
394 env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
395 @end example
397 @section Fonctionnalités Optionnelles :
399 adesklets possède quelques fonctionnalités optionnelles que vous pouvez
400 sélectionnez ou non à partir du script de configuration. Tapez :
402 @example
403 ./configure --help
404 @end example
406 @noindent pour une description courte et complète. En voici quelques une
407 intéressantes :
409 @itemize
410 @item
411 Vous pouvez choisir de compiler adesklets sans aucun support pour X
412 (@command{--without-x}).
413 Vous aurez une version qui n'est manifestement pas faite pour le rendu de
414 desklets, mais bonne pour de la manipulation d'image en ligne de commande.
415 @item
416 Vous pouvez enlever le support pour d'autres paquetages ainsi :
417 @command{--without-history}, @command{--without-fontconfig}
418 @end itemize
420 @node Utilisation d'adesklets
422 @chapter Utilisation d'adesklets
424 @ifplaintext 
425 INSTALL_END
426 @end ifplaintext
428 @section ... Comme un conteneur de desklets
430 Par lui-même, adesklets fait peu : il fournit seulement le nécessaire et
431 rien de plus ! Vous avez besoin soit de lui dire ce qu'il doit faire en
432 lui passant la commande (voir la section suivante) soit d'autres scripts
433 (les desklets) qui le piloteront pour vous.
435 @noindent Pour l'instant, il y a seulement qu'un petit nombre de desklets
436 disponible : vous pouvez les trouvez sur la page du projet sur sourceforge en
437 tant que téléchargements séparés:
438 @weblink{http://sf.net/projects/adesklets/} . Ils vous donneront un aperçu 
439 de ce dont @command{adesklets} est capable.
441 @subsection Ajouter un nouveau desklet à votre affichage X
442 Pour ajouter un nouveau script de desklet, il suffit simplement de :
444 @enumerate
445 @item
446 Télécharger sa tarball et la désarchiver quelque part dans votre répertoire
447 personnel
448 @item
449 Lire le fichier README ; les pré-requis ou instructions spécifiques y seront
450 donnés. Habituellement, tout ce dont vous avez besoin sont une installation
451 d'adesklets et un serveur X lancé, puis de lancer le script exécutable à
452 partir de votre répertoire de base.
453 @end enumerate
455 @noindent Notez bien que :
457 @itemize
458 @item
459 Lancer le même script plusieurs fois va lancer plusieurs desklets.
460 @item
461 Sur les ordinateurs disposant de plusieurs moniteurs, le script sera lancé
462 sur son écran hérité par défaut (pour l'instant, si vous ne faites rien
463 de spécial, appeler un script à partir d'un xterm sur l'écran 1 lancera le
464 desklet sur l'écran 1).
465 @end itemize
467 @noindent La plupart du temps, les scripts de desklets sont faits
468 pour fonctionner aussi longtemps que vous ne leur dites pas de
469 s'arrêter. L'utilisateur a un contrôle total sur le démarrage, l'arrêt,
470 le redémarrage (quand c'est possible) et le positionnement du desklet -
471 le desklet n'a aucun contrôle sur ces opérations.
473 @noindent Les quelques réglages de l'utilisateur sont stockés dans le fichier
474 @command{.adesklets} de votre répertoire personnel. Habituellement, vous
475 n'avez pas à éditer ce fichier vous-même. Si vous le faite, assurez-vous
476 qu'aucune instance de @command{adesklets} ne s'exécute en même temps.
478 @subsection Restaurer les précédents desklets sur une nouvelles session X
479 Invoquer @command{adesklets} sans argument :
480 @example
481 adesklets
482 @end example
483 @noindent est suffisant pour redémarrer tous les desklets qui tournaient la
484 dernière fois que vous avez tué le serveur X (dans ce mode, @command{adesklets}
485 sortira rapidement par lui-même : il n'est pas besoin de les lancer en
486 arrière-plan. adesklets n'utilise pas de démon : chaque applet va créer un
487 interpréteur @command{adesklets} indépendant comme un processus fils). 
488 Invoquer @command{adesklets} de cette façon quand des desklets sont déjà 
489 en fonction forcera leur arrêt avant leur redémarrage@footnote{Autant
490 les instances d'@command{adesklets} que leurs parents immédiats recevront
491 alors un signal SIGKILL.}.
493 @noindent Si vous pensez utilisez des desklets régulièrement, vous
494 devriez mettre la précédente commande @code{adesklets} quelque part dans
495 l'initialisation de votre session X. Je ne peux pas dire où avec précision,
496 puisque cela change énormément de système en système. Regardez sur :
497 @weblink{http://www.google.com/search?q=''x window''+startup}  pour une
498 aide générale.
500 @section ... Comme un éditeur graphique en ligne de commande
502 Vous pouvez aussi utiliser adesklets comme un éditeur graphique en ligne de
503 commande. Si vous tapez, dans une console :
504 @example
505 adesklets :
506 @end example
507 @noindent Vous obtiendrez quelque chose de similaire à ceci :
508  @anchor{prompt}
509 @example
510 adesklets 0.1.0 (Fri Jan 28 19:09:13 EST 2005), on Linux 2.6.10
511 [gcc 3.4.3 20041125 (Gentoo Linux 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7)]
512 Press TAB for hints.
513 0 >>> _
514 @end example
516 @noindent La dernière ligne est une invite. Elle vous dit que vous êtes prêt
517 à entrer la commande numéro 0. Dans adesklets @value{VERSION}, vous avez
518 environ 150 commandes au bout des doigts. Grâce à GNU readline, beaucoup
519 d'auto-complétements sont disponibles, ce qui vous donne une facilité
520 d'utilisation. Pressez TAB dans le nom d'une commande ou sur le premier
521 argument vous donne des informations utiles. @xref{primer,,une introduction
522 à adesklets}, pour plus d'information.
524 @node Programmation d'adesklets
525 @chapter Programmation d'adesklets
526 @section Une introduction à adesklets
527 @anchor{primer}
529 Comme expliqué ci-dessus (@xref{A propos d'adesklets}.), adesklets est
530 principalement une console interactive d'Imlib2, avec quelques fonctionnalités
531 supplémentaires :
533 @itemize
534 @item
535 Quand un affichage X est présent, gestion automatique d'une simple fenêtre.
536 @item
537 Support automatique pour la pseudo-transparence
538 @item
539 Gestion d'applets persistants entre sessions
540 @end itemize
542 @noindent Commençons un session interactive typique pour voir ce qui se
543 passe. Sous X, ouvrez un terminal et tapez :
544 @example
545 adesklets :
546 @end example
548 @noindent Comme dans la section précédente (@xref{prompt,, 'Utilisation
549 d'adesklets comme un éditeur graphique en ligne de commande' }.), vous obtenez
550 une invite. Maintenant entrez la commande '@code{images_info}'. Vous devriez
551 voir en réponse sur la sortie standard :
552 @example
553 2 images
554 id 0 width 1 height 1 alpha 1 filename (null)
555 id 1 width 1 height 1 alpha 1 filename (null)
556 command 0 ok: images_info
557 @end example
559 @noindent Cela signifie que vous avez deux images : image 0 et image 1,
560 et quelles ont une taille de 1x1 pixel. Ceux sont les seules images que
561 vous ne pouvez jamais détruire ni modifier comme vous le souhaitez (les
562 redimensionner indépendamment, les retourner diagonalement, etc. Lisez ce
563 qui suit pour savoir pourquoi.)
565 @itemize
566 @item
567 Image 0 est l'image d'avant-plan. Par défaut, elle est la seule image qui
568 est affichée dans une simple fenêtre gérée par @command{adesklets}.
569 @item
570 Image 1 est l'image d'arrière-plan. Par défaut, elle contient toujours le
571 contenu de la fenêtre racine (le bureau) directement sous cette fenêtre : sans
572 modification de notre part, elle est toujours mise à jour lorsque l'utilisateur
573 la déplace, lorsqu'il la redimensionne, lorsque le fond d'écran change, etc.
574 @end itemize
576 @noindent Mais ou sont ces fenêtres ? Pour l'instant ce sont seulement des
577 images de 1x1 pixel, et elles ne sont pas montrées@footnote{"Mappé" dans un
578 patois de X Window} à l'écran. Ainsi, redimensionnons les à 100x100 pixels :
579 tapez '@code{window_resize 100 100}'. Maintenant, si vous retapez la commande
580 '@code{images_info}', vous obtiendrez :
581 @example
582 2 images
583 id 0 width 100 height 100 alpha 1 filename (null)
584 id 1 width 100 height 100 alpha 1 filename (null)
585 command 2 ok: images_info
586 @end example
588 @noindent Vous voyez ? Les images d'avant-plan et d'arrière-plan ont été
589 redimensionées à 100x100 pixels : de plus, l'arrière-plan a été mis à jour
590 pour contenir la nouvelle image de fond. Maintenant, rendons cette fenêtre
591 visible. Tapez les deux commandes : '@code{window_reset managed}' et enfin
592 '@code{window_show}'.
594 @noindent La première commande demande à adesklets de laisser votre
595 gestionnaire de fenêtre "géré" votre fenêtre (ce qui n'est pas fait par défaut)
596 : cela signifie que la fenêtre va être décorée, et que  vous pourrez changer sa
597 visibilité@footnote{Une fenêtre "non-gérée" est très utile pour les desklets
598 : c'est comme si c'était une partie de la fenêtre racine puisqu'elle peut
599 être construite pour ne jamais être en avant-plan et pour rester affichée
600 lorsque l'on change d'espace de travail.} de façon interactive. La seconde
601 montre votre fenêtre de 100x100. Rien d'impressionnant : un carré noir de
602 100x100 avec une barre de titre et des bordures.
604 @noindent Comme dit plus haut, seule l'image 0 (avant-plan) est affichée par
605 défaut. Maintenant, tapons : '@code{window_set_transparency 1}'. Wouah! Nous
606 voyons la fenêtre racine en dessous ! Avec "window transparency"
607 activé, l'image 1 (arrière-plan) est d'abord copiée dans la fenêtre, puis
608 l'image 0 (avant-plan) qui est entièrement noire et transparente, est mise
609 par-dessus@footnote{Bien... Pas tout à fait : il y a un buffer qui est mise
610 en jeu pour la performance, mais l'opération est logiquement équivalente à
611 cette description.}.
613 @noindent Il est temps de parler des couleurs : souvenez-vous qu'adesklets
614 est une console d'Imlib2 : en conséquence, comme Imlib2@footnote{Gardez
615 votre documentation d'Imlib2 à proximité : c'est très utile -
616 @weblink{http://atmos.org/docs/imlib2/index.html} fournit une agréable
617 introduction, bien qu'un peu ancienne.}, les couleurs sont toujours de
618 véritables couleurs 32 bits codées en RVBA - huit bits par canal (de 0 à
619 255), incluant un canal alpha (transparence). La conversion de palette se
620 fait  automatiquement si la profondeur de votre écran est inférieure, vous
621 n'avez pas à vous en occuper. Si vous tapez : '@code{context_get_color}',
622 vous obtiendrez :
623 @example
624 command 0 ok: context color 255 255 255 255
625 @end example
627 @noindent Imlib2 est le roi de l'état de la machine ; ainsi, il vient avec un
628 "contexte" qui garde en mémoire une série d'attributs qui seront utilisés dans
629 des opérations futures. Par exemple, nous savons maintenant que la couleur
630 qui sera utilisée, aussi longtemps que nous ne la modifions pas, sera un
631 blanc opaque (rouge=255, bleue=255, vert=255, alpha=255). Si nous tapons :
632 '@code{context_get_image}', il nous retourne :
633 @example
634 command 0 ok: context image 0
635 @end example
637 @noindent Cela signifie que toute opération que nous effectuons sur une fenêtre
638 est directement fait sur l'image d'avant-plan. Dessinons un rectangle plein
639 semi-transparent de couleur magenta sur l'avant-plan. La commande pourra être :
640 '@code{context_set_color 255 0 0 200}' et '@code{image_fill_rectangle 25 25
641 50 50}'. Élégant, n'est-ce pas ?
643 @noindent Si vous avez l'habitude de programmer avec Imlib2, vous devriez
644 avoir remarqué que ces dernières commandes vous sont familières. C'est
645 normal : la plupart des fonctions C d'Imlib2 sont présentées de
646 la même façon dans les 'commandes' d'adesklets. Ainsi, la commande
647 d'adesklets  '@code{image_fill_rectangle}' suit la même sémantique que
648 la fonction '@code{imlib_image_fill_rectangle()}' d'Imlib2, la commande
649 '@code{context_set_color}' que la fonction '@code{imlib_context_set_color()}',
650 etc. Les deux seules différences significatives (et systématiques) sont que
651 partout où vous utiliserez un objet '@code{Imlib_Quelquechose}' en C, vous
652 utiliserez un entier ID avec adesklets, et dans la sémantique des fonctions
653 '@code{imlib_free_Quelquechose()}' on a besoin de donner un entier ID au
654 lieu d'un objet de ce type permettant de libérer le contexte sélectionné.
656 @noindent Illustrons cela. Chargeons la police "Vera" inclue dans adesklets
657 à la taille 20pt, mettons la en police par défaut, et écrivons dans un bloc
658 blanc opaque 'Hello' en diagonale sur l'image d'avant-plan du coin haut
659 gauche avant de décharger la police. Cela devrait ressembler à :
661 @example
662 6 >>> load_font Vera/20
663 command 6 ok: new font 0
664 7 >>> context_set_font 0
665 command 7 ok: context_set_font 0
666 8 >>> context_set_direction text_to_angle
667 command 8 ok: context_set_direction text_to_angle
668 9 >>> context_set_angle 45
669 command 9 ok: context_set_angle 45
670 10 >>> context_set_color 255 255 255 255
671 command 10 ok: context_set_color 255 255 255 255
672 11 >>> text_draw 0 0 Hello
673 command 11 ok: text_draw 0 0 Hello
674 12 >>> free_font 0
675 command 12 ok: free_font 0
676 @end example
678 @noindent Si vous regardez votre documentation d'Imlib2, vous remarquerez
679 immédiatement les deux différences que l'on vient de dire : toutes les
680 références à la police Vera/20 sont faites par un entier ID (0 ici), et
681 la commande '@code{free_font}', contrairement à la fonction correspondante
682 '@code{imlib_free_font()}', est appelée avec l'ID de la police comme argument
683 plutôt que le contexte de la police.
685 @noindent A partir de là, imaginons que vous voulez sauver l'image résultante
686 ; ce n'est pas un problème - tapons : '@code{save_image out.png}', et
687 l'avant-plan est sauvé dans un fichier "out.png" dans le répertoire de
688 travail courant@footnote{Pour que ça marche, vous avez besoin d'avoir une
689 installation d'Imlib2 proprement configuré pour utiliser libpng, ou vous
690 risquez de recevoir une erreur "no loader for file format".}. Maintenant,
691 juste pour le plaisir, quittons adesklets, et lançons une autre session
692 interactive pour voir si nous pouvons recharger cette image. Tapez juste
693 la commande "@code{quit}" ou pressez ^D (Control D: fin de fichier), votre
694 nouvelle session devrait ressembler à ceci :
696 @example
697 0 >>> window_resize 100 100
698 command 0 ok: window_resize 100 100
699 1 >>> window_reset managed
700 command 1 ok: window_reset managed
701 2 >>> window_set_transparency 1
702 command 2 ok: window_set_transparency 1
703 3 >>> load_image out.png
704 command 3 ok: new image 2
705 4 >>> blend_image_onto_image 2 0 0 0 100 100 0 0 100 100
706 command 4 ok: blend_image_onto_image 2 0 0 0 100 100 0 0 100 100
707 5 >>> window_show
708 command 5 ok: window_show
709 6 >>> free_image 2
710 command 6 ok: free_image 2
711 @end example
713 @noindent Bien sur, nous voulons visualiser le résultat - c'est
714 pourquoi nous avons utilisez les commandes '@code{window_reset}',
715 '@code{window_set_transparency}' et '@code{window_show}' : elles n'ont
716 pas d'autres utilités. La commande '@code{blend_image_onto_image}' vient
717 droit de Imlib2 aussi ; elle prend la nouvelle image 2 que l'on vient de
718 crée lors de la troisième commande, et la met dans un contexte d'image
719 (image 0 - avant-plan par défaut), à partir de ces coordonnées (0,0) pour
720 une taille de 100x100 pixels, et la met dans un rectangle allant de (0,0)
721 et de taille 100x100 pixels de l'image 0. Il est finalement bon de noter
722 que, avec adesklets, il y a toujours une image dans le contexte d'Imlib2 :
723 dès que vous essayer de libérer l'image courante, le contexte d'image est
724 remis à l'image d'avant-plan.
726 @noindent D'accord, c'est presque la fin de cette introduction. A partir de
727 là vous pouvez jouer avec adesklets - il est vraiment facile de l'utiliser si
728 vous vous êtes déjà familiarisé avec Imlib2. Sinon, votre meilleure ressource
729 est certainement d'avoir la documentation d'Imlib2 pas trop loin. :-)
731 @noindent Quelques dernières astuces :
732 @itemize
733 @item
734 Si vous êtes fatigué de taper, et taper, n'oubliez pas l'auto-complémentation :
735 'TAB' vos problèmes au loin !
736 @item
737 Si vous voulez avoir de l'aide sur comment faire quelque chose, il existe
738 la commande '@code{help}'.
739 @item
740 Si vous exécutez une série de commandes, que ça ne marche pas et que tous
741 cet usage interactif vous fatigue :
742 @enumerate
743 @item
744 Utilisez la commande '@code{history}' pour afficher votre session courante
745 dans un fichier@footnote{Pour que ça marche, vous avez besoin d'avoir GNU
746 history lorsque vous compilez adesklets.}.
747 @item
748 Utilisez l'option '-f' avec adesklets pour prendre une commande à partir
749 d'un fichier plutôt que de la console tty.
750 @item
751 Si vous essayez de visualiser quelque chose, insérez une commande
752 '@code{pause}' à la fin du script pour geler l'interpréteur.
753 @item
754 Tous les caractères qui se trouve après le dièse '#' jusqu'à la fin de la
755 ligne seront enlevés (Cela est utile pour écrire des commentaires).
756 @end enumerate
757 @end itemize
759 @noindent Voici un exemple :
761 @example
762 #!/usr/bin/env adesklets -f
764 # Rendre la fenêtre 'géré'
766 window_reset managed
768 # Redimmensioner la fenêtre à 100x100 pixels
770 window_resize 100 100
772 # Montrer la fenêtre, puis la geler pendant 10 secondes avant de sortir
774 window_show
775 pause 10
776 @end example
778 @noindent Vous aurez juste besoin de rendre ce script exécutable et de le
779 lancer. Comme d'habitude, les sorties seront affichées sur la sortie standard.
781 @section Véritable programmation avec adesklets : écriture d'un script
782 de desklet
784 Lorsque vous serez prêt pour un véritable travail@footnote{:-)}, vous pourrez
785 vouloir utilisé un véritable langage de script  plutôt que le rudimentaire
786 interpréteur @command{adesklets} que nous avons utilisé dans l'introduction ;
787 vous ne savez jamais quand les variables sont accessibles.
789 Au moment ou j'écris ces lignes (@value{UPDATED}), seul le support pour
790 Python est complet@footnote{adesklets a été écrit pour être facile d'usage
791 pour différents langages interprétés ; le futur développement inclue des
792 encapsulations pour Perl et Ruby - n'hésitez pas à proposer votre aide si vous
793 voulez accélérer les choses.}. A partir de python, les choses ne sont pas très
794 différentes qu'à partir de l'interpréteur : les commandes ont été encapsulées
795 dans des fonctions python, et une classe publique @code{Events_handler} a été
796 construite pour manipuler les retours asynchrones de l'interpréteur. Jetez
797 un coup d'oeil sur le script @file{test/test.py} de l'archive source de la
798 version @value{VERSION} :
800 @verbatiminclude ../test/test_fr.py
802 Voilà ! 26 ligne de code python, et nous avons un desklet parfaitement
803 fonctionnel. Je pense que cela s'explique tout seul : jetez un coup d'oeil à
804 l'aide intégrée de python pour @code{adesklets}, @code{adesklets.functions}
805 et @code{adesklets.Events_handler} pour une bonne et complète explication. En
806 deux mots, tout ce que nous avons fait ici c'est :
808 @enumerate
809 @item
810 Importer le paquetage @code{adesklets} : cela instancie automatiquement un
811 processus fils @command{adesklets} et configure toutes les communications :
812 quand l'initialisation du paquetage ne retourne pas d'exception, cela signifie
813 que l'interpréteur tourne et est prêt à accepter des commandes.
814 @item
815 Faire une sous-classe d'@code{adesklets.Events_handler} et redéfinir des
816 méthodes invoquées pour les événements qui nous intéresse (tous les autres
817 événements ne sont pas simplement ignorés, ils ne sont pas générés).
818 @item
819 Instancier un objet de cette classe, et mettre en boucle infinie
820 @footnote{Cette dernière étape n'est pas obligatoire : le script peut
821 très bien continuer, mais il a été écrit ainsi pour supporter les signaux
822 d'interruptions. Regarder `@code{help(adesklets.Events_handler)}' pour de
823 plus amples informations.}.
824 @end enumerate
826 @noindent Enfin, mentionnons que vous pouvez regarder dans le code
827 source du desklet @file{weather} du @weblink2{site web du projet situé sur
828 sourceforge,http://sourceforge.net/projects/adesklets/} pour un script python
829 pour adesklets plus conséquent.
831 @node Extension d'adesklets
832 @chapter Utilisation d'adesklets à partir d'autres languages
834 [ Traduction en attente ]
836 @node Recherche d'aide!
837 @chapter Contribuer à adesklets
839 Votre aide est la bienvenue! Plusieurs avenue vous permettent de 
840 contribuer significativement à adesklets. Vous pourriez:
841 @itemize
842 @item
843 @strong{Aider à la traduction}. Ce manuel en français n'est malheureusement
844 plus à jour. Si vous êtes un locuteur francophone lisant bien l'anglais,
845 votre aide serait très appréciée pour maintenir ce document.
846 @item
847 @strong{Poster en ligne vos captures d'écran}. Vous êtes un utilisateur 
848 de adesklets et pensez avoir un bureau spécialement réussi? Partager-le 
849 avec le monde, et laissez-le nous savoir; vous en aiderez ainsi d'autres
850 à entendre parler du projet.
851 @item
852 @strong{Écrire de nouveau desklets}. adesklets  est encore en petite
853 enfance : nous sollicitons les talentueux compositeurs de desklets, et nous serions
854 plus qu'enchanté de poster ou de faire des liens vers leur travail en la matière.
855 Qu'il ne s'inquiète pas des changements d'interface : nous avons apassé 
856 beaucoup de temps à y réfléchir, et si on ne peut garantir la stabilité absolue 
857 de l'API, même pour une version si précoce, il devrait malgré tout rester
858 relativement fixe; nous nous attendons en fait bien davantage à résoudre 
859 des bogues et à apporter des changements internes relatifs à la portabilité 
860 qu'à toute autre chose.
861 @item @strong{Ajouter des interfaces pour de nouveau langages}. Contactez 
862 les développeurs avant de commencer question de ne pas perdre de temps si quelque
863 chose de déjà écrit: ils seront heureux de partager leur code avec vous. 
864 Inscrivez-vous à la @weblink2{liste d'envois
865 adesklets-devel,https://lists.sourceforge.net/lists/listinfo/adesklets-devel} sur sourceforge pour un accès direct à ceux-là.
866 @end itemize
868 @noindent Contactez-moi par email à @email{syfou@@users.sourceforge.net}.
870 @node Questions fréquemment posées
871 @appendix Questions fréquemment posées
873 [ Traduction en attente ]
875 @node Copier ce Manuel
876 @appendix Copier ce Manuel
878 @menu
879 * GNU Free Documentation License::  License for copying this manual.
880 @end menu
882 @include fdl.texi
884 @node Clé publique Open PGP
885 @appendix Clé publique Open PGP
887 @verbatiminclude syfou.asc
889 @noindent Vous pouvez également obtenir ce certificat d'un bon nombre de serveurs
890 publics de clés sur Internet, tels @weblink{http://www.keyserver.net/}, ou
891 @weblink{http://pgp.mit.edu/}. Contactez son auteur légitime, 
892 Sylvain Fourmanoit, par courier électronique à l'adresse
893 @email{syfou@@users.sourceforge.net} pour organiser une validation plus correcte
894 de la clé si vous en avez besoin.
896 @node Index
897 @unnumbered Index
899 @printindex cp
901 @bye