Il manuale del programmatore di MGR, 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 MGR 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
MGR in modo interattivo leggendo e sperimentando con il driver di
terminale per GNU Emacs mgr.el
che implementa la libreria di
interfaccia a MGR 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 MGR 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 MGR 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
.