8. Per fortuna esistono gli ambienti desktop

Ecco dove si inserisce il concetto di ambiente desktop. L'idea è che un ambiente desktop fornisce un insieme di strumenti e linee guida per standardizzare tutto ciò che abbiamo menzionato in modo da minimizzare i problemi citati.

Il concetto di ambiente desktop è nuovo per chi si avvicina a Linux per la prima volta, poiché altri sistemi operativi (come Windows e Mac OS) lo danno per scontato. Per esempio MacOS, che è una delle interfacce grafiche più antiche, fornisce un look & feel molto consistente attraverso tutta la sessione di utilizzo del sistema. Il sistema operativo fornisce molte delle caratteristiche utili menzionate: un file manager predefinito (il finder), un pannello di controllo che gestisce l'intero sistema, un singolo toolkit che deve essere usato da tutte le applicazioni (in modo che tutte vengano visualizzate allo stesso modo). Le finestre delle applicazioni sono gestite dal sistema (per essere precisi dal window manager). E infine ci sono delle linee guida che dicono agli sviluppatori come si dovrebbero comportare le proprie applicazioni, raccomandano disposizione e visualizzazione dei componenti, e suggeriscono comportamenti consistenti con le altre applicazioni del sistema. Tutto ciò per ottenere una maggiore uniformità e facilità d'uso.

A questo punto sorge una domanda: perché gli sviluppatori di X lo hanno progettato in maniera così particolare? Ha senso chiederselo, perchè si sarebbero evitati tutti i problemi menzionati in precedenza. La risposta è che nel progettare X i suoi creatori hanno scelto di renderlo il più possibile flessibile. Tornando al paradigma politica/meccanismo, MacOS fornisce principalmente politiche. I meccanismi ci sono, solo che gli sviluppatori non vengono incoraggiati ad occuparsene. Il risultato è che si perde in versatilità: se non mi piace il modo in cui MacOS gestisce le finestre o il toolkit non ha le funzioni di cui ho bisogno, non posso farci niente. Ciò non accade sotto X, benché come visto il prezzo della flessibilità sia una maggiore complessità.

Sotto Linux/Unix e X si riduce tutto a mettersi d'accordo su qualcosa e continuare ad usarlo. Prendiamo ad esempio KDE. KDE include un solo window manager (kwm), che gestisce e controlla il comportamento delle nostre finestre. Raccomanda l'utilizzo di un certo toolkit grafico (Qt), in modo che ogni applicazione KDE venga visualizzata allo stesso modo fintanto che essa resta sullo schermo. KDE estende ulteriormente Qt fornendo un insieme di librerie specifiche per l'ambiente (kdelibs) che servono per eseguire operazioni frequenti come creare menu, finestre "about", barre degli strumenti, comunicare tra programmi diversi, stampare, selezionare file ecc. Queste rendono il lavoro del programmatore più facile e standardizzano il modo in cui si comportano queste funzioni speciali. KDE fornisce inoltre un insieme di linee guida per la progettazione ai programmatori, con l'intenzione di rendere uniforme il comportamento e gli aspetti visivi delle applicazioni di coloro che le seguono. Infine, KDE fornisce, come parte dell'ambiente, un pannello di lancio (kpanel), un file manager standard (che è al momento Konqueror) e un'utility di configurazione (pannello di controllo) da cui si possono controllare molti aspetti del proprio sistema, da impostazioni come lo sfondo del desktop e il colore della barra del titolo delle finestre alla configurazione dell'hardware.

Il pannello KDE è l'equivalente della barra delle applicazioni di MS Windows. Fornisce un punto d'accesso centrale da cui lanciare applicazioni, e permette anche a piccole applicazioni, chiamate "applet", di venire visualizzate al suo interno. Ciò include funzionalità come il piccolo orologio senza il quale la maggior parte degli utenti non può vivere.