PDA

View Full Version : WM, XFree, foobar, etc.


DM Ilweran
13-08-2003, 15:21
Non esiste alcun Gnome WM, il Window manager che Gnome usa di default è Metacity di Havoc Pennington:


[nicholas@lorien nicholas]$ ps ax|grep metacity
562 ?? Ss 0:06,07 metacity --sm-save-file 1060744472-6487-1632656076.ms


Per chi viene da Windows X-Window non è immediatamente chiaro, il che è perfettamente comprensibile (finquando non si danno fantasiosi 'consigli da amici').
X-Window, a differenza di Windows, è una applicazione impostata sulla filosofia client-server, anche se in modo decisamente atipico.
Normalmente il client e il server sono sulla stessa macchina, ma l'impostazione di X permette di distribuirli su più macchine anche in rete, che è la vera forza di X e il motivo per cui in molti casi è assolutamente conveniente usarlo.
Per chiarezza, l'XServer viene usato per gestire lo schermo e l'input e la grafica, mentre le applicazioni sono sostanzialmente i client.
Quello che fa un client è di chiedere al server di disegnare ad esempio, una linea da X a Y, quello che fa il server è avvertire il client che l'utente ha eseguito quella o quell'altra azione.
X non forza le applicazioni in alcun modo, non ha nemmeno il concetto di widget o di controllo, semplicemente disegna 'cose' su una superficie ricevendo e spedendo messaggi attraverso un suo protocollo.
L'applicazione che definisce una policy è il Window Manager, che appunto imposta il look delle finestre, le gestisce sullo schermo, decide i 'keystrokes', come gestire il focus del mouse e tante altre cose.
Per fare una prova si può usare Gnome e uccidere metacity con un kill 9: dovrebbe ripartire immediatamente in teoria, o in alternativa dovrebbe rimanere il desktop così com'è, ma senza la possibilità di spostare le finestre o di chiuderle, ma il Desktop resta li, i pannelli continuano a funzionare, le applicazioni non si chiudono.
Per usare un'altro Window Manager in teoria è sufficiente uccidere Metacity e avviare in background (ad esempio) FluxBox, anche se Metacity è stato studiato per Gnome, e magari il look & feel perde.
Un Desktop Environmente è una cosa totalmente differente, è un ambiente dentro cui scrivere applicazioni e dentro cui far girare applicazioni, usando appunto le facilitazioni dello stesso, e astrendo le API scrause di X.
Sostanzialmente Gnome fornisce un'astrazione sull'XServer che permettono alle applicazioni per Gnome di funzionare su diversi flavour di X (dato che XFree è solo una implementazione di X, non è l'X originale, è derivato da X386, da qui il gioco di parole, X - Free/Three - 86), ad esempio su Solaris o su AIX Gnome va alla perfezione.
Il layer sulle API di X si chiama GDK, un'altro layer è su buona parte delle funzioni POSIX, e si chiama GLIB, su queste due librerie viene scritto praticamente tutto Gnome, implementando di volta in volta altri layer, come GTK+ che contiene un set di Widget, ATK che imposta delle funzioni per l'accessibilità della piattaforma ad esempio da un cieco, PANGO che si occupa della visualizzazione e dell'internazionalizzazione dei caratteri.
Naturalmente non è tutto qui, GNOME è basato su CORBA, che è un argomento un tantino ampio da trattare qui, ma che comunque è una tecnologia che ha gli stessi scopi degli oggetti COM di Windows, un'altra parte importante è GConf, che gestisce la configurazione del DE su diversi livelli, e tanto altro.
Per questo in realtà usare un WM nell'illusione di avere un sistema minimale è errato, qualsiasi applicazione più complessa di biff usa un DE, per il semplice motivo che è il modo migliore di lavorare, si possono dare diverse cose per scontate, ad esempio i tipi vengono sempre astratti da GLIB. Addirittura Vim, per essere usato all'interno di X, ha come dipendenze le Gtk+ (quindi GDK e GLIB).