Le systeme MGR Window
 Vincent Broman
 Edition 30 Mai 1996

 11..  CCeett HHOOWWTTOO

             Copyright Vincent Broman 1995
          Vous pouvez effectuer et distribuer
          des copies selon les conditions de la GNU General Public License.

 11..11..  AArrcchhiivvaaggee

 Cet   HOWTO  est  archive  sur  ftp://archimedes.nosc.mil/pub/Mgr/MGR-
 HOWTO.sgml,               et               egalement               sur
 ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/MGR-HOWTO.      Dans    les
 repertoires adjacents  peuvent  apparaitre  des  fichiers  de  formats
 differents tels que MGR-HOWTO.txt.

 11..22..  AAuutthheennttiiffiiccaattiioonn

 Les  copies  de  la  distribution  MGR  dues  a  Broman  doivent  etre
 accompagnees des fichiers de signature PGP,  signees  "Vincent  Broman
 <[email protected]>".

 11..33..  CCrreeddiittss ppoouurr cceett HHOOWWTTOO

 Bien  que Vincent Broman ait ete l'initiateur de cet HOWTO, la plupart
 des informations et des  textes  furent  obtenus  a  partir  de  FAQs,
 READMEs,  etc.  ecrits  par Stephen Uhler, Michael Haardt, et d'autres
 personnes ayant "l'esprit Reseau".   Corrections  et  suggestions  par
 Email a [email protected].

 Uhler  fut  l'architecte  principal  de MMGGRR -- voir Remerciements plus
 loin.

 22..  QQuu''eesstt--ccee qquuee MMGGRR ??

 22..11..  FFoonnccttiioonn

 MMGGRR(ManaGeR) est un systeme de fenetres  graphiques.  MMGGRR  fournit  un
 gestionnaire integre de fenetres et un emulateur de terminal graphique
 sur des systemes bitmaps couleurs et monochromes.  MMGGRR est controlable
 par des menus pop-up actives par souris, par action du clavier, et par
 des sequences d'echappement ecrites par  un  client  sur  des  pseudo-
 terminaux.

 MMGGRR  fournit  a chaque client une fenetre avec : fonctions de controle
 terminal en style termcap, primitives graphiques telles que dessins de
 lignes  et  de  cercles  ;  amenagements  pour  manipuler les bitmaps,
 fontes,  icones  et  menus  pop-up  ;  commandes  pour  redessiner  et
 repositionner  les  fenetres  ;  et  un systeme de passage de messages
 permettant  aux  programmes-client  d'etablir   des   rendez-vous   et
 d'echanger des messages. Les programmes client peuvent demander a etre
 informes lorsqu'un changement dans le systeme intervient,  tel  qu'une
 fenetre  redessinee,  un clic de souris, ou un message envoye a partir
 d'un autre programme client. Ces changements sont appeles  evenements.
 MMGGRR  notifie un evenement a un programme client en envoyant une chaine
 ASCII  dans  un  format  specifie  par  le   programme   client.   Des
 applications  existantes  peuvent  etre integrees dans l'environnement
 sans etre modifiees : MMGGRR imite des actions sur le clavier en  reponse
 a des selections du menu utilisateur ou d'autres evenements.

 22..22..  CCoonnddiittiioonnss rreeqquuiisseess

 MMGGRR tourne couramment sur Linux, FreeBSD, stations Sun 3/4 avec SunOS,
 et  Coherent.  Certaines  versions  anciennes  de  MMGGRR  tournent   sur
 Macintosh,  Atari ST MiNT, Xenix, 386-Minix, DEC 3100, et 3b1 Unix-pc.
 De nombreux petits systemes industriels en temps reel sous OS9 et Lynx
 utilisent  en  Europe  (une  autre  variante  de) Mgr comme interface.
 L'interface de programmation est implementee en C et Elisp,  cependant
 des   supports  clients  dans  d'autres  langages  ne  posent  pas  de
 difficultes.

 MMGGRR requiert beaucoup moins de ressources que X, ou  meme  gcc.   Bien
 sur  il n'a pas le repertoire de programmes, les bibliotheques de haut
 niveau de X ou MS-Windows, mais il est elegant et abordable.

 On a dit que MMGGRR est a X ce que Unix est a Multics.

 22..33..  QQuueelllleess ssoonntt lleess ddiiffffeerreenncceess eennttrree MMGGRR,, XX1111 eett 88..55 ??

 MMGGRR consiste en un serveur avec un  gestionnaire  de  fenetres  et  un
 emulateur  de terminal, et des clients qui tournent dans cet emulateur
 en l'utilisant pour communiquer avec le  serveur.  Il  n'y  a  pas  de
 multiplexage de ressources.

 X11  est constitue d'un serveur et de clients, qui sont habituellement
 connectes au serveur via un socket. Ce qui est visible a l'utilisateur
 tels  qu'emulateurs  de terminal, gestionnaires de fenetres, etc., est
 realise en utilisant les clients.

 8.5, le systeme de fenetre Plan 9, est un multiplexeur de ressources ;
 tout  processus  tournant dans une fenetre peut acceder a /dev/bitblt,
 /dev/mouse et /dev/kbd sous son propre nom.  Ceux-ci sont  multiplexes
 a  /dev/bitblt,  /dev/mouse et /dev/kbd de 8.5.  Cette approche permet
 de faire fonctionner 8.5 dans une  fenetre  8.5,  de  conception  tres
 soignee.  De plus 8.5 dispose d'un gestionnaire de fenetres integre et
 un emulateur de terminal.

 33..  IInnssttaalllleerr MMGGRR

 On      peut      charger      la      derniere      version       sur
 archimedesbugs.nosc.mil/pub/Mgr/69     et     sous    Mosaic    depuis
 http://archimedes.nosc.mil/Mgr/69.   On  peut  le  trouver  aussi  sur
 ftp://sunsite.unc.edu/pub/Linux/apps/MGR et ses miroirs.  Les versions
 anciennes de Haardt peuvent se trouver sur tsx-11.mit.edu et peut-etre
 ailleurs.  Des  versions Pre-Linux de MMGGRR de Uhler et d'autres ont ete
 trouvees sur bellcore.com/pub/mgr, mais je  pense  qu'elles  n'y  sont
 plus.   J'ai  conserve 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  MMGGRR,  mais
 la  version  *Linux* actuelle est 0.69. Cette version devrait passer a
 1.0 quand un code VGA-256 stable pour Linux apparaitra (pour plusieurs
 types  de  cartes  video).  Les  numeros de version RCS sont passes de
 Bellcore 4.3 jusqu'a 4.13 a ce jour.

 Pour construire cette distribution de MMGGRR 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 assemblees aussi faut-il
 un compilateur C ANSI, du style gcc.

 Une installation sous Linux requiert au moins une version  0.99.10  ou
 ulterieure  (1.2.13  est  ce  que  j'utilise a l'heure actuelle) , une
 carte graphique HGC, EGA, VGA ou SVGA et une souris de type  :  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, meme un systeme ne possedant pas de souris peut effectuer pas
 mal de travail utile sous  MGR.   Le  mode  graphique  monochrome  VGA
 640x480  est  supporte,  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  (src/vgamisc/regs.exe)  sous  DOS  pour   lire   les
 registres  VGA  quand  ce  mode  est installe puis d'ecrire un fichier
 header que vous placerez dans le repertoire  src/libbitblit/linux,  de
 telle  sorte  qu'il  puisse  etre  appele  par  le  fichier vga.c. Des
 exemples sont fournis, mais creez quand meme le votre. Quelques cartes
 VGA  peuvent utiliser des fenetres de 128k ; celles-ci peuvent tourner
 avec de plus hautes resolutions.

 Le code Linux-colorport  peut  aussi  tourner  dans  le  mode  couleur
 standard  VGA  320*200*256 sans difficultes, car il n'y a pas de bank-
 switching necessaire. Si vous reflechissez  au  peu  que  representent
 64000  pixels,  vous  comprendrez  que ce mode couleur est tout a fait
 limite. Un code lent, mais simple, a ete ajoute 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  resolutions
 super-VGA. Pour utiliser des nouvelles cartes super-VGA il faut ecrire
 une fonction pour changer de bloc de memoire et etre sur que  le  mode
 ecran  souhaite peut etre initialise a partir d'un vidage de registre,
 eventuellement en le peaufinant a la main. Les serveurs  couleur  sous
 Linux  deforment  generalement  les  fontes  ecrans, d'ou la necessite
 d'utiliser  restorefont   comme  dans  runx.  Si   quelqu'un   pouvait
 recuperer  le  code  d'initialisation  VGA de X, cela ferait de MGR un
 systeme possedant plus de couleurs.

 Suns avec SunOS 4.1.2+ et les tampons  de  trame  bwtwo,  cgthree,  ou
 cgsix  sont acceptes. Leurs vitesses de manipulation des couleurs sont
 correctes.  Les systemes  Coherent   doivent  se  referer  au  fichier
 README.Coh  de la distribution source.  Porter le tout dernier MMGGRR sur
 un autre systeme analogue a POSIX qui possede select, des  pty  et  un
 acces  direct  a  un  tampon de trame bitmap devrait etre immediat, en
 implementant simplement la bibliotheque libbitblit basee sur  le  code
 sunmono ou colorport.

 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, /usr/mgr doit etre le repertoire ou  bien  il  doit  etre
 linke au repertoire ou vous installerez les accessoires MMGGRR.  Tapez

      cd /usr/mgr; tar xvfz la_ou_vous_le_mettez/mgrusr-0.69.tgz

 et eventuellement
      cd /usr/mgr; tar xvfz la_ou_vous_voulez/morefonts-0.69.tgz

 pour  decompacter.  Les  sources  peuvent etre mises n'importe ou, par
 exemple tapez

      cd /usr/src/local/mgr; tar xvfz la_ou_vous_voulez/mgrsrc-0.69.tgz

 pour decompacter les sources a partir de archimedes.nosc.mil.

 L'arborescence source  peut  etre  compilee  a  partir  d'un  Makefile
 principal  qui  fait appel lui-meme a des Makefile secondaires, chacun
 "incluant" un "Configfile" au niveau  superieur.   Le  Configfile  est
 cree a l'aide d'un script interactif nomme Configure, qui vous pose un
 certain  nombre  de  questions,  puis  utilise  m4  avec  un   fichier
 Configfile.m4.  Ensuite vous tapez quelque chose comme ceci :

      chdir /usr/src/local/mgr
      sh ./Configure
      make first
      make depend
      make install
      make clean

 Il  est  prudent, avant de taper make, de jeter un coup d'oeil dans le
 fichier Configfile genere par le script Configure, pour verifier  s'il
 n'y  a  pas  d'anomalie.   Au  pire m4 s'interrompt, creant un fichier
 Configfile  tout  petit.   Si  cela  arrive,  essayez  une  copie   de
 Configfile.sun   ou   Configfile.lx.  Tout  peut  etre  effectue  dans
 n'importe quel repertoire avec un Makefile a partir du moment  ou  les
 bibliotheques  ont  ete  compilees  et  installees.   Le  serveur, les
 bibliotheques et quelques clients sont  implementes  avec  lint,  mais
 plusieurs  clients  utilisent  le  code C K&R ce qui engendre beaucoup
 d'avertissements  pendant  la  compilation.   Plusieurs   flags   dans
 MGRFLAGS  peuvent  etre  ajoutes  ou  retranches pour changer quelques
 options du serveur, a savoir :

    --DDWWHHOO
       fichier utmp poubelle pour que "who" puisse travailler

    --DDVVII
       code pour faire bouger le curseur sous vi avec la souris

    --DDDDEEBBUUGG
       permet la mise au point en selectionnant l'option -d

    --DDFFAASSTTMMOOUUSSEE
       XOR le temps d'acces de la souris

    --DDBBUUCCKKEEYY
       permet les commandes serveur par le clavier sans souris

    --DDPPRRIIOORRIITTYY
       pour planifier la priorite des fenetres au lieu  de  fonctionner
       par  requetes  circulaires  ; la fenetre active obtient une plus
       grande priorite.

    --DDCCUUTT
       pour faire du couper/coller entre fenetres

    --DDMMGGRR__AALLIIGGNN
       force   l'alignement   des   fenetres    pour    un    scrolling
       rapide(monochrome)

    --DDKKIILLLL
       supprime les fenetres en cas d'erreurs i/o sur un tty

    --DDSSHHRRIINNKK
       pour utiliser seulement une partie de l'ecran ($MGRSIZE dans les
       variables d'environnement)

    --DDNNOOSSTTAACCKK
       interdit l'empilement d'evenements

    --DDBBEELLLL
       actionne le bip

    --DDKKBBDD
       lit les donnees mgr a partir du clavier sun, au lieu  de  stdin.
       Cela  autorise  la  redirection  des  messages  console vers une
       fenetre.

    --DDFFRRAACCCCHHAARR
       mouvement de caractere fractionnel pour fontes proportionnelles

    --DDXXMMEENNUU
       menu etendu (experimental)

    --DDMMOOVVIIEE
       extension  pour  faire  un  film  qui  enregistre   toutes   les
       operations  dans  un fichier en vue de les rejouer plus tard (ne
       marche pas bien sous Linux).

    --DDEEMMUUMMIIDDMMSSBBUUTT
       Pour simuler le 3eme bouton d'une souris

 Mefiez-vous : certaines combinaisons n'ont pas ete essayees  sur  tous
 les  systemes.   La  macro BITBLITFLAGS doit contenir -DBANKED si vous
 voulez essayer le super VGA couleur.

 Le code C pour les variables statiques du serveur contenant les icones
 et  les  fontes  est  genere  a  l'aide  d'un  traducteur a partir des
 fichiers icones et fontes.

 Tous les clients ne sont pas compiles et installes  par  les  fichiers
 Makefile.   Les  fichiers clients trouves dans src/clients qui ont des
 noms en majuscule ou bien  non  compiles  par  les  fichiers  Makefile
 fournis,   peuvent   donner   des   problemes   de  compilation  et/ou
 d'utilisation ; il peut etre interessant de les examiner.

 Plusieurs pilotes d'ecran  du  repertoire  libbitblit  ont  plutot  un
 interet historique. Mieux vaut les faire disparaitre.

 Verifiez  que  votre  fichier /etc/termcap et/ou terminfo contient des
 entrees pour les terminaux MMGGRR, comme ceux que  l'on  trouve  dans  le
 repertoire  misc.   Si  vos logiciels prennent en compte $TERMCAP dans
 l'environnement, ceci n'est pas necessaire,  tant  que  vous  utilisez
 set_termcap dans chaque fenetre.

 Il  est  preferable  de  travailler  avec MMGGRR avec setuid root, car il
 utilise ptys et write dans le fichier utmp.   Cela  permet  au  client
 gestionnaire  d'icones  de mieux travailler et d'avoir une plus grande
 surete  quant  a  l'enchainement  des  evenements.   Sur  Linux,   les
 permissions  root sont necessaires pour faire fonctionner les systemes
 ecran. Autrement vous decidez de lui faire confiance.

 Avec les versions aux alentours de 0.62 il y a des problemes avec  Sun
 quand  on utilise csh comme shell par defaut : les programmes semblent
 tourner sur un processus different que le processus de premier plan du
 pty  de  la  fenetre, en contradiction avec les pages de manuel et les
 specifications posix.  Rien de tel avec bash, sh, ou rc. Vous avez une
 idee ?

 44..  UUttiilliisseerr MMGGRR

 Le  seul  fichier  _i_n_d_i_s_p_e_n_s_a_b_l_e  sous MMGGRR est le serveur lui-meme. Il
 vous donnera les  fenetres  emulateur  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
 fenetres, bitmaps, etc...

 Si /usr/mgr/bin est  dans  votre  PATH,  tapez  seulement  "mgr"  pour
 demarrer.   Apres avoir profite de l'ecran de demarrage anime, frappez
 une touche  quelconque.   Quand  le  fond  hachure  apparait  avec  un
 pointeur  de  souris, appuyez sur le bouton gauche de la souris, allez
 sur "new window" dans le  menu  puis  relachez.   Faites  promener  la
 souris  pour  selectionner  l'endroit  ou  vous  voulez qu'une fenetre
 apparaisse. Celle-ci aura votre shell par defaut.  Maintenez le bouton
 gauche  de  la  souris enfonce dans une fenetre existante pour voir un
 autre menu qui vous  permettra  de  realiser  des  choses  dans  cette
 fenetre.  Cliquer  avec  le  bouton  gauche  sur une fenetre obscurcie
 l'amenera au premier plan.  Le menu que vous aviez  vu  sur  l'arriere
 plan  inclut  la  commande  `quit'.  Pour ceux qui ont une souris avec
 deux boutons, il suffit d'appuyer sur les deux  boutons  simultanement
 pour  simuler  le  troisieme.   Le  sous-menu  quit  comprend l'option
 "really quit", une option d'attente qui doit etre  utilisee  seulement
 si  vous  utilisez un shell offrant l'edition de la ligne de commande,
 et un economiseur d'ecran avec un verrouillage  qui  attend  que  vous
 tapiez un mot de passe lorsque vous revenez sur votre machine.

 En essayant MMGGRR, si vous :

    nnee ppoouuvveezz ttrroouuvveerr ll''eeccrraann
       soyez  sur d'avoir une entree /dev pour votre video, par ex. sur
       Sun /dev/bwtwo0. Si ce n'est pas le cas, en tant que root  allez
       dans  /dev, et tapez "MAKEDEV bwttwo0".  Sinon, vous devez faire
       -S/dev/bwtwo0  ou  (sous  Linux)   -S640x480  comme  option   de
       commande  en demarrant mgr. Sous Linux, soyez egalement surs que
       /usr/mgr/bin/mgr a ete installe suid root.

    nnee ttrroouuvveezz ppaass llaa ssoouurriiss
       assurez-vous   que   /dev/mouse   existe,   habituellement   lie
       symboliquement  au  nom reel de votre souris. Si vous n'avez pas
       la  permission  d'ecrire  dans   /dev,   quelque   chose   comme
       -m/dev/cua0  peut  etre  donne  comme  option  en demarrant mgr.
       Soyez egalement surs d'avoir mis  le  bon  protocole  souris  en
       configurant mgr.  La souris peut s'appeler Microsoft, meme si ce
       n'est pas son vrai nom.

    nnee ppoouuvveezz oobbtteenniirr uunn ppttyy
       assurez-vous que tous les  /dev/[tp]ty[pq]?  sont  propriete  de
       root, mode 666, que tous les programmes references avec l'option
       "shell" dans le fichier .mgrc (si il y en a)  existent  et  sont
       executables.

    nn''aavveezz rriieenn dd''aauuttrree qquuee llaa ffoonnttee ppaarr ddeeffaauutt
       assurez-vous  que  MMGGRR  cherche  bien  au  bon  endroit pour les
       fontes.  Verifiez le fichier Configfile  dans  les  sources,  ou
       bien  regardez  si  une  option  comme -f/usr/mgr/font resoud le
       probleme.

    eetteess ccoommpplleetteemmeenntt bbllooqquuee ((mmeemmee llee ppooiinntteeuurr ssoouurriiss nnee bboouuggee ppaass))
       logez vous sur votre machine a partir  d'un  autre  terminal  et
       tuez le processus mgr. Un ctrl-Q  fera quitter MMGGRR si le clavier
       fonctionne encore.

 44..11..  AApppplliiccaattiioonnss nnoonn lliieeeess aa MMGGRR

 Toute application orientee tty peut tourner sous une fenetre MGR  sans
 problemes.   Les  applications  orientees  ecran  utilisant termcap ou
 curses peuvent obtenir le nombre exact de lignes  et  de  colonnes  en
 utilisant  shape(1)  pour  redimensionner  la  fenetre ou en utilisant
 set_termcap(1) pour obtenir le termcap adequat.

 44..22..  AApppplliiccaattiioonnss ((cclliieennttss)) MMGGRR ddiissttrriibbuueeeess aavveecc llee sseerrvveeuurr

    bbddffttoommggrr
       convertit des fontes BDF en fontes MGR

    bbrroowwssee
       un browser d'icones

    bbuurryy
       enterre la fenetre

    cc__mmeennuu
       pour regarder les erreurs de compilation sous C a l'aide de vi

    cclloocckk
       horloge digitale

    cclloocckk22
       horloge analogique

    cclloossee
       ferme la fenetre et l'iconifie

    ccoolloorr
       pour les couleurs d'arriere et d'avant-plan  du  texte  dans  la
       fenetre

    ccuurrssoorr
       change l'aspect du curseur texte

    ccuutt
       couper/coller du texte de la fenetre vers une memoire tampon

    ccyyccllee
       affiche une sequence d'icones
    ddmmggrr
       previsualisateur ditroff a l'etat brut

    ffaaddee
       fait passer d'une scene a une autre dans un film

    ffoonntt
       passe a une autre fonte dans la fenetre

    ggrrooppbbmm
       un pilote groff PBM utilisant les fontes Hershey

    hhppmmggrr
       emulateur de terminal hp 2621

    iiccoo
       anime un isocaedre ou un autre polyedre

    iiccoonnmmaaiill
       annonce l'arrivee de courrier

    iiccoonnmmssggss
       annonce l'arrivee d'un message

    iiffyy
       iconifie et desiconifie les fenetres

    llooaaddffoonntt
       charge une fonte a partir du systeme de fichiers

    mmaazzee
       jeu de labyrinthe

    mmcclloocckk
       horloge comique

    mmeennuu
       cree ou choisit un menu pop-up

    mmggrr
       Gestionnaire de fenetres et serveur Bellcore

    mmggrrbbdd
       jeu boulder-dash

    mmggrrbbiiffff
       surveille la boite aux lettres et annonce le courrier

    mmggrrllooaadd
       graphique indiquant la charge du systeme

    mmggrrlloocckk
       verrouille la console

    mmggrrllooggiinn
       controleur graphique de login

    mmggrrmmaagg
       loupe sur une partie de l'ecran, avec option de sauvegarde

    mmggrrmmaaiill
       annonce l'arrivee de courrier

    mmggrrmmooddee
       ajuste ou annule les modes de fenetre

    mmggrrmmssggss
       annonce l'arrivee de messages

    mmggrrpplloott
       filtre graphique Unix "plot"

    mmggrrsscclloocckk
       sablier

    mmggrrsshhoowwffoonntt
       parcourt les fontes mgr

    mmggrrsskkeettcchh
       programme de schemas et dessins

    mmggrrvviieeww
       visualise des images bitmap

    mmlleessss
       demarre  less/more  dans  une fenetre separee, avec un menu pour
       less  wtag/mnew/demarrer  n'importe  quel  programme  dans   une
       fenetre separee independante.

    mmvvii
       demarre vi dans une fenetre separee, avec souris

    oocclloossee
       ferme une fenetre (ancien)

    oommggrrmmaaiill
       annonce l'arrivee de courrier (ancien)

    ppbbmmrraawwttoommggrr,,ppggmmrraawwttoommggrr,,ppppmmrraawwttoommggrr
       convertit des bitmats PBM,PGM,PPM brutes en format bitmap mgr

    ppbbmmssttrreeaamm
       fractionne une sequence de bitmaps

    ppbbmmttoopprrtt
       impression a partir de PBM

    ppggss
       un patch ghostscript et interface, un visualisateur PS

    ppiilloott
       balaye des bitmaps et visualise des images

    rreesseettwwiinn
       fait le menage dans une fenetre si le client se plante

    rroottaattee
       rotation d'un bitmap de 90 degres.

    ssccrreeeenndduummpp
       sauvegarde un ecran graphique dans un fichier bitmap

    sseett__ccoonnssoollee
       redirige les messages  console vers une fenetre

    sseett__tteerrmmccaapp
       ajuste une valeur TERMCAP appropriee

    sseettnnaammee
       nomme une fenetre, pour les messages et pour l'iconifier

    sshhaappee
       redimensionne une fenetre

    ssqquuaarree
       transforme une fenetre en carre

    ssqquueeeezzee
       compresse un bitmap mgr

    ssttaarrttuupp
       fournit  un  fichier  de  demarrage  pour  la  disposition de la
       fenetre courante

    tteexxmmggrr
       pour previsualiser un fichier TeX dvi

    tteexxtt22ffoonntt,, ffoonntt22tteexxtt
       conversion entre formats fonte mgr et un texte dump

    uunnssqquueeeezzee
       pour decompresser un bitmap mgr

    vvggaaffoonntt22mmggrr,,mmggrrffoonntt22vvggaa
       conversion de format de fontes mgr et VGA

    wwiinnddooww__pprriinntt
       imprime l'image d'une fenetre

    zzoooomm
       editeur d'icones

    bboouunnccee,, ggrraavv,, hhiillbbeerrtt,, mmggrreeyyeess,, ssttrriinnggaarrtt,, wwaallkk
       demos graphiques

 44..33..  AApppplliiccaattiioonnss MMGGRR ddiissttrriibbuueeeess sseeppaarreemmeenntt,, ccff ffiicchhiieerr ""SSUUPPPPOORRTT""

    ccaallccttooooll
       calculatrice

    cchheessss
       interface pour /usr/games/chess

    ggnnuu eemmaaccss
       editeur avec souris lisp/term/mgr.el et aide menu

    ggnnuupplloott
       traceur de donnees scientifiques universel

    mmeettaaffoonntt
       creation et conception de fontes

    oorriiggaammii
       editeur de dossier

    ppbbmmpplluuss
       conversions et manipulations de format portable bitmap

    ppllpplloott
       traceur de donnees scientifiques superbe

 Le  support Emacs dans misc/mgr.el et misc/mailcap comprend un support
 MIME tres utile, via Rmail et metamail.  Un afficheur d'image de  dif-
 ferents  types  pourrait etre fabrique a partir d'un pilote et de fil-
 tres netPBM, mais je n'ai pas pris le temps de le faire.
 55..  PPrrooggrraammmmaattiioonn ppoouurr MMGGRR

 Le manuel des programmeurs MMGGRR, l'interface des  applications  langage
 C,   se  trouvent  dans  le  repertoire  doc  sous  forme  de  fichier
 exploitable par troff/nroff.  Il  traite  de  concepts  generaux,  des
 appels    fonction/macro   controlant   le   serveur,   d'un   exemple
 d'application, avec index et glossaire.  Porter le code client utilise
 avec les anciennes versions de MGR demande le remplacement de

          #include <mgr/mgr.h>

 par

          #include <term.h>
          #include <dump.h>

 et  des  clients  utilisant  les vieux B_XOR, B_CLEAR, etc. au lieu de
 BIT_XOR, BIT_CLR et autres peuvent etre adaptes en ecrivant :

          #define OLDMGRBITOPS
          #include <mgr/mgr.h>

 Compiler le code client demande en general des options telles que :

          -I/usr/mgr/include   -L/usr/mgr/lib -lmgr

 Vous pouvez obtenir un apercu de l'interactivite des fonctions serveur
 MMGGRR en lisant et essayant le pilote de terminal mgr.el pour GNU Emacs,
 qui met en oeuvre la bibliotheque interface MMGGRR en Elisp.   L'habitude
 qui  consiste  a  s'enquerir  de l'etat du serveur a pour risque de se
 casser la figure si le client attend en meme temps un grand volume  de
 notification d'evenements. Ce probleme arrive lorsque une notification
 d'evenement (asynchrone) survient quand  une  reponse  a  une  demande
 (synchrone)  etait  attendue.  Si  cela  arrive  dans la pratique (non
 habituel) alors les fonctions de demande d'etat MMGGRR doivent etre inte-
 grees avec votre boucle de manipulation d'evenement.

 La seule fonction manquante pour les dessins dans le protocole MMGGRR 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 delivrance des indices de couleur  appartenant
 a  chaque  fenetre.   Si  vous  voulez  fouiller  dans  les  progammes
 serveurs,  vous  trouverez  le  pilote  de  souris  dans  mouse.*   et
 mouse_get,  les abominables choses concernant l'interface clavier dans
 kbd.c, et l'interface video dans les repertoires src/libbitblit/*.  La
 procedure  principale,  plutot l'initialisation, et la boucle d'entree
 de niveau  superieur  sont  dans  mgr.c,  enfin  l'interpretation  des
 sequences d'echappement dans put_window.c.

 66..  DDooccuummeennttaattiioonn ssuupppplleemmeennttaaiirree

 Le  manuel  du programmeur est indispensable pour les idees generales.
 La plupart  des  clients  sont  fournis  avec  une  documentation  man
 installee dans /usr/mgr/man/man1 ou /man6.

 D'autres  documentations  utiles  sont bitblit.3, font.5, et bitmap.5.
 Il y a une ambiguite dans les documentations pour distinguer le format
 des  bitmaps  internes trouves dans votre tampon de trame et le format
 des bitmaps externes  trouves  dans  des  fichiers,  par  exemple  les
 icones.

 La  documentation  mgr.1  traite des options de commande en ligne, des
 commandes dans le fichier .mgrc, de la souris et des  interactions  du
 menu  avec le serveur, et enfin des raccourcis clavier disponibles sur
 sur  les  systemes  qui  en  possedent.    Beaucoup   de   fontes   de
 /usr/mgr/font/*  sont  decrites dans les fichiers /usr/mgr/font/*.txt,
 par exemple /usr/mgr/font/FONTDIR.txt donne la description des  fontes
 de  style X pour celles obtenues dans le format .bdf.  La fin des noms
 de fontes (WxH)  s'interprete  comme  suit  :  W  est  la  largeur  du
 caractere en decimal H est la hauteur en pixels.

 77..  RReemmeerrcciieemmeennttss

 Stephen  Uhler,  avec  d'autres  travaillant  chez  Bellcore,  fut  le
 concepteur initial de MMGGRR, des lors Bellcore a des droits d'auteur sur
 la plupart des codes et des documentations de MMGGRR, dans les conditions
 suivantes :

 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

 Une vue de la notice de copyright apparait dans le titre de demarrage.

 Autres remerciements :

 +o  Stephen Hawley pour ses merveilleuses icones.

 +o  Tommy Frandsen pour la bibliotheque VGA linux.

 +o  Tom Heller pour sa bibliotheque.

 +o  Andrew Haylett pour le code du pilote de souris.

 +o  Dan McCrackin pour ses patches gasblit -> linux.

 +o  Dave  Gymer,  [email protected],  pour  la  correction de l'effet
    Startrek.

 +o  Alex Liu pour la premiere version de Linux de MMGGRR.

 +o  Lars Aronsson ([email protected]) pour  les  fontes  tex2  et
    ISO8859.

 +o  Harry             Pulley             ([email protected],
    [email protected]) pour l'acces Coherent.

 +o  Vance Petree & Grant Edwards &  Udo  Munk  pour  leur  travail  sur
    Hercules.
 +o  Udo  Munk  pour son travail sur l'initialisation et la selection de
    la souris serie.

 +o  Norman Bartek, Hal Snyder de Mark Williams Co. pour leur  aide  sur
    quelques bugs et les pilotes de peripherique Coherent.

 +o  Grand  merci  a  Zeyd  Ben  Halim  pour  des tas de patches utiles,
    specialement pour adapter les systemes de selection.

 +o  Bradley Bosch ([email protected]) pour des tas de patches depuis  le
    port  acces  3b1,  qui  corrige  des bugs et permet d'installer des
    accessoires nouveaux et attractifs.

 +o  Andrew Morton ([email protected]) qui ecrivit le premier le
    code        cut-word.

 +o  Kapil  Paranjape  ([email protected])  pour  le support
    EGA.

 +o  Michael  Haardt  pour  les  corrections  du  support   MOVIE,   les
    corrections de bugs, la separation du code libbitblit en pilotes de
    sortie, l'extension de libmgr, la compression origami du code.

 +o  Yossi Gil pour de nombreuses fontes.

 +o  Carsten Emde, [email protected], pour mphoon.

 +o  Vincent Broman pour l'emulation du 3eme bouton  de  la  souris,  le
    support  cgsix  Sun,  l'acces  a  la  table  des  couleurs  VGA, et
    l'integration du code sunport de l'arrangement en  couches  Haardt,
    le   rassemblement   des   fontes,  l'economiseur  d'ecran,  et  la
    maintenance continue.

 +o  Kenneth  Almquist,  [email protected],  pour  les   salutaires
    reports de bogues.

 +o  Tim  Pierce,  [email protected],  pour  le  portage vers
    FreeBSD 2.0R avec la carte VGA Trident.

    Toutes les fontes bitmap de toutes  les  sources  sont  du  domaine
    public  aux  USA.  Les  fontes 583 a largeur fixe fournies avec MMGGRR
    furent obtenues par Uhler, dans la distribution X,  Yossi  Gil,  et
    autre  part.  Les fontes vectorielles Hershey et le code necessaire
    sont probablement librement redistribuables.