<!doctype linuxdoc system>
<article>	
<title>Le syst&egrave;me MGR Window
<author>Vincent Broman
</author>
<date>Edition 30 Mai 1996
<toc>
<sect>Cet HOWTO
<p><verb>	
	    Copyright Vincent Broman 1995
	 Vous pouvez effectuer et distribuer
	 des copies selon les conditions de la GNU General Public License.</verb>


<sect1>Archivage
<p>

Cet HOWTO est archiv&eacute; sur
<tt>ftp://archimedes.nosc.mil/pub/Mgr/MGR-HOWTO.sgml</tt>, et &eacute;galement
 sur <tt>ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/MGR-HOWTO</tt>.
Dans les r&eacute;pertoires adjacents peuvent appara&icirc;tre des fichiers de formats
diff&eacute;rents tels que <tt>MGR-HOWTO.txt</tt>.

<sect1>Authentification
<p>
Les copies de la distribution MGR dues &agrave; Broman doivent &ecirc;tre 
accompagn&eacute;es des fichiers de signature PGP, sign&eacute;es 
<sq>Vincent Broman &lt;broman@nosc.mil&gt;</sq>.

<sect1>Cr&eacute;dits pour cet HOWTO

<p>

Bien que Vincent Broman ait &eacute;t&eacute; l'initiateur de cet HOWTO,
la plupart des informations et des textes furent obtenus &agrave partir
de FAQs, READMEs, etc. &eacute;crits par Stephen Uhler, Michael Haardt,
et d'autres personnes ayant <sq>l'esprit R&eacute;seau</sq>.
Corrections et suggestions par Email &agrave <tt>broman@nosc.mil</tt>.

Uhler fut l'architecte principal de <bf>MGR</bf> -- voir Remerciements
plus loin.

<sect>Qu'est-ce que MGR ?
<p>

   <sect1>Fonction
<p>

<bf>MGR</bf>(ManaGeR) est un syst&egrave;me de fen&ecirc;tres graphiques. <bf>MGR</bf>
fournit un gestionnaire int&eacute;gr&eacute; de fen&ecirc;tres et un &eacute;mulateur de terminal
graphique sur des syst&egrave;mes bitmaps couleurs et monochromes.
<bf>MGR</bf> est contr&ocirc;lable par des menus pop-up activ&eacute;s par souris,
par action du clavier, et par des s&eacute;quences d'&eacute;chappement &eacute;crites par
un client sur des pseudo-terminaux.

<bf>MGR</bf> fournit &agrave chaque client une fen&ecirc;tre avec :
fonctions de contr&ocirc;le terminal en style termcap, primitives graphiques
telles que dessins de lignes et de cercles&nbsp;; am&eacute;nagements pour manipuler les
bitmaps, fontes, ic&ocirc;nes et menus pop-up&nbsp;; commandes pour redessiner et
repositionner les fen&ecirc;tres&nbsp;; et un syst&egrave;me de passage de messages permettant
aux programmes-client d'&eacute;tablir des rendez-vous et d'&eacute;changer des
messages. Les programmes client peuvent demander &agrave &ecirc;tre inform&eacute;s
lorsqu'un changement dans le syst&egrave;me intervient, tel qu'une fen&ecirc;tre
redessin&eacute;e, un clic de souris, ou un message envoy&eacute; &agrave partir d'un
autre programme client. Ces changements sont appel&eacute;s &eacute;v&eacute;nements.
<bf>MGR</bf> notifie un &eacute;v&eacute;nement &agrave un programme client en envoyant une
cha&icirc;ne ASCII dans un format sp&eacute;cifi&eacute; par le programme client. Des applications
existantes peuvent &ecirc;tre int&eacute;gr&eacute;es dans l'environnement sans &ecirc;tre
modifi&eacute;es&nbsp;: <bf>MGR</bf> imite des actions sur le clavier en r&eacute;ponse &agrave des
s&eacute;lections du menu utilisateur ou d'autres &eacute;v&eacute;nements.

<sect1>Conditions requises
<p>

<bf>MGR</bf> tourne couramment sur Linux, FreeBSD, stations Sun 3/4 avec SunOS, et
Coherent. Certaines versions anciennes de <bf>MGR</bf> tournent sur Macintosh,
Atari ST MiNT, Xenix, 386-Minix, DEC 3100, et 3b1 Unix-pc. De nombreux petits
syst&egrave;mes industriels en temps r&eacute;el sous OS9 et Lynx utilisent
en Europe (une autre variante de) Mgr comme interface.
L'interface de programmation est impl&eacute;ment&eacute;e en C et Elisp,
cependant des supports clients dans d'autres langages ne posent pas de
difficult&eacute;s.

<bf>MGR</bf> requiert beaucoup moins de ressources que X, ou m&ecirc;me gcc.
Bien s&ucirc;r il n'a pas le r&eacute;pertoire de programmes, les biblioth&egrave;ques de haut
niveau de X ou MS-Windows, mais il est &eacute;l&eacute;gant et abordable.

On a dit que <bf>MGR</bf> est &agrave; X ce que Unix est &agrave; Multics.

<sect1>Quelles sont les diff&eacute;rences entre MGR, X11 et 8.5 ?
<p>
<bf>MGR</bf> consiste en un serveur avec un gestionnaire de fen&ecirc;tres
et un &eacute;mulateur de terminal, et des clients qui tournent dans cet &eacute;mulateur
en l'utilisant pour communiquer avec le serveur. Il n'y a pas de
multiplexage de ressources.
<p>
X11 est constitu&eacute; d'un serveur et de clients, qui sont habituellement
connect&eacute;s au serveur via un socket. Ce qui est visible &agrave; l'utilisateur
tels qu'&eacute;mulateurs de terminal, gestionnaires de fen&ecirc;tres, etc., est r&eacute;alis&eacute;
en utilisant les clients.

8.5, le syst&egrave;me de fen&ecirc;tre Plan 9, est un multiplexeur de ressources&nbsp;;
tout processus tournant dans une fen&ecirc;tre peut acc&eacute;der &agrave;
<tt>/dev/bitblt</tt>, <tt>/dev/mouse</tt> et <tt>/dev/kbd</tt> sous son propre
nom.
Ceux-ci sont multiplex&eacute;s &agrave; <tt>/dev/bitblt</tt>, <tt>/dev/mouse</tt> et
<tt>/dev/kbd</tt> de 8.5.
Cette approche permet de faire fonctionner 8.5 dans une fen&ecirc;tre 8.5,
de conception tr&egrave;s soign&eacute;e. De plus 8.5 dispose d'un gestionnaire de 
fen&ecirc;tres int&eacute;gr&eacute; et un &eacute;mulateur de terminal.
<sect>Installer MGR
<p>
On peut charger la derni&egrave;re version sur <tt>archimedesbugs.nosc.mil/pub/Mgr/69</tt> et sous Mosaic depuis <tt>http://archimedes.nosc.mil/Mgr/69</tt>.
On peut le trouver aussi sur <tt>ftp://sunsite.unc.edu/pub/Linux/apps/MGR</tt> et ses miroirs.
Les versions anciennes de Haardt peuvent se trouver sur <tt>tsx-11.mit.edu</tt>
et peut-&ecirc;tre ailleurs. Des versions Pre-Linux de <bf>MGR</bf> de Uhler et d'autres
ont &eacute;t&eacute; trouv&eacute;es sur <tt>bellcore.com/pub/mgr</tt>, mais je pense qu'elles n'y sont plus.
J'ai conserv&eacute; une copie de tout ce que j'ai vu concernant MGR sur l'Internet, et je n'ai pas connaissance qu'il n'y ait quoi que ce soit d'important qui puisse manquer dans cette distribution Linux/Sun.
Il y a eu un tas de versions et de mises en circulation de <bf>MGR</bf>,
mais la version *Linux* actuelle est 0.69. Cette version devrait
passer &agrave; 1.0 quand un code VGA-256 stable pour Linux appara&icirc;tra
(pour plusieurs types de cartes vid&eacute;o). Les num&eacute;ros
de version RCS sont pass&eacute;s de Bellcore 4.3 jusqu'&agrave; 4.13 &agrave; ce jour.

Pour construire cette distribution de <bf>MGR</bf> il faut m4
(GNU ou tout autre admettant l'option -D), make (GNU, ou tout autre admettant
include) et *roff pour les docs. Et enfin sh, awk et install POSIX.
Les distributions binaires n'ont pas toujours
assembl&eacute;es aussi faut-il un compilateur C ANSI, du style gcc.

Une installation sous Linux requiert au moins une version 0.99.10 ou ult&eacute;rieure (1.2.13 est ce que j'utilise &agrave; l'heure actuelle) ,
une carte graphique HGC, EGA, VGA ou SVGA et une souris de type&nbsp;:
serial Microsoft, serial MouseSystems 3 et 5 bytes,
serial MMSeries, serial Logitech, PS/2,
ou une souris bus. Avec Buckey (Meta) hot keys en service, m&ecirc;me un syst&egrave;me
ne poss&eacute;dant pas de souris peut effectuer pas mal de travail utile sous MGR. 
Le mode graphique monochrome VGA 640x480 est
support&eacute;, tout comme le 640x350 et le 640x200. Pour tourner en
800x600, ou d'autres modes que votre BIOS peut initialiser et qui n'ont
pas besoin de bank-switching, vous aurez besoin d'un petit programme
(<tt>src/vgamisc/regs.exe</tt>) sous DOS pour lire les registres VGA
quand ce mode est install&eacute; puis d'&eacute;crire un fichier header que vous
placerez dans le r&eacute;pertoire <tt>src/libbitblit/linux</tt>, de telle sorte qu'il 
puisse &ecirc;tre appel&eacute; par le fichier vga.c. Des exemples sont fournis, mais 
cr&eacute;ez quand m&ecirc;me le v&ocirc;tre. Quelques cartes VGA peuvent
utiliser des fen&ecirc;tres de 128k&nbsp;; celles-ci peuvent tourner avec de plus
hautes r&eacute;solutions.
<p>
Le code Linux-colorport peut aussi tourner dans le mode couleur standard VGA
320*200*256 sans difficult&eacute;s, car il n'y a pas de bank-switching n&eacute;cessaire. Si vous r&eacute;fl&eacute;chissez au peu que repr&eacute;sentent 64000 pixels, vous comprendrez que ce mode couleur est tout &agrave; fait limit&eacute;. Un code
lent, mais simple, a &eacute;t&eacute; ajout&eacute; dans la version 0.65, et il travaille avec
une carte Tseng ET4000 dans les modes 640x480x256 et 800x600x256. Le code
S3 ne marche pas encore dans les r&eacute;solutions super-VGA. Pour utiliser des nouvelles
cartes super-VGA il faut &eacute;crire une fonction pour changer de bloc de m&eacute;moire
et &ecirc;tre s&ucirc;r que le mode &eacute;cran souhait&eacute; peut &ecirc;tre initialis&eacute;
&agrave; partir d'un vidage de registre, &eacute;ventuellement en le peaufinant
&agrave; la main. Les serveurs couleur sous Linux d&eacute;forment 
g&eacute;n&eacute;ralement les fontes &eacute;crans, d'o&ugrave la 
n&eacute;cessit&eacute; d'utiliser restorefont  comme dans runx. Si quelqu'un pouvait 
r&eacute;cup&eacute;rer le code d'initialisation  VGA de X, cela ferait de 
MGR un syst&egrave;me poss&eacute;dant plus de couleurs.
<p>
Suns avec SunOS 4.1.2+ et les tampons de trame <tt>bwtwo</tt>, <tt>cgthree</tt>,
ou <tt>cgsix</tt> sont accept&eacute;s. Leurs vitesses de manipulation des couleurs sont correctes.
Les syst&egrave;mes Coherent  doivent se r&eacute;f&eacute;rer au fichier <tt>README.Coh</tt>
de la distribution source.
Porter le tout dernier <bf>MGR</bf> sur un autre syst&egrave;me analogue
&agrave; POSIX qui poss&egrave;de <tt>select</tt>, des pty et un acc&egrave;s direct &agrave; un
tampon de trame bitmap devrait &ecirc;tre imm&eacute;diat, en impl&eacute;mentant simplement
la biblioth&egrave;que <tt>libbitblit</tt> bas&eacute;e sur le code <tt>sunmono</tt>
ou <tt>colorport</tt>.

Si vous voulez tout installer, vous aurez besoin de 7 MB d'espace disque
pour les binaires, les fonts, les explications, etc. Les sources font environ
4,5 MB plus les fichiers objets durant la compilation.

Normalement, <tt>/usr/mgr</tt> doit &ecirc;tre le r&eacute;pertoire ou bien il doit
&ecirc;tre link&eacute; au r&eacute;pertoire o&ugrave vous installerez les accessoires
<bf>MGR</bf>.
Tapez
<tscreen><verb>
cd /usr/mgr; tar xvfz l&agrave;_ou_vous_le_mettez/mgrusr-0.69.tgz
</verb></tscreen>
et &eacute;ventuellement
<tscreen><verb>
cd /usr/mgr; tar xvfz la_ou_vous_voulez/morefonts-0.69.tgz
</verb></tscreen>
pour d&eacute;compacter. Les sources peuvent &ecirc;tre mises n'importe o&ugrave,
par exemple tapez
<tscreen><verb>
cd /usr/src/local/mgr; tar xvfz la_ou_vous_voulez/mgrsrc-0.69.tgz
</verb></tscreen>
pour d&eacute;compacter les sources &agrave; partir de <tt>archimedes.nosc.mil</tt>.

L'arborescence source peut &ecirc;tre compil&eacute;e &agrave; partir d'un Makefile
principal qui fait appel lui-m&ecirc;me &agrave; des Makefile secondaires, chacun
<sq>incluant</sq> un <tt>&dquot;Configfile&dquot;</tt> au niveau
sup&eacute;rieur.
Le <tt>Configfile</tt> est cr&eacute;&eacute; &agrave; l'aide d'un script interactif nomm&eacute;
Configure, qui vous pose un certain nombre de questions, puis utilise m4 avec un fichier <tt>Configfile.m4</tt>.
Ensuite vous tapez quelque chose comme ceci&nbsp;:

<tscreen><verb>
chdir /usr/src/local/mgr
sh ./Configure
make first
make depend
make install
make clean

</verb></tscreen>

Il est prudent, avant de taper make, de jeter un coup d'oeil dans le fichier
<tt>Configfile</tt> g&eacute;n&eacute;r&eacute; par le script <tt>Configure</tt>, pour v&eacute;rifier
s'il n'y a pas d'anomalie.
Au pire m4 s'interrompt, cr&eacute;ant un fichier Configfile tout petit.
Si cela arrive, essayez une copie de <tt>Configfile.sun</tt>
ou <tt>Configfile.lx</tt>. Tout peut &ecirc;tre effectu&eacute; dans n'importe quel 
r&eacute;pertoire avec un Makefile &agrave; partir du moment o&ugrave; les 
biblioth&egrave;ques ont &eacute;t&eacute; compil&eacute;es et install&eacute;es. 
Le serveur, les biblioth&egrave;ques et quelques clients sont impl&eacute;ment&eacute;s 
avec <tt>lint</tt>, mais plusieurs clients utilisent le code C K&amp;R ce qui engendre
beaucoup d'avertissements pendant la compilation.
Plusieurs flags dans MGRFLAGS peuvent &ecirc;tre ajout&eacute;s ou retranch&eacute;s pour
changer quelques options du serveur, &agrave; savoir&nbsp;:
<descrip>

<tag/-DWHO/fichier utmp poubelle pour que &dquot;who&dquot; puisse travailler
<tag/-DVI/code pour faire bouger le curseur sous vi avec la souris
<tag/-DDEBUG/permet la mise au point en s&eacute;lectionnant l'option -d
<tag/-DFASTMOUSE/XOR le temps d'acc&egrave;s de la souris
<tag/-DBUCKEY/permet les commandes serveur par le clavier sans souris
<tag/-DPRIORITY/pour planifier la priorit&eacute; des fen&ecirc;tres au lieu de
fonctionner par requ&ecirc;tes circulaires&nbsp;; la fen&ecirc;tre active obtient
une plus grande priorit&eacute;.
<tag/-DCUT/pour faire du couper/coller entre fen&ecirc;tres
<tag/-DMGR_ALIGN/force l'alignement des fen&ecirc;tres pour un scrolling
rapide(monochrome)
<tag/-DKILL/supprime les fen&ecirc;tres en cas d'erreurs i/o sur un tty
<tag/-DSHRINK/pour utiliser seulement une partie de l'&eacute;cran (&dollar;MGRSIZE dans les variables d'environnement)
<tag/-DNOSTACK/interdit l'empilement d'&eacute;v&eacute;nements
<tag/-DBELL/actionne le bip
<tag/-DKBD/lit les donn&eacute;es <tt>mgr</tt> &agrave; partir du clavier sun, au lieu de
stdin. Cela autorise la redirection des messages console vers une fen&ecirc;tre.
<tag/-DFRACCHAR/mouvement de caract&egrave;re fractionnel pour fontes proportionnelles
<tag/-DXMENU/menu &eacute;tendu (exp&eacute;rimental)
<tag/-DMOVIE/extension pour faire un film qui enregistre toutes les
op&eacute;rations dans un fichier en vue de les rejouer plus tard (ne marche pas bien
sous Linux).
<tag/-DEMUMIDMSBUT/Pour simuler le 3&egrave;me bouton d'une souris
</descrip>
M&eacute;fiez-vous&nbsp;: certaines combinaisons n'ont pas &eacute;t&eacute; 
essay&eacute;es sur tous les syst&egrave;mes.
La macro BITBLITFLAGS doit contenir <tt>-DBANKED</tt> si vous voulez
essayer le super VGA couleur.
<p>
Le code C pour les variables statiques du serveur contenant les ic&ocirc;nes et les fontes est g&eacute;n&eacute;r&eacute; &agrave; l'aide d'un traducteur &agrave; partir des fichiers ic&ocirc;nes et fontes.
<p>
Tous les clients ne sont pas compil&eacute;s et install&eacute;s par les fichiers Makefile.
Les fichiers clients trouv&eacute;s dans <tt>src/clients</tt> qui ont des noms en
majuscule ou bien non compil&eacute;s par les fichiers Makefile fournis, peuvent donner
des probl&egrave;mes de compilation et/ou d'utilisation&nbsp;; il peut &ecirc;tre int&eacute;ressant
de les examiner.

Plusieurs pilotes d'&eacute;cran du r&eacute;pertoire <tt>libbitblit</tt> ont plut&ocirc;t un
int&eacute;r&ecirc;t historique. Mieux vaut les faire dispara&icirc;tre.
<p>
V&eacute;rifiez que votre fichier /<tt>etc/termcap</tt> et/ou <tt>terminfo</tt>
contient des entr&eacute;es pour les terminaux <bf>MGR</bf>, comme ceux que l'on trouve dans le r&eacute;pertoire <tt>misc</tt>.
Si vos logiciels prennent en compte &dollar;TERMCAP dans l'environnement,
ceci n'est pas n&eacute;cessaire, tant que vous utilisez <tt>set_termcap</tt>
dans chaque fen&ecirc;tre.
<p>
Il est pr&eacute;f&eacute;rable de travailler avec <bf>MGR</bf> avec setuid root, car il
utilise ptys et write dans le fichier utmp.
Cela permet au client gestionnaire d'ic&ocirc;nes de mieux travailler et d'avoir
une plus grande s&ucirc;ret&eacute; quant &agrave; l'encha&icirc;nement des &eacute;v&eacute;nements.
Sur Linux, les permissions root sont n&eacute;cessaires pour faire fonctionner
les syst&egrave;mes &eacute;cran. Autrement vous d&eacute;cidez de lui faire confiance.
<p>
Avec les versions aux alentours de 0.62 il y a des probl&egrave;mes avec Sun quand
on utilise csh comme shell par d&eacute;faut&nbsp;:
les programmes semblent tourner sur un processus diff&eacute;rent que le processus
de premier plan du pty de la fen&ecirc;tre, en contradiction avec les pages de manuel et les sp&eacute;cifications posix.
Rien de tel avec bash, sh, ou rc. Vous avez une id&eacute;e&nbsp;?

<sect>Utiliser MGR
<p>

Le seul fichier <em>indispensable</em>  sous <bf>MGR</bf> est le serveur
lui-m&ecirc;me. Il vous donnera les fen&ecirc;tres &eacute;mulateur de terminal avec
les shells correspondants, mais pas de jolies horloges, de fontes superbes,
de graphiques marrants, etc...
Suivant les options, le serveur monochrome a besoin de 200K de RAM plus
un espace dynamique pour les fen&ecirc;tres, bitmaps, etc...

Si <tt>/usr/mgr/bin</tt> est dans votre PATH, tapez seulement
<sq><tt>mgr</tt></sq> pour d&eacute;marrer.
Apr&egrave;s avoir profit&eacute; de l'&eacute;cran de d&eacute;marrage anim&eacute;, frappez une touche quelconque.
Quand le fond hachur&eacute; appara&icirc;t avec un pointeur de souris, appuyez sur le
bouton gauche de la souris, allez sur &dquot;new window&dquot dans le menu
puis rel&acirc;chez.
Faites promener la souris pour s&eacute;lectionner l'endroit o&ugrave vous voulez
qu'une fen&ecirc;tre apparaisse. Celle-ci aura votre shell par d&eacute;faut.
Maintenez le bouton gauche de la souris enfonc&eacute; dans une fen&ecirc;tre existante
pour voir un autre menu qui vous permettra de r&eacute;aliser des choses dans cette
fen&ecirc;tre. Cliquer avec le bouton gauche sur une fen&ecirc;tre obscurcie 
l'am&egrave;nera au premier plan.
Le menu que vous aviez vu sur l'arri&egrave;re plan inclut la commande `quit'.
Pour ceux qui ont une souris avec deux boutons, il suffit d'appuyer sur les deux
boutons simultan&eacute;ment pour simuler le troisi&egrave;me.
Le sous-menu quit comprend l'option <sq>really quit</sq>, une option d'attente qui doit 
&ecirc;tre utilis&eacute;e seulement si vous utilisez un shell offrant l'&eacute;dition de 
la ligne de commande, et un &eacute;conomiseur d'&eacute;cran avec un verrouillage qui 
attend que vous tapiez un mot de passe lorsque vous revenez sur votre machine.

En essayant <bf>MGR</bf>, si vous :
<descrip>
<tag/ne pouvez trouver l'&eacute;cran/
soyez s&ucirc;r d'avoir une entr&eacute;e /dev pour votre vid&eacute;o, par ex. sur
Sun <tt>/dev/bwtwo0</tt>. Si ce n'est pas le cas, en tant que root allez dans
<tt>/dev</tt>, et tapez &dquot;MAKEDEV bwttwo0&dquot;.
Sinon, vous devez faire <tt>-S/dev/bwtwo0</tt>
ou (sous Linux)  <tt>-S640x480</tt> comme option de commande
en d&eacute;marrant <tt>mgr</tt>. Sous Linux, soyez &eacute;galement s&ucirc;rs que /usr/mgr/bin/mgr a &eacute;t&eacute; install&eacute; suid root.

<tag/ne trouvez pas la souris/
assurez-vous que <tt>/dev/mouse</tt> existe, habituellement li&eacute; symboliquement au nom r&eacute;el de votre souris. Si vous n'avez pas la permission d'&eacute;crire dans
<tt>/dev</tt>, quelque chose comme <tt>-m/dev/cua0</tt> peut &ecirc;tre donn&eacute;
comme option en d&eacute;marrant <tt>mgr</tt>.
Soyez &eacute;galement s&ucirc;rs d'avoir mis le bon protocole souris en configurant
<tt>mgr</tt>.
La souris peut s'appeler Microsoft, m&ecirc;me si ce n'est pas son vrai nom.

<tag/ne pouvez obtenir un pty/
assurez-vous que tous les <tt>/dev/[tp]ty[pq]?</tt> sont propri&eacute;t&eacute; de root,
mode 666, que tous les programmes r&eacute;f&eacute;renc&eacute;s avec l'option &dquot;shell&dquot;
dans le fichier <tt>.mgrc</tt> (si il y en a) existent et sont ex&eacute;cutables.

<tag/n'avez rien d'autre que la fonte par d&eacute;faut/
assurez-vous que <bf>MGR</bf> cherche bien au bon endroit pour les fontes.
V&eacute;rifiez le fichier <tt>Configfile</tt> dans les sources, ou bien regardez
si une option comme <tt>-f/usr/mgr/font</tt> r&eacute;soud le probl&egrave;me.

<tag/&ecirc;tes compl&egrave;tement bloqu&eacute; (m&ecirc;me le pointeur souris ne bouge pas)/
logez vous sur votre machine &agrave; partir d'un autre terminal et tuez le
processus <tt>mgr</tt>. Un ctrl-Q  fera quitter <bf>MGR</bf> si le clavier
fonctionne encore.
</descrip>

<sect1>Applications non li&eacute;es &agrave; MGR
<p>

Toute application orient&eacute;e tty peut tourner sous une fen&ecirc;tre MGR
sans probl&egrave;mes.
Les applications orient&eacute;es &eacute;cran utilisant termcap ou curses peuvent
obtenir le nombre exact de lignes et de colonnes en utilisant <tt>shape(1)</tt>
pour redimensionner la fen&ecirc;tre ou en utilisant <tt>set_termcap(1)</tt>
pour obtenir le termcap ad&eacute;quat.

<sect1>Applications (clients) MGR distribu&eacute;es avec le serveur
<p>
<descrip>
<tag/bdftomgr/ convertit des fontes BDF en fontes MGR
<tag/browse/ un browser d'ic&ocirc;nes
<tag/bury/enterre la fen&ecirc;tre
<tag/c_menu/pour regarder les erreurs de compilation sous C &agrave; l'aide de vi
<tag/clock/horloge digitale
<tag/clock2/horloge analogique
<tag/close/ferme la fen&ecirc;tre et l'iconifie
<tag/color/pour les couleurs d'arri&egrave;re et d'avant-plan du texte dans
la fen&ecirc;tre
<tag/cursor/change l'aspect du curseur texte
<tag/cut/couper/coller du texte de la fen&ecirc;tre vers une m&eacute;moire tampon
<tag/cycle/affiche une s&eacute;quence d'ic&ocirc;nes
<tag/dmgr/pr&eacute;visualisateur ditroff &agrave; l'&eacute;tat brut
<tag/fade/fait passer d'une sc&egrave;ne &agrave; une autre dans un film
<tag/font/passe &agrave; une autre fonte dans la fen&ecirc;tre
<tag/gropbm/un pilote groff PBM utilisant les fontes Hershey
<tag/hpmgr/&eacute;mulateur de terminal hp 2621
<tag/ico/anime un isoca&egrave;dre ou un autre poly&egrave;dre
<tag/iconmail/annonce l'arriv&eacute;e de courrier
<tag/iconmsgs/annonce l'arriv&eacute;e d'un message
<tag/ify/iconifie et d&eacute;siconifie les fen&ecirc;tres
<tag/loadfont/charge une fonte &agrave; partir du syst&egrave;me de fichiers
<tag/maze/jeu de labyrinthe
<tag/mclock/horloge comique
<tag/menu/cr&eacute;e ou choisit un menu pop-up
<tag/mgr/Gestionnaire de fen&ecirc;tres et serveur Bellcore
<tag/mgrbd/jeu boulder-dash
<tag/mgrbiff/surveille la bo&icirc;te aux lettres et annonce le courrier
<tag/mgrload/graphique indiquant la charge du syst&egrave;me
<tag/mgrlock/verrouille la console
<tag/mgrlogin/contr&ocirc;leur graphique de login
<tag/mgrmag/loupe sur une partie de l'&eacute;cran, avec option de sauvegarde
<tag/mgrmail/annonce l'arriv&eacute;e de courrier
<tag/mgrmode/ajuste ou annule les modes de fen&ecirc;tre
<tag/mgrmsgs/annonce l'arriv&eacute;e de messages
<tag/mgrplot/filtre graphique Unix &dquot;plot&dquot;
<tag/mgrsclock/sablier
<tag/mgrshowfont/parcourt les fontes mgr
<tag/mgrsketch/programme de sch&eacute;mas et dessins
<tag/mgrview/visualise des images bitmap
<tag/mless/d&eacute;marre less/more dans une fen&ecirc;tre s&eacute;par&eacute;e, avec un menu
pour less
wtag/mnew/d&eacute;marrer n'importe quel programme dans une fen&ecirc;tre s&eacute;par&eacute;e ind&eacute;pendante.
<tag/mvi/d&eacute;marre vi dans une fen&ecirc;tre s&eacute;par&eacute;e, avec souris
<tag/oclose/ferme une fen&ecirc;tre (ancien)
<tag/omgrmail/annonce l'arriv&eacute;e de courrier (ancien)
<tag/pbmrawtomgr,pgmrawtomgr,ppmrawtomgr/convertit des bitmats PBM,PGM,PPM brutes en format bitmap mgr
<tag/pbmstream/fractionne une s&eacute;quence de bitmaps
<tag/pbmtoprt/impression &agrave; partir de PBM
<tag/pgs/un patch ghostscript et interface, un visualisateur PS
<tag/pilot/balaye des bitmaps et visualise des images
<tag/resetwin/fait le m&eacute;nage dans une fen&ecirc;tre si le client se plante
<tag/rotate/rotation d'un bitmap de 90 degr&eacute;s.
<tag/screendump/sauvegarde un &eacute;cran graphique dans un fichier bitmap
<tag/set_console/redirige les messages  console vers une fen&ecirc;tre
<tag/set_termcap/ajuste une valeur TERMCAP appropri&eacute;e
<tag/setname/nomme une fen&ecirc;tre, pour les messages et pour l'iconifier
<tag/shape/redimensionne une fen&ecirc;tre
<tag/square/transforme une fen&ecirc;tre en carr&eacute;
<tag/squeeze/compresse un bitmap mgr
<tag/startup/fournit un fichier de d&eacute;marrage pour la disposition de la
fen&ecirc;tre courante
<tag/texmgr/pour pr&eacute;visualiser un fichier TeX dvi
<tag/text2font, font2text/conversion entre formats fonte mgr et un texte dump
<tag/unsqueeze/pour d&eacute;compresser un bitmap mgr
<tag/vgafont2mgr,mgrfont2vga/conversion de format de fontes mgr et VGA
<tag/window_print/imprime l'image d'une fen&ecirc;tre
<tag/zoom/&eacute;diteur d'ic&ocirc;nes
<tag/bounce, grav, hilbert, mgreyes, stringart, walk/d&eacute;mos graphiques
</descrip>

<sect1>Applications MGR distribu&eacute;es s&eacute;par&eacute;ment, cf fichier &dquot;SUPPORT&dquot;
<p>
<descrip>
<tag/calctool/calculatrice
<tag/chess/interface pour <tt>/usr/games/chess</tt>
<tag/gnu emacs/&eacute;diteur avec souris <tt>lisp/term/mgr.el</tt> et aide menu
<tag/gnuplot/traceur de donn&eacute;es scientifiques universel
<tag/metafont/cr&eacute;ation et conception de fontes
<tag/origami/&eacute;diteur de dossier
<tag/pbmplus/conversions et manipulations de format portable bitmap
<tag/plplot/traceur de donn&eacute;es scientifiques superbe
</descrip>
Le support Emacs dans misc/mgr.el et misc/mailcap comprend un support MIME tr&egrave;s utile, via Rmail et metamail.
Un afficheur d'image de diff&eacute;rents types pourrait &ecirc;tre fabriqu&eacute; &agrave; partir d'un pilote et de filtres netPBM, mais je n'ai pas pris le temps de le faire.

<sect>Programmation pour MGR
<p>
Le manuel des programmeurs <bf>MGR</bf>, l'interface des applications langage C,
se trouvent dans le r&eacute;pertoire doc sous forme de fichier exploitable par
troff/nroff.
Il traite de concepts g&eacute;n&eacute;raux, des appels fonction/macro contr&ocirc;lant
le serveur, d'un exemple d'application, avec index et glossaire.
Porter le code client utilis&eacute; avec les anciennes versions de MGR demande
le remplacement de
<tscreen><verb>
    #include <mgr/mgr.h>
</verb></tscreen>
par
<tscreen><verb>
    #include <term.h>
    #include <dump.h>
</verb></tscreen>
et des clients utilisant les vieux B_XOR, B_CLEAR, etc. au lieu de BIT_XOR, BIT_CLR
et autres peuvent &ecirc;tre adapt&eacute;s en &eacute;crivant&nbsp;:
<tscreen><verb>
    #define OLDMGRBITOPS
    #include <mgr/mgr.h>
</verb></tscreen>

Compiler le code client demande en g&eacute;n&eacute;ral des options telles que&nbsp;:
<tscreen><verb>
    -I/usr/mgr/include   -L/usr/mgr/lib -lmgr
</verb></tscreen>
Vous pouvez obtenir un aper&ccedil;u de l'interactivit&eacute; des fonctions serveur
<bf>MGR</bf> en lisant et essayant le pilote de terminal <tt>mgr.el</tt>
pour GNU Emacs, qui met en oeuvre la biblioth&egrave;que interface <bf>MGR</bf>
en Elisp.
L'habitude qui consiste &agrave; s'enqu&eacute;rir de l'&eacute;tat du serveur a pour risque
de se casser la figure si le client attend en m&ecirc;me temps un grand volume
de notification d'&eacute;v&eacute;nements. Ce probl&egrave;me arrive lorsque une notification
d'&eacute;v&eacute;nement (asynchrone) survient quand une r&eacute;ponse &agrave; une demande
(synchrone) &eacute;tait attendue. Si cela arrive dans la pratique (non habituel)
alors les fonctions de demande d'&eacute;tat <bf>MGR</bf> doivent &ecirc;tre int&eacute;gr&eacute;es
avec votre boucle de manipulation d'&eacute;v&eacute;nement.

La seule fonction manquante pour les dessins dans le protocole <bf>MGR</bf>
est celle de remplissage de surfaces autres que les rectangles. Il y a un
nouveau code pour manipuler la carte des couleurs globale, et aussi
pour l'allocation et la d&eacute;livrance des indices de couleur appartenant
&agrave; chaque fen&ecirc;tre.
Si vous voulez fouiller dans les progammes serveurs, vous trouverez
le pilote de souris dans <tt>mouse.*</tt> et <tt>mouse_get</tt>,
les abominables choses concernant l'interface clavier dans <tt>kbd.c</tt>,
et l'interface vid&eacute;o dans les r&eacute;pertoires <tt>src/libbitblit/*</tt>.
La proc&eacute;dure principale, plut&ocirc;t l'initialisation, et la boucle d'entr&eacute;e
de niveau sup&eacute;rieur sont dans <tt>mgr.c</tt>, enfin l'interpr&eacute;tation des
s&eacute;quences d'&eacute;chappement dans <tt>put_window.c</tt>.

<sect>Documentation suppl&eacute;mentaire
<p>

Le manuel du programmeur est indispensable pour les id&eacute;es g&eacute;n&eacute;rales.
La plupart des clients sont fournis avec une documentation man install&eacute;e
dans <tt>/usr/mgr/man/man1</tt> ou <tt>/man6</tt>.

D'autres documentations utiles sont <tt>bitblit.3</tt>, <tt>font.5</tt>,
et <tt>bitmap.5</tt>.
Il y a une ambigu&iuml;t&eacute; dans les documentations pour distinguer le format
des bitmaps internes trouv&eacute;s dans votre tampon de trame et le format des
bitmaps externes trouv&eacute;s dans des fichiers, par exemple les ic&ocirc;nes.

La documentation <tt>mgr.1</tt> traite des options de commande en ligne,
des commandes dans le fichier <tt>.mgrc</tt>, de la souris et des
interactions du menu avec le serveur, et enfin des raccourcis clavier
disponibles sur sur les syst&egrave;mes qui en poss&egrave;dent.
Beaucoup de fontes de <tt>/usr/mgr/font/*</tt> sont d&eacute;crites dans
les fichiers <tt>/usr/mgr/font/*.txt</tt>, par exemple
<tt>/usr/mgr/font/FONTDIR.txt</tt> donne la description des fontes de style X
pour celles obtenues dans le format .bdf.
La fin des noms de fontes (<tt>WxH</tt>) s'interpr&egrave;te comme suit&nbsp;:
<tt>W</tt> est la largeur du caract&egrave;re en d&eacute;cimal
<tt>H</tt> est la hauteur en pixels.

<sect>Remerciements
<p>

Stephen Uhler, avec d'autres travaillant chez Bellcore, fut le concepteur
initial de <bf>MGR</bf>, d&egrave;s lors Bellcore a des droits d'auteur
sur la plupart des codes et des documentations de <bf>MGR</bf>, dans
les conditions suivantes&nbsp;:
<verb>
Vous avez la permission de copier et d'utiliser ce programme,
MAIS
* vous ne pouvez le vendre
* cette note concernant les droits de copie doit accompagner les copies
* mentionner Bellcore quand c'est necessaire
</verb>
Une vue de la notice de copyright appara&icirc;t dans le titre de d&eacute;marrage.

Autres remerciements :
<itemize>
<item>  Stephen Hawley pour ses merveilleuses ic&ocirc;nes.
<item>  Tommy Frandsen pour la biblioth&egrave;que VGA linux.
<item>  Tom Heller pour sa biblioth&egrave;que.
<item>  Andrew Haylett pour le code du pilote de souris.
<item>  Dan McCrackin pour ses patches gasblit -&gt; linux.
<item>  Dave Gymer, dgymer@gdcarc.co.uk, pour la correction de l'effet Startrek.
<item>  Alex Liu pour la premi&egrave;re version de Linux de <bf>MGR</bf>.
<item>  Lars Aronsson (aronsson@lysator.liu.se) pour les fontes tex2 et ISO8859.
<item>  Harry Pulley (hcpiv@grumpy.cis.uoguelph.ca,
        hcpiv@snowhite.cis.uoguelph.ca) pour l'acc&egrave;s Coherent.
<item>  Vance Petree &amp; Grant Edwards &amp; Udo Munk pour leur travail sur Hercules.
<item>  Udo Munk pour son travail sur l'initialisation et la s&eacute;lection de la
        souris s&eacute;rie.
<item>  Norman Bartek, Hal Snyder de Mark Williams Co. pour leur aide sur
        quelques bugs et les pilotes de p&eacute;riph&eacute;rique Coherent.
<item>  Grand merci &agrave; Zeyd Ben Halim pour des tas de patches utiles,
        sp&eacute;cialement pour adapter les syst&egrave;mes de s&eacute;lection.
<item>  Bradley Bosch (brad@lachman.com) pour des tas de patches depuis le port
        acc&egrave;s 3b1, qui corrige des bugs et permet d'installer des accessoires
        nouveaux et attractifs.
<item>  Andrew Morton (applix@runxtsa.runx.oz.au) qui &eacute;crivit le premier le code        cut-word.
<item>  Kapil Paranjape (kapil@motive.math.tifr.res.in) pour le support EGA.
<item>  Michael Haardt pour les corrections du support MOVIE, les corrections
        de bugs, la s&eacute;paration du code libbitblit en pilotes de sortie,
        l'extension de libmgr, la compression origami du code.
<item>  Yossi Gil pour de nombreuses fontes.
<item>  Carsten Emde, carsten@thlmak.pr.net.ch, pour mphoon.
<item>  Vincent Broman pour l'&eacute;mulation du 3&egrave;me bouton de la souris, le support
        cgsix Sun, l'acc&egrave;s &agrave; la table des couleurs VGA, et l'int&eacute;gration
         du code sunport de l'arrangement en couches Haardt, le rassemblement des fontes, l'&eacute;conomiseur d'&eacute;cran, et la maintenance continue.
<item>  Kenneth Almquist, ka@socrates.hr.att.com, pour les salutaires reports de bogues.
<item>  Tim Pierce, twpierce@midway.uchicago.edu, pour le portage vers FreeBSD 2.0R avec la carte VGA Trident. 
</itemize>
    Toutes les fontes bitmap de toutes les sources sont du domaine public
    aux USA. Les fontes 583 &agrave; largeur fixe fournies avec <bf>MGR</bf> furent
    obtenues par Uhler, dans la distribution X, Yossi Gil, et autre part.
    Les fontes vectorielles Hershey et le code n&eacute;cessaire sont probablement
    librement redistribuables.
</article>
