Il window manager (o in italiano, gestore delle finestre) è un componente dell'interfaccia grafica del sistema operativo computer che gestisce l'aspetto e la posizione di una finestra in un ambiente desktop.

Storia

Negli anni 1970, Xerox Alto divenne il primo computer fornito con una GUI WIMP funzionante. Utilizzava un gestore di finestre impilabile che consentiva la sovrapposizione di finestre. Sebbene non sia chiaro se Microsoft Windows contenga progetti copiati dal sistema operativo Mac di Apple, è chiaro che nessuno dei due è stato il primo a produrre una GUI utilizzando finestre impilate. All'inizio degli anni '80, Xerox Star, successore di Alto, utilizzava la "piastrellatura" (tiling) per la maggior parte delle finestre delle applicazioni principali e la sovrapposizione solo per le finestre di dialogo, eliminando la maggior parte della necessità di impilare. Mac OS è stato uno dei primi esempi di successo commerciale di una GUI che utilizzava una sorta di gestione delle finestre di impilamento tramite QuickDraw. Attualmente macOS utilizza un Window manager più avanzato che supporta il compositing da Mac OS X 10.0 ed è stato aggiornato in Mac OS X 10.2 per supportare il compositing con accelerazione hardware tramite Quartz Compositor

GEM 1.1 era un gestore di finestre che supportava la metafora del desktop e utilizzava lo stacking, consentendo la sovrapposizione di tutte le finestre. È stato rilasciato all'inizio degli anni '80. GEM è famoso per essere stato incluso come GUI principale utilizzata su Atari ST, che eseguiva Atari TOS, ed era anche una popolare GUI per MS-DOS prima dell'uso diffuso di Microsoft Windows. A seguito di una causa legale di Apple, GEM è stata costretta a rimuovere le funzionalità di impilamento, rendendolo un gestore di finestre di affiancamento.

Durante la metà degli anni '80, il sistema operativo Amiga conteneva un primo esempio di un gestore di finestre di compositing chiamato Intuition (una delle librerie di basso livello di AmigaOS, che era presente nelle ROM di sistema Amiga), in grado di riconoscere quali finestre o parti di esse erano coperte e quali finestre erano in primo piano e completamente visibili, in modo che potesse disegnare solo le parti dello schermo che richiedevano l'aggiornamento. Inoltre, Intuition supportava la composizione. Le applicazioni potrebbero prima richiedere una regione di memoria al di fuori della regione di visualizzazione corrente da utilizzare come bitmap. Il sistema a finestre Amiga userebbe quindi una serie di bit blit usando l'hardware blitter del sistema per creare un composto di bitmap di queste applicazioni, insieme a pulsanti e cursori, nella memoria del display, senza richiedere a queste applicazioni di ridisegnare nessuna delle loro bitmap.

L'intuizione anticipava anche le scelte dell'utente riconoscendo la posizione del puntatore fluttuante su altri elementi dello schermo (barre del titolo delle finestre, i loro gadget di chiusura e ridimensionamento, intere icone), e quindi era in grado di garantire quasi un'attesa zero dichiarare l'esperienza nell'utilizzo del window manager Workbench. Quest'ultimo è stato l'unico window manager che alla fine ha ispirato un'intera famiglia di discendenti e successori: Ambient in MorphOS, Zune/Wanderer in AROS, Workbench NG (New Generation in AmigaOS 4.0 e 4.1). Workbench 4.1 è stato migliorato dall'interfaccia vettoriale 2D alimentata dalle librerie Cairo e presenta un moderno motore di composizione basato su Porter-Duff 3D.

Nel 1988 Presentation Manager divenne la shell predefinita in OS/2, che, nella sua prima versione, utilizzava solo un'interfaccia a riga di comando (CLI). IBM e Microsoft hanno progettato OS/2 come successore di DOS e Windows per DOS. Dopo il successo di Windows 3.10, però, Microsoft ha abbandonato il progetto a favore di Windows. Successivamente, il progetto Microsoft per una futura versione 3 di OS/2 è diventato Windows NT e IBM ha apportato una riprogettazione completa della shell di OS/2, sostituendo il Presentation Manager di OS/2 1.x per Workplace Shell orientato agli oggetti che ha fatto il suo debutto in OS/2 2.0.

Tipologie X window system

Sui sistemi che utilizzano X Window System, c'è una chiara distinzione tra il gestore di finestre e il sistema a finestre. A rigor di termini, un X window manager non interagisce direttamente con hardware video, mouse o tastiere: questa è responsabilità del server di visualizzazione.

Gli utenti del sistema X Window hanno la possibilità di utilizzare facilmente molti diversi gestori di finestre: Metacity, utilizzato in GNOME 2, e KWin, utilizzato in KDE Plasma Workspaces e molti altri. Poiché molti gestori di finestre sono modulari, le persone possono usarne altri, come Compiz (un gestore di finestre di composizione 3D), che sostituisce il gestore di finestre. Sawfish e awesome d'altra parte sono gestori di finestre estensibili che offrono un controllo preciso delle finestre. È anche possibile combinare e abbinare componenti di diversi gestori di finestre; ad esempio, le decorazioni per finestre di KWinpuò essere utilizzato con i componenti desktop e dock di GNOME.

Gli X window managers hanno anche la capacità di ri-genitore delle applicazioni, il che significa che, mentre inizialmente tutte le applicazioni sono adottate dalla finestra di root (essenzialmente l'intero schermo), un'applicazione avviata all'interno della finestra di root può essere adottata da un'altra finestra. I gestori di finestre sotto il sistema X Window adottano le applicazioni dalla finestra principale e le modificano nelle decorazioni delle finestre (ad esempio, aggiungendo una barra del titolo). La ri-genitorialità può essere utilizzata anche per aggiungere i contenuti di una finestra a un'altra. Gli X window managers per la ri-genitorialità possono quindi disporre uno o più programmi nella stessa finestra e possono facilmente combinare affiancamento e impilamento in vari modi.

Microsoft Windows

Microsoft Windows ha fornito un window manager di stacking integrato a partire da Windows 2.0; Windows Vista ha introdotto il Compositing Desktop Window Manager (dwm.exe) come alternativa facoltativa con accelerazione hardware. In Windows, poiché GDI fa parte del kernel, il ruolo del gestore di finestre è strettamente associato ai sottosistemi grafici del kernel ed è in gran parte non sostituibile, sebbene le utilità di terze parti possano essere utilizzate per simulare un gestore di finestre di affiancamento su in cima a tali sistemi. A partire da Windows 8, il Desktop Window Manager basato su Direct3D non può più essere disabilitato. Può essere riavviato solo con la combinazione di tasti di scelta rapida Ctrl + Maiusc + Win + B.

Windows Explorer (explorer.exe) viene utilizzato per impostazione predefinita come shell nei moderni sistemi Windows per fornire una barra delle applicazioni e un file manager, insieme a molte funzioni di un window manager; gli aspetti di Windows possono essere modificati tramite le utilità di configurazione fornite, modificando il registro di Windows o con strumenti di terze parti, come WindowBlinds o Resource Hacker. Il window manager di Windows può anche agire come un window manager X tramite Cygwin / X in modalità multiwindow (e, possibilmente, altre implementazioni di X window).

Notare che Microsoft e X Window System utilizzano termini diversi per descrivere concetti simili. Ad esempio, raramente viene menzionato il termine window manager da parte di Microsoft perché è integrato e non sostituibile e distinto dalla shell. La shell di Windows è analoga al concetto di ambiente desktop in altri sistemi di interfaccia utente grafica.

Classificazione I gestori di finestre sono spesso divisi in tre o più classi, che descrivono il modo in cui le finestre vengono disegnate e aggiornate.

Compositing window manager

I compositing window manager consentono di creare e disegnare separatamente tutte le finestre, quindi assemblarle e visualizzarle in vari ambienti 2D e 3D. I compositing window manager più avanzati consentono una grande varietà di aspetto dell'interfaccia e la presenza di effetti visivi 2D e 3D avanzati.

Stacking window manager

Tutti i gestori di finestre che hanno finestre sovrapposte e non sono compositing window managers, sono stacking window managers, sebbene sia possibile che non tutti utilizzino gli stessi metodi. I gestori di finestre sovrapposte consentono alle finestre di sovrapporsi disegnando prima le finestre di sfondo, che vengono chiamate algoritmo del pittore. Le modifiche a volte richiedono che tutte le finestre siano impilate o ridipinte, il che di solito comporta il ridisegno di ogni finestra. Tuttavia, per portare una finestra di sfondo in primo piano di solito è necessario ridisegnare solo una finestra, poiché le finestre di sfondo possono avere parti di altre finestre dipinte su di esse, cancellando efficacemente le aree coperte.

Tiling window manager

I gestori di finestre affiancate (tiling) dipingono tutte le finestre sullo schermo posizionandole una accanto all'altra o una sopra e sotto l'altra, in modo che nessuna finestra ne copra mai un'altra. Microsoft Windows 1.0 ha utilizzato l'affiancamento e sono disponibili una varietà di gestori di finestre di affiancamento per X.

Window manager dinamico

I gestori di finestre dinamici possono passare dinamicamente dal layout della finestra affiancato a quello mobile. Una varietà di window manager dinamici per X sono disponibili.

Caratteristiche e struttura Componenti principali Autohide Un autohide consente ai menubars di scomparire quando il puntatore viene allontanato dal bordo dello schermo.

Borders Un bordo è un componente di decorazione della finestra fornito da alcuni gestori di finestre, che appare intorno alla finestra attiva. Alcuni gestori di finestre possono anche visualizzare un bordo attorno alle finestre di sfondo.

Menù contestuale Alcuni gestori di finestre forniscono un menu contestuale che appare quando un evento clic alternativo viene applicato a un componente desktop.

Sfondo del desktop Alcuni gestori di finestre forniscono una funzione di sfondo del desktop che visualizza un'immagine di sfondo nella finestra principale.

Focus Stealing Il Focus Stealing è una funzionalità fornita da alcuni window manager. Consente a un'applicazione non attiva di ottenere improvvisamente lo stato attivo e rubare l'input dell'utente destinato all'applicazione precedentemente focalizzata.

Iconificazione Una funzione di iconificazione consente agli utenti di ridurre a icona le applicazioni in esecuzione su un'icona sul desktop o su un'icona del pannello delle attività.

Joined Windows Alcuni gestori di finestre forniscono una funzione di finestre unite che consente all'utente di unire insieme i telai delle finestre dell'applicazione.

Comandi equivalenti della tastiera Alcuni gestori di finestre forniscono comandi equivalenti di tastiera che consentono alla tastiera di replicare la funzionalità del mouse.

Barra dei menu Una barra dei menu fornisce la possibilità di avviare programmi tramite un menu e può contenere funzionalità aggiuntive tra cui un pulsante di avvio, una barra delle applicazioni e una barra delle applicazioni.

Pannello dei menu Un pannello di menu un componente di alcuni gestori di finestre (Window manager) che fornisce la funzionalità per avviare i programmi utilizzando un menu. Un pannello del menu è simile a una barra dei menu, ma appare come un pannello mobile, anziché come una barra orizzontale o verticale. Il pannello del menu può contenere funzionalità aggiuntive tra cui un pulsante di avvio, un pannello delle attività e una barra delle applicazioni.

Mouse focus