IL SISTEMA X-WINDOW

E' un sistema a finestre (window management system) indipendente da hw e sistema operativo, con architettura client-server.

Permette di realizzare applicazioni portabili su macchine diverse sotto sistemi operativi diversi (tutti della famiglia UNIX).

Progettato per sistemi distribuiti, permette a piu' applicazioni di cooperare attraverso una rete (es. l'interfaccia grafica gira su una macchina diversa da quella dove gira il programma). Anche con architetture e/o sistema operativi diversi. Tutto avviene in maniera completamente trasparente all'applicazione.

Modello a strati

X non impone alcuno stile di interfaccia o di interazione con l'utente. Strati sw sopra a X si preoccupano di definire questo (vedere window manager e toolkits - tra poco).

X Protocol

Definisce quali pacchetti di informazione (messaggi) sono scambiati tra client e server tramite rete:

X Server

Alloca e gestisce risorse (finestre, font, bitmap, ...) per conto del client: solo l'identificatore della risorsa e' conosciuto da client e passato via rete (assieme ai messaggi che si riferiscono a quella risorsa).

Passa input dai device (tastiera, mouse) ai client.
Passa output (testo e grafica 2D) dai client al display.

X Lib

Strato piu' basso di X. Libreria (API) di funzioni che permettono al client di comunicare col server per: E' la API del window management system di cui abbiamo parlato in precedenza.

X Client

Un'applicazione che usa i servizi di un X-server usando Xlib direttamente o indirettamente tramite altre librerie sopra Xlib (i toolkit di cui abbiamo parlato in precedenza).

Window Manager

Un particolare X-client con compito speciale di gestire finestre sullo schermo: posizionare, ridimensionare, iconificare, gestire stack order, stabilire quale finestra ha il focus per mouse e tastiera...

X non fissa un particolare window manager, ne esistono vari, che utilizzano politiche diverse.

Window manager aggiunge decorazioni a finestre (bordo, barra del titolo, controlli per iconify, resize ecc.). Queste caratteristiche della finestra non sono gestite dal programma applicativo, il programma applicativo gestisce solo l'interno della finestra (comprese le sottofinestre).

Solo le top-level window di ogni applicazione sono gestite dal window manager. L'applicazione non ha il controllo della posizione e dimensione di queste, ne' del fatto che siano mappate o no. Puo' dare hints al window manager, ma non e' detto chi siano rispettati; e comunque l'utente puo' intervenire a cambiare la situazione.

Invece, l'applicazione ha il pieno controllo delle sottofinestre, e ha la responsabilita' di ridisegnarne il contenuto (refresh) quando