# KWin

Nell'ambito dell'informatica, KWin è un compositing window manager scritto in C++ per il sistema grafico X Window System.
KWin è parte integrante di KDE, ma è in grado di funzionare anche indipendentemente dal resto del desktop o con altri ambienti desktop, sebbene dipenda dalle librerie base di KDE.
KWin è ampiamente configurabile tramite Kcontrol in KDE 3 e Impostazioni di sistema in KDE 4. È possibile configurarne molto approfonditamente il comportamento e cambiare la decorazione delle finestre.

## Storia di KWin

| Nome | Versione | Versione di KDE | Dettagli |
| KWM | 1.0 | 1.0 | |
| KWin | 2.0 | 2.0 | Supporto esteso per i temi e per gli effetti delle finestre |
| KWin | 3.0 | 3.2 | Migliorato il supporto per lo standard ICCCM da freedesktop.org |
| KWin | 4.0 | 4.0 | Aggiunto il supporto per effetti avanzati come quelli forniti da Compiz |

## Caratteristiche

A partire dalla versione 4.0 di KDE, KWin è stato profondamente riprogettato con l'obiettivo di ottenere un window manager in grado di funzionare in tre modalità:
* base, come qualsiasi altro window manager standard;
* con XRender, sfruttando questa estensione di X.Org è in grado di offrire un limitato supporti ad effetti grafici come trasparenze, ombre e transizioni;
* con OpenGL, grazie a queste può fornire effetti paragonabili a quelli tipici di Compiz.
È importante da sottolineare che già nella serie 3 KWin era in grado di offrire effetti grafici avanzati, ma solo tramite XRender, ed appoggiandosi a kompmgr, un derivato di xcompmgr. Questa implementazione separata presentava molte limitazioni che sono state definitivamente risolte aggiungendo, all'interno di KWin, le funzionalità di compositing.
Questa scelta comporta la possibilità di avere un window manager completo di tutte le funzionalità già presenti in KWin, ma anche di sfruttare le potenzialità delle moderne schede grafiche. Questo è un importante vantaggio rispetto a Compiz, perché questo non è ben integrato con KDE come KWin ed è utilizzabile solo con una scheda con supporto OpenGL.
Inoltre KWin è in grado di testare le capacità della scheda grafica ed attivare gli effetti avanzati qualora questa li supporti.

### Effetti OpenGL disponibili
#### Accessibilità

* Aiutante all'aggancio: aiuta a trovare il centro dello schermo quando si muove una finestra.
* Aumenta la nitidezza: rende il desktop più nitido.
* Ingrandimento: ingrandisce la parte dello schermo vicina al puntatore del mouse.
* Insegui il mouse: quando è attivato mostra un effetto per localizzare la posizione del mouse.
* Inverti: inverte i colori del desktop e delle finestre.
* Lente d'ingrandimento: un ingranditore dello schermo che sembra una lente d'ingrandimento.
* Zoom: ingrandisce l'intero desktop.

#### Aspetto

* Accesso: graduale dissolvenza sul desktop all'accesso.
* Animazione di minimizzazione: anima la minimizzazione delle finestre.
* Cadi a pezzi: le finestre cadono a pezzi quando sono chiuse.
* Dissolvi desktop: anima il cambiamento di desktop con una dissolvenza.
* Esplosione: fa esplodere le finestre alla chiusura.
* Evidenzia finestra: evidenzia la finestra appropriata quando si passa il mouse su una voce della barra delle applicazioni.
* Finestre tremolanti: deforma le finestre quando vengono spostate.
* Fogli: fa "volare" dentro e fuori gradualmente le finestre di dialogo quando sono mostrate o nascoste.
* Lampada magica: simula una lampada magica durante la minimizzazione delle finestre.
* Miniature di fianco: mostra le miniature delle finestre sul fianco dello schermo.
* Miniature per la barra delle applicazioni: mostra le miniature delle finestre se il cursore è sul relativo elemento della barra delle applicazioni.
* Ombra: disegna l'ombra sotto le finestre.
* Scala: anima l'apparizione delle finestre.
* Scivola: fa scivolare le finestre sul desktop quando si naviga tra i desktop virtuali.
* Segni del mouse: permette di disegnare delle righe sul desktop.
* Semitrasparenza: rendi le finestre traslucide in particolari condizioni.
* Svanisci: fa svanire e comparire gradualmente le finestre quando sono mostrate o nascoste.
* Termina sessione: desatura il desktop quando viene mostrata la finestra di dialogo per terminare la sessione.

#### Focus

* Genitore delle finestre di dialogo: scurisce la finestra genitore della finestra di dialogo attiva.
* Oscura inattive: scurisce le finestre inattive.
* Oscura lo schermo per la modalità amministratore: scurisce tutto lo schermo quando vengono richiesti i privilegi di amministratore.
* Scivola indietro: fa scivolare indietro le finestre che perdono il focus.

#### Gestione delle finestre

* Animazione del cubo desktop: anima il cambio di desktop con un cubo.
* Cambia ribaltando: cambia le finestre ribaltandole come in una pila al posto dello scambiafinestre Alt-Tab.
* Casella interruttore: mostra miniature delle finestre nello scambiafinestre Alt-Tab.
* Cubo desktop: mostra ogni desktop virtuale sul lato di un cubo.
* Griglia dei Desktop: zoom indietro in modo che tutti i desktop virtuali siano mostrati affiancati in una griglia.
* Presenta le finestre: zoom indietro finché tutte le finestre aperte possono essere mostrate affiancate.
* Sfoglia copertine: mostra un effetto Cover Flow al posto dello scambiafinestre Alt-Tab.

#### Strumenti

* Mostra FPS: mostra le prestazioni di KWin nell'angolo dello schermo.
* Mostra ridisegno: evidenzia le parti del desktop che sono state recentemente aggiornate.

#### Altro

* Neve: simula la caduta della neve sul desktop.

## Aspetto

Esiste una vasta scelta di temi per KWin. I più famosi sono Plastik (che è il tema predefinito nelle ultime versioni di KDE 3.5), Keramik, Redmond, Baghira, Crystal (il tema predefinito nella distribuzione Kubuntu che utilizzava KDE 3). Possono essere usati anche i temi dedicati a IceWM.
Attualmente il tema predefinito è Oxygen.
Altri temi possono essere scaricati dal sito: https://www.kde-look.org/.