  L'HOWTO sul sistema a finestre MGR
  Vincent Broman
  Bozza, 30 Maggio 1996
  ____________________________________________________________

  Indice Generale


  1. Questo HOWTO
     1.1 Dove trovare questo HOWTO
     1.2 Autenticazione
     1.3 Ringraziamenti per l'HOWTO

  2. Cos'e l'MGR Window System?
     2.1 Funzionalit
     2.2 Requisiti
     2.3 Come comparare MGR, X11 e 8.5?

  3. Installazione di MGR
  4. Usare MGR
     4.1 Applicazioni che supportano MGR in modo trasparente
     4.2 Applicazioni MGR (client) distribuite con il server
     4.3 client predisposti per MGR distribuiti a parte, vedi il file             "SUPPORT"

  5. Programmazione in MGR
  6. Documentazione ulteriore
  7. Ringraziamenti per MGR


  ______________________________________________________________________

  11..  QQuueessttoo HHOOWWTTOO


    Per motivi di origine legale, io Francesco Tapparo (cesco@goldnet.it),
    traduttore di questo HOWTO preferisco lasciare non tradotto il copyright
    originale dell'autore:

                           Copyright Vincent Broman 1995.
          Permission granted to make and distribute copies of this HOWTO
             under the conditions of the GNU General Public License.



  11..11..  DDoovvee ttrroovvaarree qquueessttoo HHOOWWTTOO

  Questo HOWTO si pu reperire in ftp://archimedes.nosc.mil/pub/Mgr/MGR-
  HOWTO.sgml, oltre a trovarsi in
  ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/MGR-HOWTO.  In directory
  vicine potrebbero comparire gli stessi documenti in formati
  alternativi, come MGR-HOWTO.txt.

  11..22..  AAuutteennttiiccaazziioonnee

  Le copie della distribuzione di MGR dovuta a Broman dovrebbero essere
  accompagnate da file di firma PGP, firmati da "Vincent Broman
  <broman@nosc.mil>".



  11..33..  RRiinnggrraazziiaammeennttii ppeerr ll''HHOOWWTTOO

  Nonostante Vincent Broman abbia per primo composto questo HOWTO, molte
  delle informazioni e del testo  stato ottenuto da FAQ, README, etc.
  scritti da Stephen Uhler, Michael Haardt, e altri generosi utenti
  della Rete.  Correzioni Email e suggerimenti di modifiche devono
  essere spedite a broman@nosc.mil.

  Uhler  stato il principale artefice di  MMGGRR -- vedi la sezione
  Ringraziamenti pi avanti.


  22..  CCooss''ee ll''MMGGRR WWiinnddooww SSyysstteemm??


  22..11..  FFuunnzziioonnaalliitt

  MMGGRR (ManaGeR)  un sistema grafico a finestre.  Il server MMGGRR fornisce
  nativamente un window manager e l'emulazione di terminali grafici a
  finestra su schermi a pixel, siano essi a colori o monocromatici.  MMGGRR
   controllato selezionando dei menu a scomparsa con il mouse,
  interagendo con la tastiera, e attraverso sequenze di escape scritte
  su pseudo-terminali dal software client.

  MMGGRR fornisce ogni client di: funzioni di controllo terminale alla
  termcap;  primitive grafiche come disegno di linee e cerchi; utility
  per manipolare bitmap, font, icone, e menu a scomparsa; comandi per il
  ridisegno e il posizionamento delle finestre; e una facility di
  inoltro messaggi che abilita i client a ritornare e scambiare
  messaggi.  I programmi possono chiedere di venire informati quando
  avviene un cambiamento nel window system, come la modifica delle
  dimensioni di una finestra, la pressione di un tasto del mouse, o
  l'arrivo di un messaggio da parte di un altro client.  Questi
  cambiamenti vengono detti eventi.  MMGGRR notifica un evento a un client
  inviandogli una stringa di caratteri ASCII in un formato da questi
  specificato. Le applicazioni preesistenti si possono facilmente
  integrare nell'ambiente window senza modifiche poich MMGGRR imita la
  pressione di tasti in risposta a selezioni da menu definiti
  dall'utente o altri eventi.


  22..22..  RReeqquuiissiittii

  Allo stato attuale, MMGGRR gira su Linux,  FreeBSD, sulle workstation Sun
  3/4 con SunOS, e su Coherent.  Varie versioni precedenti di MMGGRR girano
  su Macintosh, Atari ST MiNT, Xenix, 386-Minix, DEC 3100, e 3b1 Unix-
  pc.  Molti piccoli sistemi industriali real-time sotto OS9 o Lynx in
  Europa usano (un altra variante di) MGR per la loro interfaccia
  utente.  L'interfaccia di programmazione  scritta in C e in ELisp,
  quantunque sia abbastanza facile supportare client scritti in altri
  linguaggi.  MMGGRR richiede molte meno risorse di X, o addirittura di
  gcc.  Non ha la base utenti, il repertorio software o le librerie di
  alto livello di X o MS-Windows, ad esempio, ma  abbastanza elegante
  ed accessibile.

   stato detto che MMGGRR sta ad X come Unix sta a Multics.


  22..33..  CCoommee ccoommppaarraarree MMGGRR,, XX1111 ee 88..55??

  MMGGRR consiste di un server con window manager ed emulatore di terminale
  nativi, client che girano in questo emulatore usandolo per comunicare
  con il server. Non viene eseguito alcun multiplexing delle risorse.

  X11 consiste di un server e di client, che usualmente si connettono al
  server usando un socket. Tutti i servizi visibili all'utente, come
  emulatori di terminale, window manager etc. sono forniti da client.
  Non viene eseguito alcun multiplexing delle risorse.

  8.5, il sistema a finestre Plan 9,  un multiplexer di risorse, in
  quanto ogni processo in una finestra pu accedere a /dev/bitblt,
  /dev/mouse e /dev/kbd nel proprio namespace.  Questi sono multiplexati
  ai /dev/bitblit, /dev/mouse e /dev/kbd nel namespace di 8.5.  Questo
  approccio permette di girare 8.5 in una finestra di 8.5, un design
  molto pulito.  8.5 inoltre ha un window manager e un emulatore di
  terminale integrati.


  33..  IInnssttaallllaazziioonnee ddii MMGGRR

  L'ultima distribuzione dei sorgenti pu essere prelevata tramite FTP
  da ftp://bugs.nosc.mil/pub/Mgr/69 o tramite Mosaic da
  http://archimedes.nosc.mil/Mgr/69.  Essa si pu trovare anche presso
  ftp://sunsite.unc.edu/pub/Linux/apps/MGR ed i suoi mirrors.  Versioni
  precedenti di questa distribuzione, curate da Haardt, si possono
  trovare in tsx-11.mit.edu, e probabilmente altrove.  Versioni di MMGGRR
  precedenti al port per Linux, di Uhler ed altri si trovavano in
  ftp://bellcore.com/pub/mgr, ma penso che ora non vi siano pi.  Io ho
  salvato una copia di ogni cosa riguardante MMGGRR vista su Internet, ma
  non sono a conoscenza di nulla di una certa importanza che manchi da
  questa distribuzione per Linux e Sun.  MMGGRR  passato attraverso un bel
  po' di versioni e releases, ma la corrente versione *per Linux*  la
  0.69. Essa passer a 1.0 quando vi sar del codice stabile per
  supportare la VGA a 256 colori sotto Linux (per pi di una scheda
  grafica).  I numeri di versione RCS sono saliti dal 4.3 della Bellcore
  al 4.13 attuale.

  Per costruire questa distribuzione di MMGGRR sono necessari i seguenti
  tools: m4 (GNU, o forse anche altri dotati dell'opzione -D), make
  (GNU, o forse anche altri che supportino gli include) e *roff per la
  documentazione. Ed anche sh e POSIX install. Le distribuzioni binarie
  spesso non vengono assemblate, cosicch  necessario un compilatore
  ANSI C, come per esempio gcc.

  Una installazione Linux richiede Linux 0.99.10 o meglio (quello che io
  uso attualmente per il testing  la versione 1.2.13), una scheda
  grafica HGC, EGA, VGA o SVGA, e un mouse.  Sono supportati i seguenti
  mouse: mouse seriale Microsoft, mouse seriale MouseSystems a 3 e 5
  byte mouse seriale MMSeries, mouse seriale Logitech, mouse PS/2,
  oppure un bus mouse. Con le combinazioni Buckey (Meta) da tastiera,
  anche un sistema senza mouse potrebbe fare un po' di utile lavoro
  sotto MMGGRR. Il modo grafico monocromatico VGA 640x480  supportato
  senza bisogno di alcun intervento particolare, ed egualmente quello
  640x350 e 640x200.  Per supportare la modalit 800x600, o altre che il
  tuo BIOS pu inizializzare e che non richiedono bank-switching, 
  necessario far girare sotto DOS, o un emulatore, un piccolo programma
  (src/vgamisc/regs.exe) per leggere i registri VGA e scrivere un file
  header da piazzarsi nella directory src/libbitblit/linux, cosicch
  possa venire #incluso dal file l presente vga.c. Sono forniti anche
  degli esempi di tali file, ma per favore creati quelli specifici della
  tua particolare scheda.  Alcune schede VGA possono usare modalit
  grafiche che richiedono 128k di RAM, e queste potrebbero supportare
  risoluzioni monocromatiche pi elevate.

  Il codice per la modalit a colori in Linux funziona senza problemi
  anche nella modalit policromatica VGA 320x200x256, poich essa non
  richiede alcun bank-switching. Se pensi quanto pochi siano 64000
  pixel, capirai che questa modalit  assai limitata.  Nella versione
  0.65  stato aggiunto del codice per il bank-switching, non molto
  veloce, ma semplice: funziona con una scheda grafica Tseng ET4000
  nelle modalit 640x480x256 e 800x600x256. Il codice per la S3 non
  funziona ancora nelle risoluzioni super VGA.  Supportare nuove schede
  super VGA richiede la scrittura di una  funzione per switchare i
  banchi, e quindi assicurare che la modalit desiderata possa venire
  inizializzata da un register dump, magari lavorandoci un po' sopra a
  mano. I servers a colori per Linux generalmente corrompono i font
  dello schermo, rendendo necessario l'uso di restorefont come in runx.

  Sono supportati anche i Sun con SunOS 4.1.2+ e i frame buffer bwtwo,
  cgthree, o cgsix. La loro velocit lavorando nelle modalit a colori 
  buona. Le installazioni Coherent dovrebbero riferirsi al file
  README.Coh nella distribuzione dei sorgenti.  Il porting della
  versione pi recente di MGR ad un altro sistema POSIX-like, che
  supporti  select, i pty e l'accesso diretto ad un frame-buffer a mappa
  di bit dovrebbe essere immediato, richiedendo solo l'implementazione
  della libreria libbitblt basandosi, per esempio, sul codice sunmono o
  colorport.

  Per una installazione completa, occorrono 7 Mb di spazio su disco per
  i file binari, i font, le man-page etc. I file sorgente occupano circa
  4.5 Mb, cui vanno aggiunti i file oggetto durante la compilazione.

  Normalmente, la directory dove installare i file che MMGGRR usa a runtime
  dovrebbe essere /usr/mgr, o almeno dovrebbe venire linkata ad essa.
  Scrivendo:


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



  e facoltativamente


       cd /usr/mgr; tar xvfz dovelohaimesso/morefonts-0.69.tgz



  si scomprimeranno questi file.  I sorgenti possono venire installati
  ovunque, ad esempio scrivendo


       cd /usr/src/local/mgr; tar xvfz dovelohaimesso/mgrsrc-06.9.tgz



  per scomprimere i sorgenti prelevati da archimedes.nosc.mil.

  L'albero dei sorgenti pu venire compilato da un unico Makefile nella
  directory principale che chiama quelli nelle secondarie, ognuno dei
  quali "include" il file "Configfile" nella directory base. Configfile
   creato dallo shell script interattivo Configure, che, tenendo conto
  delle tue risposte ad alcune sue domande, fa processare Configfile.m4
  ad m4.  Quindi si deve scrivere qualcosa di simile a questo:



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



  Potrebbe essere saggio, prima di far partire make, dare uno sguardo al
  Configfile generato dallo script Configure, controllando che sembri
  ragionevole.  (Come minimo un m4 (il /usr/bin/m4 dei Sun) si ferma
  subito creando un Configfile cortissimo.  Se accade questo, bisogna
  editare a mano una copia di Configfile.sun o Configfile.lx) Si pu
  anche editare make all in ogni directory in cui sia stato creato un
  Makefile, non appena siano state compilate ed installate le librerie.
  Il server, le librerie, e alcuni client sono stati lintati, ma molti
  client sono scritti in K&R C, e fanno generare molti warning al
  compilatore.

  Si possono aggiungere od omettere molti flag nella variabile MGRFGLAGS
  in Configfile per modificare alcune caratteristiche opzionali del
  server, ossia:

     --DDWWHHOO
        modifica il file utmp cos da permettere il funzionamento di
        "who"

     --DDVVII
        inserisce del codice che permette di muovere il cursore con il
        mouse in vi

     --DDDDEEBBUUGG
        abilita la possibilit di selezionare con l'opzione -d un output
        di debug

     --DDFFAASSTTMMOOUUSSEE
        utilizza l'operazione XOR nel tracciamento del mouse

     --DDBBUUCCKKEEYY
        abilita i comandi da tastiera, senza l'utilizzo del mouse

     --DDPPRRIIOORRIITTYY
        usa uno scheduling diverso dal round-robin standard, dando una
        priorit pi alta alla finestra attiva

     --DDCCUUTT
        abilita il supporto per il copia/incolla fra le finestre.

     --DDMMGGRR__AALLIIGGNN
        forza l'allineamento della finestra sul confine del byte, per
        una maggiore velocit di scrolling ( solo nelle modalit
        monocromatiche)

     --DDKKIILLLL
        uccide le finestre nel caso che la tty riporti un errore di i/o

     --DDSSHHRRIINNKK
        usa solo parte dello schermo ( pari al valore della variabile di
        ambiente $MGRSIZE)

     --DDNNOOSSTTAACCKK
        non permette lo stacking degli eventi

     --DDBBEELLLL
        attiva il beep

     --DDKKBBDD
        nei Sun legge l'input di MGR dalla tastiera, invece che da
        stdin. Questo permette la redirezione a una finestra dei
        messaggi della console.

     --DDFFRRAACCCCHHAARR
        abilita il supporto per il movimento frazionale dei caratteri
        permettendo cos l'uso di font proporzionali

     --DDXXMMEENNUU
        supporto esteso per i menu ( sperimentale )

     --DDMMOOVVIIEE
        estensione per fare moviole: tutte le operazioni vengono salvate
        su di un file per un successivo replay -- non del tutto
        funzionante su Linux

     --DDEEMMUUMMIIDDMMSSBBUUTT
        nei mouse a due tasti, emula il bottone di mezzo premendo
        insieme gli altri 2.

  Non tutte le combinazioni di queste opzioni sono state testate su
  tutti i sistemi.

  La macro BITBLITFLAGS deve contenere -DBANKED se si sta provando il
  supporto per la SVGA a colori.

  Un convertitore genera il codice C per le variabili statiche
  contenenti le icone e i font dai file corrispondenti.

  Non tutti i client vengono compilati ed installati dai Makefile.  I
  client che si trovano sotto src/clients e che hanno i nomi
  capitalizzati, o che non vengono compilati dai Makefile forniti
  possono presentare problemi durante la compilazione o l'esecuzione, ma
  pu essere interessante farci un po' di hacking.  Molti dei driver
  video nella directory libbitblit sono di interesse soprattutto
  archeologico. Qualche volta rovistando nelle tombe pu saltare fuori
  qualcosa di interessante.


  A un certo punto controlla che i tuoi file /etc/termcap e/o terminfo
  contengano le entrate per i terminali MMGGRR come quelli che si trovano
  nella directory misc. Se tutto il tuo software controlla $TERMCAP
  nell'ambiente , questo non  pi necessario, finch fai partire eval
  `set_termcap` in ogni finestra.

  MMGGRR funziona meglio se gira setuid root, poich cerca di cambiare le
  propriet dei pty e scrivere nel file utmp. Questo aiuta il gestore di
  icone ify a lavorare meglio e il meccanismo di trasmissione degli
  eventi ad essere pi sicuro.  Su Linux sono _n_e_c_e_s_s_a_r_i_e le permissioni
  del root per l'input/output sullo schermo. D'altra parte, tu decidi se
  fidarti o no.


  Nelle versioni intorno alla 0.62 c'erano problemi sul Sun usando la
  csh come shell di default. I programmi sembravano girare in un gruppo
  di processi diverso da quello del gruppo di processi di primo piano
  del pty della finestra, in contrasto alle man-page e alle specifiche
  POSIX.  Non c'era nessun problema con bash, sh o rc. Qualcuno ha un
  idea del perch ?


  44..  UUssaarree MMGGRR

  Il solo file _r_i_c_h_i_e_s_t_o in una installazione MMGGRR  il server stesso.
  Questo ti dar finestre ad emulatore di terminale con shell giranti in
  esse e la possibilit di effettuare il cut/paste con il mouse ma,
  nessun bell'orologio, nessun font extra, nessun capriccio grafico,
  etc. A seconda delle opzioni, un server monocromatico necessita di
  circa 200K di RAM, oltre allo spazio allocato dinamicamente per
  window, bitmap, etc.

  Se /usr/mgr/bin  nel tuo PATH, digita semplicemente "mgr" per
  partire.  Dopo esserti goduto l'animazione di avvio, premi un tasto.
  Quando compaiono lo sfondo tratteggiato e il puntatore del mouse,
  mantieni premuto il pulsante sinistro del mouse, seleziona la voce
  "new window" dal menu, e rilascia il pulsante. Quindi definisci la
  finestra trascinando i suoi angoli con il mouse. Nella finestra girer
  la tua shell di default. Tieni premuto il pulsante sinistro del mouse
  sopra un finestra per vedere un altro menu con il quale eseguire
  azioni su quella finestra. Premendolo sopra una finestra parzialmente
  coperta, essa viene riportata in primo piano.  Il menu che hai visto
  generarsi sullo sfondo vuoto comprende il comando quit. Per le persone
  con un mouse a due pulsanti: premete entrambi i pulsanti insieme per
  emulare il pulsante di mezzo mancante, usato da alcuni programmi.


  Il sottomenu quit comprende l'opzione "really quit", un'opzione di
  sospensione che sar usata solo se stai facendo girare una shell
  supportante il job-control, ed una opzione per uno screen-saver/locker
  che aspetta che tu batta la password quando ritorni alla tua macchina.

  Se ,provando a far partire MMGGRR, ottieni:

     ccaann''tt ffiinndd tthhee ssccrreeeenn
        accertati di avere un file /dev per il tuo display, per esempio
        /dev/bwtwo0 su un Sun. Se non lo hai, va come root nella
        directory /dev, e digita "MAKEDEV bwtwo0".  Altrimenti, potresti
        aver bisogno nella riga di comando dell'opzione -S/dev/bwtwo0 o
        (su Linux) della opzione -S640x480 quando fai partire MGR.  Su
        Linux dovresti anche assicurarti che /usr/mgr/bin/mgr sia stato
        installato setuid root.


     ccaann''tt ffiinndd tthhee mmoouussee
        accertati che esista /dev/mouse , usualmente un link simbolico
        al vero file di periferica del tuo mouse. Se non hai le
        permissioni per scrivere in /dev, puoi dare un'opzione come
        -m/dev/cua0 quando fai partire MGR. Inoltre sii sicuro di aver
        fornito il giusto protocollo del mouse quando hai configurato
        MGR. Il mouse pu pu utilizzare quello Microsoft, anche se
        questo non  il nome della marca.


     ccaann''tt ggeett aa ppttyy
        accertati che tutti i /dev/[tp]ty[pq]? siano posseduti da root,
        con modo 666, e che tutti i programmi indicati con l'opzione
        "shell" nel tuo file di avvio .mgrc (se c') esistano e siano
        eseguibili.


     nnoonnee bbuutt tthhee ddeeffaauulltt ffoonntt
        accertati che MMGGRR stia cercando i font nella directory giusta.
        Controlla Configfile nei sorgenti o vedi se dare una opzione
        -f/usr/mgr/font a mgr risolve il problema.


     ccoommpplleettaammeennttee bbllooccccaattoo ((nnoonn ssii mmuuoovvee nneemmmmeennoo iill ccuurrssoorree ddeell mmoouussee))
        loginati alla tua macchina da un altro terminale (o usa rlogin)
        e uccidi MGR.  Se la tastiera funziona ancora, un tasto Buckey-Q
        pu farti uscire da MMGGRR.


  44..11..  AApppplliiccaazziioonnii cchhee ssuuppppoorrttaannoo MMGGRR iinn mmooddoo ttrraassppaarreennttee

  Ogni applicazione che giri in modalit tty pu essere fatta partire in
  una finestra MMGGRR senza ulteriore pena. Le applicazioni che girano in
  modalit testo usando termcap o curses possono ottenere da sole il
  numero corretto di linee e colonne della finestra usando shape(1) per
  ridisegnare la finestra o set_termcap(1) per ottenere l'entrata
  termcap corretta.



  44..22..  AApppplliiccaazziioonnii MMGGRR ((cclliieenntt)) ddiissttrriibbuuiittee ccoonn iill sseerrvveerr


     bbddffttoommggrr
        converte dei font .bdf in font MGR

     bbrroowwssee
        un browser di icone

     bbuurryy
        nasconde questa finestra

     cc__mmeennuu
        costruisce menu dagli errori del compilatore C

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

     cclloocckk22
        orologio analogico

     cclloossee
        chiude la finestra e la iconifica

     ccoolloorr
        setta i colori di primo piano e di sfondo del testo nella
        finestra.

     ccoolloorrmmaapp
        legge o modifica la palette

     ccuurrssoorr
        cambia l'aspetto del cursore

     ccuutt
        ritaglia del testo dalla finestra e lo ricopia nel cut buffer

     ccyyccllee
        visualizza una serie di icone

     ddmmggrr
        primitivo previewer di file ditroff

     ffaaddee
        fa sfumare uno script home movie da una scena all'altra

     ffoonntt
        passa ad usare un nuovo font nella finestra

     ggrrooppbbmm
        un driver che traduce dal formato roff al formato PBM, usando i
        font Hershey.

     hhppmmggrr
        emulatore di terminale hp 2621

     iiccoo
        disegna un icosaedro, o altro poliedro, animato

     iiccoonnmmaaiill
        notifica l'arrivo della posta

     iiccoonnmmssggss
        notifica l'arrivo dei messaggi


     iiffyy
        iconifica e deiconifica le finestre

     llooaaddffoonntt
        carica un font dal disco

     mmaazzee
        un gioco di labirinto

     mmcclloocckk
        orologio micky mouse

     mmeennuu
        crea o seleziona un menu a scomparsa

     mmggrr
        server e window manager del window system della Bellcore

     mmggrrbbdd
        il gioco boulder-dash

     mmggrrbbiiffff
        guarda se  arrivata posta nella mailbox e la notifica

     mmggrrllooaadd
        disegna un grafico del load average del sistema

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

     mmggrrllooggiinn
        manager grafico di login

     mmggrrmmaagg
        ingrandisce una parte dello schermo, salvandolo su file se si
        vuole

     mmggrrmmaaiill
        notifica l'arrivo della posta

     mmggrrmmooddee
        attiva o disattiva i modi delle finestre

     mmggrrmmssggss
        notifica l'arrivo dei messaggi

     mmggrrpplloott
        filtro grafico per Unix "plot"

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

     mmggrrsshhoowwffoonntt
        esamina i font MGR

     mmggrrsskkeettcchh
        un programma per fare schizzi/disegni

     mmggrrvviieeww
        visore per i bitmap MGR

     mmlleessss
        fa partire less o more in una finestra separata, con un menu
        aggiunto nel caso di less.


     mmnneeww
        fa partire un qualunque programma in un finestra separata e
        indipendente.

     mmpphhoooonn
        visualizza la corrente fase lunare

     mmvvii
        fa partire vi in una finestra separata, con puntamento del mouse

     oocclloossee
        (obsoleto) chiude una finestra

     oommggrrmmaaiill
        (obsoleto) notifica l'arrivo della posta

     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
        convertono i file di immagini in formato raw PBM, PGM, PPM.

     ppbbmmssttrreeaamm
        legge un flusso di bitmap e fa partire un programma per ognuno
        di essi

     ppbbmmttoopprrtt
        produce output per stampante da un PBM

     ppggss
        front-end per ghostscript (un visore postscript), con la patch
        necessaria per poterlo utilizzare.

     ppiilloott
        un bitmap browser o visore di immagini.

     rreesseettwwiinn
        risistema lo stato di una finestra dopo che il crash di un
        client lo ha rovinato

     rroottaattee
        ruota un bitmap di 90 gradi

     ssccrreeeenndduummpp
        scrive una copia dello schermo grafico ad un file bitmap

     sseett__ccoonnssoollee
        ridirige alla finestra i messaggi destinati alla console

     sseett__tteerrmmccaapp
        visualizza un appropriato settaggio di TERM e TERMCAP per la
        finestra attuale

     sseettnnaammee
        da un nome ad una finestra, cosa utile per i messaggi e
        l'iconificazione

     sshhaappee
        cambia le dimensioni di una finestra

     ssqquuaarree
        quadra questa finestra

     ssqquueeeezzee
        comprime un bitmap MGR usando l'algoritmo di compressione run-
        length encoding.

     ssttaarrttuupp
        produce lo scheletro di un file di startup che produca il
        corrente layout di finestra

     tteexxmmggrr
        visore di file TeX dvi

     tteexxtt22ffoonntt,, ffoonntt22tteexxtt
        per passare dal formato dei font per MGR al formato testo e
        viceversa

     uunnssqquueeeezzee
        decomprime un bitmap MGR compresso con l'algoritmo run-length
        encoding

     vvggaaffoonntt22mmggrr,, mmggrrffoonntt22vvggaa
        convertono i font dal formato VGA al formato MGR, e viceversa.

     wwiinnddooww__pprriinntt
        stampa un'immagine di una finestra

     zzoooomm
        un editor di icone

     bboouunnccee,, ggrraavv,, ggrriidd,, 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
        demo grafici


  44..33..  cclliieenntt pprreeddiissppoossttii ppeerr MMGGRR ddiissttrriibbuuiittii aa ppaarrttee,, vveeddii iill ffiillee
  ""SSUUPPPPOORRTT""


     ccaallccttooooll
        calcolatrice su schermo

     cchheessss
        frontend a /usr/games/chess

     ggnnuu eemmaaccss
        editor con lisp/term/mgr.el e supporto per mouse & menu

     ggnnuupplloott
        programma universale per la rappresentazione di dati scientifici

     mmeettaaffoonntt
        programma per il progetto e la creazione di font

     oorriiggaammii
        l'editor pieghevole

     ppbbmmpplluuss
        conversioni e manipolazioni per il formato pbm

     ppllpplloott
        programma per la veloce rappresentazione di dati scientifici

  Il supporto Emacs in misc/mgr.el e misc/mailcap include un supporto
  MIME molto funzionale, attraverso Rmail e metamail.

  Utilizzando pilot e i filtri netPBM, si potrebbe costruire un visore
  di immagini che sappia interpretare molti formati diversi, ma non ho
  avuto il tempo per farlo.


  55..  PPrrooggrraammmmaazziioonnee iinn MMGGRR

  Il manuale del programmatore di MMGGRR, con l'interfaccia in linguaggio C
  alle applicazioni, si trova nella directory doc in formato
  troof/nroff. Esso copre i concetti generali, le chiamate alle
  funzioni/macro che controllano il server, una semplice applicazione,
  un indice e un glossario.

  Il porting di programma client usato con versioni precedenti di MMGGRR
  richiede qualche volta la sostituzione di


           #include <mgr/mgr.h>



  con


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



  e i client che usano le vecchio stile b_XOR, B_CLEAR, e simili invece
  di BIT_XOR, BIT_CLR e simili possono venire sistemati scrivendo


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



  Compilare codice per client richiede in genere opzioni di compilazione
  di questo tipo:


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



  Si pu fare un po' di esperienza con le funzioni del server MMGGRR in
  modo interattivo leggendo e sperimentando con il driver di terminale
  per GNU Emacs mgr.el che implementa la libreria di interfaccia a MMGGRR
  in ELisp.

  Il metodo usuale di procurarsi lo stato dal server pu portare a dei
  problemi se il client si aspetta anche un grande volume di notifiche
  di eventi. Il problema sorge se una notifica (asincrona) arriva quando
  si aspetta la risposta ad una richiesta (sincrona). Se questo accade
  effettivamente (cosa inusuale) le funzioni di MMGGRR per procurarsi lo
  stato dovranno essere integrate con il tuo loop per la gestione degli
  eventi.

  Il solo servizio fondamentale di disegno mancante nel protocollo MMGGRR
  sembra essere la colorazione di un area per aree diverse da rettangoli
  orizzontali.  C' del nuovo codice per la manipolazione della mappa
  globale dei colori, come per l'allocazione (suggerita) e deallocazione
  degli indici dei colori posseduti dalle finestre.

  Se pensi di effettuare dell'hacking su server, puoi trovare il driver
  del mouse in mouse.* e mouse_get.*, le parti grotty dell'interfaccia
  alla tastiera in kbd.c, e l'interfaccia al display nelle directory
  src/libbitblit/*. La procedura main, la maggior parte delle
  inizializzazioni, e la parte di alto livello del loop di input si
  trovano in mgr.c, mentre l'interpretazione delle sequenze di escape 
  in put_window.c.


  66..  DDooccuummeennttaazziioonnee uulltteerriioorree

  Il manuale del programmatore  indispensabile per i concetti generali.

  Quasi tutti i client forniti sono dotati di una man page installata in
  /usr/mgr/man/man1 o man6.  Altre utili man page sono bitblit.3,
  font.5, e bitmap.5.  C' un po' di ambiguit nella documentazione nel
  distinguere il formato bitmap interno nel tuo frame-buffer e il
  formato bitmap nei file, come per esempio le icone.

  La man page mgr.1 copre le opzioni nella riga di comando, i comandi
  nel file di startup ~/.mgrc, l'interazione del mouse e dei menu con il
  server,  e i comandi da tastiera disponibili sui sistemi con i tasti
  necessari.

  Molti dei font in /usr/mgr/font/* sono descritti almeno parzialmente
  in /usr/mgr/font/*.txt, ad esempio /usr/mgr/font/FONTDIR.txt da una
  descrizione analoga a quella fornita per X-Windows per i font in
  formato .bdf.  I nomi dei font finiscono in WxH, dove W e H sono la
  larghezza e l'altezza in pixel(espresse in base 10) di ogni carattere.


  77..  RRiinnggrraazziiaammeennttii ppeerr MMGGRR

  Stephen Uhler, con altri che lavoravano alla Bellcore,  stato
  l'originale designer ed implementatore di MMGGRR, cosicch la Bellcore ha
  protetto da copyright molto del codice e della documentazione di MMGGRR
  ponendolo sotto i seguenti termini d'uso.


  ( N.d.T.: per motivi legali ho deciso di non tradurre il seguente copyright )

      * Permission is granted to copy or use this program, EXCEPT that it
      * may not be sold for profit, the copyright notice must be reproduced
      * on copies, and credit should be given to Bellcore where it is due.



  Si richiede di mostrare l'avviso di copyright nello schermo di
  startup.

  Altri ringraziamenti a:

    Stephen Hawley per le sue stupende icone.

    Tommy Frandsen per la libreria VGA per Linux.

    Tom Heller per la sua libreria Gasblit.

    Andrew Haylett per il driver del mouse.

    Dan McCrackin per le sue patch Gasblit->Linux.

    Dave Gymer, dgymer@gdcarc.co.uk, per il fix dell'effetto Startrek.

    Alex Liu per aver rilasciato per primo una versione funzionante di
     MMGGRR per Linux.

    Lars Aronsson (aronsson@lysator.liu.se) per text2font e un font
     ISO8859-1 a 8 bit.

    Harry Pulley (hcpiv@grumpy.cis.uoguelph.ca,
     hcpiv@snowhite.cis.uoguelph.ca) per il port a Coherent.
    Vance Petree & Grant Edwards & Udo Munk per il loro lavoro sulla
     Hercules.

    Udo Munk per il suo lavoro sulla inizializzazione del mouse seriale
     & select.

    Norman Bartek & Hal Snyder e Mark Williams Co. per il loro aiuto
     con alcuni bug & con i device driver per Coherent.

    Ringraziamenti ulteriori a Zeyd Ben Halim per le molte utilissime
     patch, in particolare l'adattamento della selezione.

    a Bradley Bosch, brad@lachman.com, per molte patch del suo port per
     3b1, che fissano errori ed implementano nuove e desiderabili
     caratteristiche.

    Andrew Morton, applix@runxtsa.runx.oz.au, che ha per primo scritto
     il codice cut-word.

    Kapil Paranjape, kapil@motive.math.tifr.res.in, per il supporto
     alla EGA.

    Michael Haardt per i fix al supporto MOVIE, le correzioni dei bug,
     la separazione del codice della libbitblt nei driver di output,
     l'espansione della libmgr, e la formattazione del codice per la
     navigazione con origami.

    a Yossi Gil per i molti font.

    a Carsten Emde, carsten@thlmak.pr.net.ch, per mphoon.

    a Vincent Broman per l'emulazione del bottone di mezzo del mouse,
     l'opera di linting, il supporto per il cgsix Sun, l'accesso alla
     tavola dei colori VGA, l'integrazione del codice per il port a Sun
     nella struttura software a strati disegnata da Haardt, la raccolta
     dei font, il salva schermo, e la manutenzione continua.

  Tutti i font bitmap di qualunque provenienza sono rigorosamente di
  pubblico dominio negli USA. I 583 font a larghezza fissa forniti con
  MMGGRR sono stati resi disponibili grazie a Uhler, la distribuzione X,
  YossiGil, e altri.  I font vettoriali Hershey e il codice per
  disegnarli sono probabilmente liberamente ridistribuibili.



