Paola Magillo, Univestita' di Genova, Corso di Interfacce Utente per Informatica, a.a. 2002-2003.

FINESTRE, WINDOW MANAGER, TOOLKIT E WIDGET

Window manager (WM)

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 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.

Decorazioni del WM

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.

Posizionamento di finestre

Al momento di aprire una finestra 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.

La nuova finestra viene messa in cima allo stack.

Toolkit per lo sviluppo di interfacce

Nelle interfacce di applicazioni si notano elementi ricorrenti che assolvono funzioni specifiche, caratterizzati da aspetto e comportamento particolari.
Esempio:

Toolkit sono pacchetti sw implementati sopra la API del sistema a finestre che forniscono un insieme di widget, 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, i widget sono realizzati 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.

Un esempio: il sistema X-Window

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.

Facciamo una prova

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.

  1. Dobbiamo avere avviato X.
  2. Apriamo una finestra di comandi
  3. Digitando il comando xhost + unaltra autorizziamo unaltra ad accedere come host (cioe' client) al sistema X che gira su questa
  4. Colleghiamoci in remoto con unaltra tramite il comando telnet unaltra (chiede login e password)
  5. Tutti i comandi che diamo ora sono eseguiti dalla CPU di unaltra.
  6. Dichiariamo che vogliamo usare lo schermo di questa con il comando setenv DISPLAY=questa:0.0
  7. Lanciamo qualsiasi programma con interfaccia (es. un text editor, la calcolatrice...) e vedremo su questa la sua interfaccia

Utile in casi in cui:

Strati di X-Window

X Protocol: Definisce quali pacchetti di informazione (messaggi) sono scambiati tra client e server tramite rete, cioe' la "sintassi" per trasmettere eventi, richieste, risposte alle richieste.

X Lib: Libreria (API) di funzioni di basso livello che permettono al client di comunicare col server per: ricevere eventi, inoltrare richieste, ricevere risposte.
E' la API del window management system di cui abbiamo parlato in precedenza.

X-lib non impone alcuna scelta riguardo al look-and-feel del sistema intero o dell'interfaccia delle applicazioni in ambiente X-Window. Questo e' compito di strati sw sopra a X-lib:

X-Window non ha un window manager prestabilito ne' dei toolkit prestabiliti. Si puo' scegliere.

In ambiente X, un toolkit e' composto da

Xtoolkit = Xt intrinsics (parte standard X) + widget set (parte non standard)

Esempi di widget sets: