4 maggio 2006

Compiz e XGL dal vivo

Qualche tempo fa avevo scritto i miei commenti su XGL e compiz.

Recentemente ho aggiornato la mia installazione di Ubuntu per usare Dapper Drake (visto che è in fase di beta, è il momento giusto per provare e verificare lo stato delle traduzioni).Il che apriva la possibilità di usare XGL e compiz. Non ho resistito ed ho seguito (in parte) le indicazioni elencate qui.

Mi pare giusto quindi completare le mie impressioni sul desktop 3D.

Innanzitutto una premessa: sì, è veramente così figo come appare nei vari video pubblicati in rete.

Ho provato a tornare al semplice metacity dopo una settimana di compiz: usare un window manager "non fisico" è quasi traumatico. Compiz non fornisce solo degli abbellimenti sprecando cicli di CPU, ma fa in modo che ciò che appare sullo schermo reagisca a leggi del mondo reale (più o meno). Per questo nello spostare le finestre si ha una frizione con lo sfondo (variabile, provate a renderla molto molto bassa: la finestra non si ferma quando terminate il trascinamento) che magari non esiste nel mondo reale quando spostate un foglio sulla scrivania (oddio, su certi banchi di formica non è detto), ma che sullo schermo ha una sua funzione. Allo stesso modo i menu non copaiono all'improvviso belli e completi, ma dopo un effetto di fading, magari anche "ballonzonando" un po'.
Analoghi effetti "fisici" si hanno all'apertuna, chiusura e minimizzazione delle finestre: la finestra non sparisce all'improvviso, ma segue un percorso, modifica il suo stato (si rimpicciolisce diventando trasparente). L'effetto più bello è però quello della massimizzazione: i quattro angoli della finestra vengono spinti di forza ai quattro rispettivi angoli dello schermo, ed il resto della finestra ballonzola come se fosse un elastico tirato d'improvvivo per assestarsi al cambiamento. Analogo effetto demassimizzando.

A livello utente il giudizio su Compiz è assai positivo. Magari ci sono poi cose inutili (alcuni hanno preparato una patch per rendere colorata l'obra proiettata dalle finestre) o alcune preferenze impostate in modo un po' troppo figoso (per esempio l'eccessivo ballonzolamento dei menù all'apertura, ma non sto usando la versione vanilla), ma il nocciolo del programma è ottimo, dal punto di vista delle funzionalità offerte, dell'architettura a plugin, dell'uso di GConf e mi azzarderei anche a dire delle prestazioni (il mio Athlon 1200 + 256 RAM +GeForce2MX non soffre più di tanto). È bello vedere che su Linux una cosa del genere è disponibile subito, senza dover aggiornare tutto il sistema con ritardi su ritardi. Se la scelta di chiusura di Novell poteva essere criticabile "a priori", a conti fatti ha protoddo qualcosa che funziona, che attrae interesse e che, cmq, è aperto e libero. Grazie a ciò direi che ci si possono aspettare buoni margini di miglioramento da Compiz.

Ciò che è un po' problematico è purtroppo il server grafico, XGL. Non che non funzioni, altrimenti non avrei parlato bene di Compiz, solo che crea alcuni problemi ad altri componenti del sistema. Innanzitutto ci sono dei problemi con la disposizione italiana della tastiera. Il server infatti sembra non usare quella definita del file /etc/X11/xorg.conf e va a ripiegare su quella americana, rendendo necessario l'uso dello strumento di preferenze di GNOME per selezionare la disposizione corretta. Ovviamente il problema potrebbe non essere imputabile a XGL in sé, ma a come è stato pacchettizzato. Certo è una cosa noiosa. Credo anche sia cosa nota, visto che nei vari forum consigliano di eseguire xmodmap dopo l'avvio di compiz.

Il secondo problema lo ho con GStreamer. Lasciando l'uscita video predefinita (xvimagesink), la riproduzione video è notevolmente rallentata (a occhio direi che viene mostrato 1 fotogramma al secondo - da considerare che la versione di GStreamer presente in Ubuntu dovrebbe avere inclusa la patch per il QoS [Quality of Service], ossia video e audio sono tenuti in sincro, anche a costo di tagliare fotogrammi). L'aver inserito il comando per l'accelerazione nelle opzioni di avvio di XGL non aiuta. L'unica soluzione, al momento è di aprire lo strumento di configurazione (Alt+F2 poi eseguire gstreamer-properties), andare alla scheda Video e selezionare XWindow (no xv) nella casella di selezione Uscita. Da notare che il problema non è solo di lentezza. Facendo clic sul pulsante Prova delle sezione relativa al pugin di uscita, i due sink ximagesink e xvimagesink producono test diversi (solo quello di ximagesink è corretto). Anche in questo caso non so se l'imputazione è da riferire a XGL in sé, a chi ha fatto il pacchetto, a GStreamer o al mio computer magari troppo lento (anche se...)

L'ultimo problema è con il povero vecchio emacs. Ecco come appare sotto XGL:

Tutti i caratteri sono stati rimpiccioliti, usando 5x5 pixel per le minuscole :-( Va bene che Compiz ha una utilissima funzione di zoom, ma sempre 5x5 rimangono...

Oh, non ho detto il perché della scelta di usare fonti alternative a quelle di Ubuntu: semplice, perché in Ubuntu compiz è fermo alla versione 0.0.2, mentre quella su xgl.compiz.info è la 0.0.10 :-) aggiornata non appena disponibile una nuova versione o qualche patch interessante. Sperimentale per sperimentale...

Una nota finale. Tutti i vari tutorial su come usare compiz nella propria sessione a mio avviso usano una procedura non ottimale. Quello che fanno è infatti creare una nuova sessione di GDM in cui viene avviato compiz e poi gnome-session. A mio avviso, per lo meno se si usa GNOME 2.14, il modo di procedere "corretto" è un altro.

Una volta compiuti i passi necessare per installare il sotware e far partire XGL al posto di Xorg, si dovrebbe:
  • scrivere un file /usr/local/bin/compiz.sh sul tipo di quello presente qui, ma senza la riga finale per avviare gnome-session
  • scrivere un file compiz.desktop come quello indicato nella pagina referenziata qui sopra, ma porlo nella directory /etc/xdg/autostart/ (è una funzionalità di gnome-session versione 2.14, permette di avviare programmi aggiungendo i relativi file .desktop in una particolare directory. In questo modo è anche possibile disabilitare l'avvio di compiz in una sessione usando lo strumento di preferenze Sessioni)
In questo modo compiz viene avviato alla fine, a rimpiazzare metacity che viene avviato e poi arrestato. Però mi pare un modo più flessibile per gestire l'avvio di un programma che, al momento è solo un'aggiunta.

Ovviamente lo stesso risultato del secondo punto si può ottenere usando lo strumento di preferenze Sessioni per aggiungere i due programmi avviati da compiz.sh all'elenco di programmi da avviare. Va da sè che facendo così ne beneficerà solo l'utente che ha applicato il cambiamento.

Ultima nota, una cosa che non capisco: è normale che in un sistema "accelerato", ossia con una GPU che potrebbe farsi carico di gran parte del lavoro grafico e con XGL che dovrebbe sfruttare le potenzialità della GPU, il processo relativo a XGL usa dal 15 al 20 % di CPU?????

Nessun commento: