  Le systeme MGR Window
  Vincent Broman
  Edition 30 Mai 1996

  11..  CCeett HHOOWWTTOO

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

  11..11..  AArrcchhiivvaaggee

  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.

  11..22..  AAuutthheennttiiffiiccaattiioonn

  Les  copies  de  la  distribution  MGR  dues  a  Broman  doivent  etre
  accompagnees des fichiers de signature PGP,  signees  "Vincent  Broman
  <broman@nosc.mil>".

  11..33..  CCrreeddiittss ppoouurr cceett HHOOWWTTOO

  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 broman@nosc.mil.

  Uhler  fut  l'architecte  principal  de MMGGRR -- voir Remerciements plus
  loin.

  22..  QQuu''eesstt--ccee qquuee MMGGRR ??

  22..11..  FFoonnccttiioonn

  MMGGRR(ManaGeR) est un systeme de fenetres  graphiques.  MMGGRR  fournit  un
  gestionnaire integre de fenetres et un emulateur de terminal graphique
  sur des systemes bitmaps couleurs et monochromes.  MMGGRR 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.

  MMGGRR  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.
  MMGGRR  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 : MMGGRR imite des actions sur le clavier en  reponse
  a des selections du menu utilisateur ou d'autres evenements.

  22..22..  CCoonnddiittiioonnss rreeqquuiisseess

  MMGGRR tourne couramment sur Linux, FreeBSD, stations Sun 3/4 avec SunOS,
  et  Coherent.  Certaines  versions  anciennes  de  MMGGRR  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.

  MMGGRR 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 MMGGRR est a X ce que Unix est a Multics.

  22..33..  QQuueelllleess ssoonntt lleess ddiiffffeerreenncceess eennttrree MMGGRR,, XX1111 eett 88..55 ??

  MMGGRR 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.

  33..  IInnssttaalllleerr MMGGRR

  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 MMGGRR 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  MMGGRR,  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 MMGGRR 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 MMGGRR 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 MMGGRR.  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 :

     --DDWWHHOO
        fichier utmp poubelle pour que "who" puisse travailler

     --DDVVII
        code pour faire bouger le curseur sous vi avec la souris

     --DDDDEEBBUUGG
        permet la mise au point en selectionnant l'option -d

     --DDFFAASSTTMMOOUUSSEE
        XOR le temps d'acces de la souris

     --DDBBUUCCKKEEYY
        permet les commandes serveur par le clavier sans souris

     --DDPPRRIIOORRIITTYY
        pour planifier la priorite des fenetres au lieu  de  fonctionner
        par  requetes  circulaires  ; la fenetre active obtient une plus
        grande priorite.

     --DDCCUUTT
        pour faire du couper/coller entre fenetres

     --DDMMGGRR__AALLIIGGNN
        force   l'alignement   des   fenetres    pour    un    scrolling
        rapide(monochrome)

     --DDKKIILLLL
        supprime les fenetres en cas d'erreurs i/o sur un tty

     --DDSSHHRRIINNKK
        pour utiliser seulement une partie de l'ecran ($MGRSIZE dans les
        variables d'environnement)

     --DDNNOOSSTTAACCKK
        interdit l'empilement d'evenements

     --DDBBEELLLL
        actionne le bip

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

     --DDFFRRAACCCCHHAARR
        mouvement de caractere fractionnel pour fontes proportionnelles

     --DDXXMMEENNUU
        menu etendu (experimental)

     --DDMMOOVVIIEE
        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).

     --DDEEMMUUMMIIDDMMSSBBUUTT
        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 MMGGRR, 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 MMGGRR 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 ?

  44..  UUttiilliisseerr MMGGRR

  Le  seul  fichier  _i_n_d_i_s_p_e_n_s_a_b_l_e  sous MMGGRR 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 MMGGRR, si vous :

     nnee ppoouuvveezz ttrroouuvveerr ll''eeccrraann
        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.

     nnee ttrroouuvveezz ppaass llaa ssoouurriiss
        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.

     nnee ppoouuvveezz oobbtteenniirr uunn ppttyy
        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.

     nn''aavveezz rriieenn dd''aauuttrree qquuee llaa ffoonnttee ppaarr ddeeffaauutt
        assurez-vous  que  MMGGRR  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.

     eetteess ccoommpplleetteemmeenntt bbllooqquuee ((mmeemmee llee ppooiinntteeuurr ssoouurriiss nnee bboouuggee ppaass))
        logez vous sur votre machine a partir  d'un  autre  terminal  et
        tuez le processus mgr. Un ctrl-Q  fera quitter MMGGRR si le clavier
        fonctionne encore.

  44..11..  AApppplliiccaattiioonnss nnoonn lliieeeess aa MMGGRR

  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.

  44..22..  AApppplliiccaattiioonnss ((cclliieennttss)) MMGGRR ddiissttrriibbuueeeess aavveecc llee sseerrvveeuurr

     bbddffttoommggrr
        convertit des fontes BDF en fontes MGR

     bbrroowwssee
        un browser d'icones

     bbuurryy
        enterre la fenetre

     cc__mmeennuu
        pour regarder les erreurs de compilation sous C a l'aide de vi

     cclloocckk
        horloge digitale

     cclloocckk22
        horloge analogique

     cclloossee
        ferme la fenetre et l'iconifie

     ccoolloorr
        pour les couleurs d'arriere et d'avant-plan  du  texte  dans  la
        fenetre

     ccuurrssoorr
        change l'aspect du curseur texte

     ccuutt
        couper/coller du texte de la fenetre vers une memoire tampon

     ccyyccllee
        affiche une sequence d'icones
     ddmmggrr
        previsualisateur ditroff a l'etat brut

     ffaaddee
        fait passer d'une scene a une autre dans un film

     ffoonntt
        passe a une autre fonte dans la fenetre

     ggrrooppbbmm
        un pilote groff PBM utilisant les fontes Hershey

     hhppmmggrr
        emulateur de terminal hp 2621

     iiccoo
        anime un isocaedre ou un autre polyedre

     iiccoonnmmaaiill
        annonce l'arrivee de courrier

     iiccoonnmmssggss
        annonce l'arrivee d'un message

     iiffyy
        iconifie et desiconifie les fenetres

     llooaaddffoonntt
        charge une fonte a partir du systeme de fichiers

     mmaazzee
        jeu de labyrinthe

     mmcclloocckk
        horloge comique

     mmeennuu
        cree ou choisit un menu pop-up

     mmggrr
        Gestionnaire de fenetres et serveur Bellcore

     mmggrrbbdd
        jeu boulder-dash

     mmggrrbbiiffff
        surveille la boite aux lettres et annonce le courrier

     mmggrrllooaadd
        graphique indiquant la charge du systeme

     mmggrrlloocckk
        verrouille la console

     mmggrrllooggiinn
        controleur graphique de login

     mmggrrmmaagg
        loupe sur une partie de l'ecran, avec option de sauvegarde

     mmggrrmmaaiill
        annonce l'arrivee de courrier

     mmggrrmmooddee
        ajuste ou annule les modes de fenetre

     mmggrrmmssggss
        annonce l'arrivee de messages

     mmggrrpplloott
        filtre graphique Unix "plot"

     mmggrrsscclloocckk
        sablier

     mmggrrsshhoowwffoonntt
        parcourt les fontes mgr

     mmggrrsskkeettcchh
        programme de schemas et dessins

     mmggrrvviieeww
        visualise des images bitmap

     mmlleessss
        demarre  less/more  dans  une fenetre separee, avec un menu pour
        less  wtag/mnew/demarrer  n'importe  quel  programme  dans   une
        fenetre separee independante.

     mmvvii
        demarre vi dans une fenetre separee, avec souris

     oocclloossee
        ferme une fenetre (ancien)

     oommggrrmmaaiill
        annonce l'arrivee de courrier (ancien)

     ppbbmmrraawwttoommggrr,,ppggmmrraawwttoommggrr,,ppppmmrraawwttoommggrr
        convertit des bitmats PBM,PGM,PPM brutes en format bitmap mgr

     ppbbmmssttrreeaamm
        fractionne une sequence de bitmaps

     ppbbmmttoopprrtt
        impression a partir de PBM

     ppggss
        un patch ghostscript et interface, un visualisateur PS

     ppiilloott
        balaye des bitmaps et visualise des images

     rreesseettwwiinn
        fait le menage dans une fenetre si le client se plante

     rroottaattee
        rotation d'un bitmap de 90 degres.

     ssccrreeeenndduummpp
        sauvegarde un ecran graphique dans un fichier bitmap

     sseett__ccoonnssoollee
        redirige les messages  console vers une fenetre

     sseett__tteerrmmccaapp
        ajuste une valeur TERMCAP appropriee

     sseettnnaammee
        nomme une fenetre, pour les messages et pour l'iconifier

     sshhaappee
        redimensionne une fenetre

     ssqquuaarree
        transforme une fenetre en carre

     ssqquueeeezzee
        compresse un bitmap mgr

     ssttaarrttuupp
        fournit  un  fichier  de  demarrage  pour  la  disposition de la
        fenetre courante

     tteexxmmggrr
        pour previsualiser un fichier TeX dvi

     tteexxtt22ffoonntt,, ffoonntt22tteexxtt
        conversion entre formats fonte mgr et un texte dump

     uunnssqquueeeezzee
        pour decompresser un bitmap mgr

     vvggaaffoonntt22mmggrr,,mmggrrffoonntt22vvggaa
        conversion de format de fontes mgr et VGA

     wwiinnddooww__pprriinntt
        imprime l'image d'une fenetre

     zzoooomm
        editeur d'icones

     bboouunnccee,, ggrraavv,, hhiillbbeerrtt,, mmggrreeyyeess,, ssttrriinnggaarrtt,, wwaallkk
        demos graphiques

  44..33..  AApppplliiccaattiioonnss MMGGRR ddiissttrriibbuueeeess sseeppaarreemmeenntt,, ccff ffiicchhiieerr ""SSUUPPPPOORRTT""

     ccaallccttooooll
        calculatrice

     cchheessss
        interface pour /usr/games/chess

     ggnnuu eemmaaccss
        editeur avec souris lisp/term/mgr.el et aide menu

     ggnnuupplloott
        traceur de donnees scientifiques universel

     mmeettaaffoonntt
        creation et conception de fontes

     oorriiggaammii
        editeur de dossier

     ppbbmmpplluuss
        conversions et manipulations de format portable bitmap

     ppllpplloott
        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.
  55..  PPrrooggrraammmmaattiioonn ppoouurr MMGGRR

  Le manuel des programmeurs MMGGRR, 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
  MMGGRR en lisant et essayant le pilote de terminal mgr.el pour GNU Emacs,
  qui met en oeuvre la bibliotheque interface MMGGRR 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 MMGGRR doivent etre inte-
  grees avec votre boucle de manipulation d'evenement.

  La seule fonction manquante pour les dessins dans le protocole MMGGRR 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.

  66..  DDooccuummeennttaattiioonn ssuupppplleemmeennttaaiirree

  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.

  77..  RReemmeerrcciieemmeennttss

  Stephen  Uhler,  avec  d'autres  travaillant  chez  Bellcore,  fut  le
  concepteur initial de MMGGRR, des lors Bellcore a des droits d'auteur sur
  la plupart des codes et des documentations de MMGGRR, 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,  dgymer@gdcarc.co.uk,  pour  la  correction de l'effet
     Startrek.

  +o  Alex Liu pour la premiere version de Linux de MMGGRR.

  +o  Lars Aronsson (aronsson@lysator.liu.se) pour  les  fontes  tex2  et
     ISO8859.

  +o  Harry             Pulley             (hcpiv@grumpy.cis.uoguelph.ca,
     hcpiv@snowhite.cis.uoguelph.ca) 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 (brad@lachman.com) 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 (applix@runxtsa.runx.oz.au) qui ecrivit le premier le
     code        cut-word.

  +o  Kapil  Paranjape  (kapil@motive.math.tifr.res.in)  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, carsten@thlmak.pr.net.ch, 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,  ka@socrates.hr.att.com,  pour  les   salutaires
     reports de bogues.

  +o  Tim  Pierce,  twpierce@midway.uchicago.edu,  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 MMGGRR
     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.

