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.