MGR (ManaGeR) è un sistema grafico a finestre. Il server MGR fornisce nativamente un window manager e l'emulazione di terminali grafici a finestra su schermi a pixel, siano essi a colori o monocromatici. MGR è 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.
MGR 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. MGR 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é MGR imita la pressione di tasti in risposta a selezioni da menu definiti dall'utente o altri eventi.
Allo stato attuale, MGR gira su Linux, FreeBSD, sulle workstation Sun 3/4 con SunOS, e su Coherent. Varie versioni precedenti di MGR 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. MGR 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 MGR sta ad X come Unix sta a Multics.
MGR 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.