Window manager: un'applicazione
particolare che ha il compito di gestire
l'assetto delle finestre top-level nell'ambito del desktop o workspace.
Essendo applicazione, e' client. Ma gira sulla macchina server.
Compiti principali del WM:
WM dialoga con il server attraverso richieste ed eventi (come tutti i client).
Tutte le finestre top-level e solo quelle
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 (suggerimenti)
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.
Il server ridirige al WM le richieste provenienti da altre applicazioni (altri client) e riguardanti la struttura di una finestra top-level.
WM mappa (rende visibili) finestre top-level arricchendo la finestra con un frame (bordo, barra del titolo, detti anche decorazioni della finestra aggiunte dal WM).
Il frame contiene dispositivi con i quali utente puo' agire sulla
finestra stessa per iconificare, cambiare dimensione, chiudere ecc.
Queste azioni sulla finestra non sono gestite dal programma
applicativo, il programma applicativo gestisce solo le azioni
avvenute all'interno della finestra (comprese le sottofinestre).
WM crea una finestra piu' grande di quella richiesta dal client e ritaglia la finestra del client come sottofinestra.
Al momento di aprire una finestra top-level, cioe' mapparla per la prima volta, il WM e' incaricato dal sistema di posizionarla. Sullo schemo ci sono altre finestre. WM puo' adottare varie politiche per collocare la nuova finestra.
Nelle interfacce di applicazioni si notano elementi ricorrenti che assolvono funzioni specifiche, caratterizzati da aspetto e comportamento particolari, esempi:
Toolkit sono pacchetti sw implementati sopra la API del sistema
a finestre che forniscono un insieme di widget o componenti
o dispositivi di interfaccia,
cioe' tipi di elementi di interfaccia prefabbricati,
che il programmatore puo' configurare
(entro i limiti previsti) ed assemblare per costruire un'interfaccia.
Esempi di configurazione:
A seconda del tipo, un widget e' realizzato con una o piu' finestre, widget = window object.
Il toolkit implementa i widget usando la API del sistema a finestre, in modo trasparente all'applicazione.
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.
Supponiamo di avere due macchine in rete: questa.educ.disi.unige.it e unaltra.educ.disi.unige.it. Stando sullo stesso dominio, e' possibile usare solo i nomi questa e unaltra senza il resto dell'indirizzo di rete.
Noi sediamo davanti a questa (il nostro server). Vogliamo far girare un'applicazione su unaltra (il nostro client) e vedere la sua interfaccia su questa.
Utile in casi in cui: