Xorg
Tutorial Lunux – Xorg e’ nato per motivi di licenza come fork di XFree86, un fork non e’ altro che una copia del programma originale (preso prima che cambiasse licenza) sviluppata da un altro team.
Attualmente lo sviluppo di Xorg e’ piuttosto attivo e il nuovo team ha gia’ introdotto particolari features che lo rendono piu’ appetibile del suo genitore XFree86. Dal momento che quasi tutte le distribuzioni stanno migrando verso Xorg, impareremo come installarlo e configurarlo, attivando alcune chicche come ombre e trasparenze sulle finestre.
Installazione
Se la vostra distribuzione ancora non rilascia i pacchetti precompilati per Xorg, oppure avete necessita’ di utilizzare particolari ottimizzazioni, o semplicemente vi piace installare il software from scratch, questa guida vi tornera’ utile.
Per prima cosa scarichiamo in una directory temporanea i sorgenti dal sito, l’indirizzo della release piu’ recente (al momento in cui scrivo: 6.8.1) e’ questo:
http://x.org/X11R6.8.1/src/
sono 7 pacchetti chiamati: X11R6.8.1-src{1-7}.tar.gz per un totale di quasi 70mb. Poi assicuriamoci di aver installato freetype, aggiornato almeno alla versione 2.1.4 e fontconfig, aggiornato almeno alla versione 2.0.
Portiamoci nella directory dove abbiamo scaricato i sorgenti e unzippiamoli:
$ cd /tmp
$ tar xzf X11R6.8.1-src1.tar.gz
$ tar xzf X11R6.8.1-src2.tar.gz
$ tar xzf X11R6.8.1-src3.tar.gz
$ tar xzf X11R6.8.1-src4.tar.gz
$ tar xzf X11R6.8.1-src5.tar.gz
$ tar xzf X11R6.8.1-src6.tar.gz
$ tar xzf X11R6.8.1-src7.tar.gz
Il processo di decompressione avra’ creato una directory di nome xc che contiene i sorgenti. La prima cosa da fare e’ un po’ di tuning prima di compilare tutto, infatti installando a mano xorg abbiamo la possibilita’ di configurare vari aspetti non accessibili in un’installazione da binario. Facciamo quindi:
$ cd xc
$ cp config/cf/xorgsite.def config/cf/host.def
$ vi xc/config/cf/host.def
Questo file contiene molti settings che possono tornare comodi, tuttavia e’ bene lasciarlo integro ed utilizzarne una sua copia che va chiamata host.def. Se infatti decidessimo di aggiornare il nostro source tree tramite delle patch, queste fallirebbero nell’aggiornamento di xorgsite.conf perche’ e’ stato modificato, invece host.def (per una convenzione degli sviluppatori) non verra’ mai toccato da tali patch.
Scorrendo il file possiamo levare il commento dalle opzioni che ci interessano (se non avete mai usato “vi”, potete cancellare un carattere premendo il tasto “x”), dal momento che Xwrapper e’ stato rimosso, dovremo decommentare e settare a YES questa opzione:
#define InstallXserverSetUID YES
Settiamo a NO l’opzione che consente di creare una versione “leggera” (senza parte dei sorgenti) di X:
#define BuildServersOnly NO
Tutte le altre opzioni sono strettamente host-dependant, quindi potete attivarle o meno a seconda della vostra configurazione, se ad esempio utilizzate un portatile con scheda video intel integrata, potete decommentare questa opzione ed accodarci la famiglia della vostra scheda, per esempio:
#define XF86ExtraCardDrivers i810
Se invece siete su architettura ppc potete specificare la scheda video che state usando:
#define XF86CardDrivers mga glint
Etc.. Una volta terminato l’editing di questo file, chiudiamolo e salviamo.
Se non avete mai usato “vi” sara’ necessario premere esc e scrivere “:wq”.
Ora possiamo iniziare la compilazione, bastera’ fare:
$ make World
Se non ci saranno errori potrete fare l’install, non prima di aver fatto il backup della vecchia installazione di X. Quindi chiudete la vostra sessione sul server X (se non lo avevate gia’ fatto) e fate:
# mv /usr/X11R6 /usr/X11-bak
Possiamo ora installare il nuovo xorg:
# make install
Abbiamo quindi terminato un’installazione “scheletro” di Xorg, ovviamente ci sono una moltitudine di sub-componenti che possono essere installati ma siccome sono a discrezione dell’utente, vi invito a far visita all’url:
http://x.org/X11R6.8.1/doc/
Dove troverete tutta la documentazione necessaria all’installazione di tutte le componenti alternative.
Creiamo ora un file di configurazione adatto al nostro sistema, non e’ affatto difficile e le alternative sono parecchie, se non ne avevamo gia’ uno possiamo crearlo con i tool che xorg ci mette a nostra disposizione, vale a dire:
– xorgcfg
– X -configure
– xorgconfig
Bastera’ eseguire uno di questi comandi da root per avviare il programma di configurazione, vi verra’ chiesto il tipo di scheda, la memoria disponibile, il layout della tastiera e quindi verra’ automaticamente creato un file chiamato xorg.conf in /etc/X11/xorg.conf.
Se avevate gia’ un’installazione funzionante di Xfree, allora potete semplicemente riciclare la vecchia configurazione, rinominandola come xorg.conf, in questa maniera:
# mv /etc/X11/XF86Config /etc/X11/xorg.conf
In realta’ non e’ necessario rinominarlo perche xorg guarda anche al nome che usava XFree, ma lo faremo ugualmente per una questione di stile.
Ora possiamo dare un piccolo ritocco al file di configurazione, apriamolo con “vi” o con l’editor che preferite, ed assicuratevi che nella sezione “Input” sia presente questa riga:
# vi /etc/X11/xorg.conf
Section “Input”
Driver “kbd”
EndSection
Aggiungetela se non era presente, se invece state riadattando la vecchia configurazione, sostituite “keyboard” con “kbd”. Questo passo e’ molto importante perche’ il driver vecchio e’ oramai obsoleto e non va piu’ usato.
Se la vostra scheda supporta l’accelerazione 3D, sara’ il caso di abilitarla, aggiungete queste righe nella sezione “Module”:
Section “Module”
Load “glx”
Load “dri”
EndSection
DRI e’ un framework che consente ad X di accedere direttamente alla memoria video, alcuni driver (come quelli rilasciati da ATI, Matrox e Intel) sono stati scritti per appoggiarsi al DRI, altri (tra cui nVidia) non necessitano di questa componente.
Quindi grazie alle opzioni specificate poco sopra, attiveremo il supporto 3D su una vasta gamma di schede, ma se possedete una scheda nVidia ed utilizzate i driver forniti dal produttore, allora dovrete aggiungere le righe:
Load “nvidia”
Section “Device”
Option “RenderAccel” “1”
EndSection
E cancellare, o commentare:
#Load “dri”
Alcune altre schede hanno invece bisogno di settings particolari (come le schede integrate sui portatili) ma non c’e’ spazio per trattare ogni singolo caso, per questo vi rimando alla documentazione su http://x.org.
Diamo quindi i permessi di scrittura sul dri in questa maniera:
Section “DRI”
Mode 0666
EndSection
Cosi anche gli utenti non-root avranno accesso diretto alla memoria video. Se sulla vostra box volete consentire solo ad un gruppo di utenti di aver accesso al DRI, potete creare un gruppo chiamato “gamers”, inserirci gli utenti che desiderate e quindi configurare cosi i permessi:
Section “DRI”
Group “gamers”
Mode 0660
EndSection
Il file di configurazione e’ pronto, ma manca ancora una cosa, ovvero….
Ombre e trasparenze
Se avete una buona scheda grafica potete attivare anche ombre e trasparenze, dalla release 6.8.0 di xorg, le ombre e le trasparenze vengono calcolate direttamente dall’hardware, e non sono piu’ simulate a livello software come lo erano prima. Cio’ vuol dire che possiamo sfruttare l’accelerazione hardware per inserire qualche simpatico eye-candy sul nostro desktop. Tenete comunque presente che sono ancora una beta-feature, quindi ci sara’ da aspettare ancora qualche release prima che diventino veloci e performanti.
Mettiamo di nuovo mano al nostro xorg.conf e attiviamo un paio di estensioni necessarie al nostro scopo:
# vi /etc/X11/xorg.conf
Aggiungiamo questa sezione:
Section “Extensions”
Option “Composite” “Enable”
Option “RENDER” “Enable”
EndSection
Che serve ad attivare alcune estensioni sperimentali per il rendering di vari effetti grafici. Avremo anche bisogno di due utility, una per dire al server di attivare le ombre, e un’altra per dire al server dove vogliamo le trasparenze. Ambedue di dimensioni ridotte, soltanto che non utilizzeremo le versioni ufficiali perche’ sono estremamente instabili e ancora incomplete, ma scaricheremo le versioni presenti sul cvs, nulla di difficile, collegatevi alla rete e da una shell digitate:
# cd /tmp
# cvs -d :pserver:[email protected]:/cvs/xapps login
# cvs -d :pserver:[email protected]:/cvs/xapps co xcompmgr
(premete invio quando vi chiede la pass)
# xcompmgr
# ./autogen.sh
# ./configure –prefix=/usr
# make
# make install
Xcompmgr serve per la gestione delle ombre, quindi scarichiamo anche il programma che ci permettera’ di settare le trasparenze sulle finestre:
# cd /tmp
# cvs -d :pserver:[email protected]:/cvs/xapps login
(premente invio quando vi chiede la pass)
# cvs -d:pserver:[email protected]:/cvs/xapps co transset
# cd transset
# make
# cp transset /usr/bin
Ambedue le utility si trovano ora in /usr/bin. Non ci resta che testarle per vedere come funzionano. Avviamo il nostro server digitando:
$ startx
O utilizzate xdm/kdm/gdm se preferite. Verifichiamo che il Direct Rendering sia attivo e funzionante, apriamo una console e scriviamo:
$ glxinfo | grep “direct rendering”
direct rendering: Yes
Se invece viene scritto “No”, allora leggete bene la documentazione dei driver della vostra scheda, e cercate anche nelle FAQ dell’homepage del produttore come attivare il DRI sotto X. Una volta risolto questo (eventuale) problema, eseguiamo un test preliminare per verificare che la nostra scheda sia abbastanza potente per gestire ombre e trasparenze, avviamo glxgears e facciamolo girare per 15 secondi senza toccare la finestra:
$ glxgears
5104 frames in 5.0 seconds = 1020.800 FPS
6030 frames in 5.0 seconds = 1206.000 FPS
6028 frames in 5.0 seconds = 1205.600 FPS
Se il numero di FPS e’ maggiore di 1000 allora non dovreste accusare alcun rallentamento, digitiamo ora:
$ xcompmgr -h
Il programma prende tre opzioni che non sono spiegate, nessun problema, siamo qui per questo:
-s: attiva le ombre lato server
-c: attiva le ombre lato client
-n: non attiva le ombre
Le ombre lato server sono piuttosto bruttine, in pratica sono dei rettangoli un po’ trasparenti intorno alle finestre, quelle lato client sono molto belle da vedere, ma l’opzione -n?
Quella serve per attivare solo le estensioni di X senza mettere le ombre, vale a dire che se vi piacciono le trasparenze ma non le ombre, dovrete avviare xcompmg con -n. Facciamo qualche prova per chiarirne meglio il funzionamento:
$ xcompmgr -c &
Attiviamo le componenti di X e mandiamo in background il programma, dopo un brevissimo sfarfallio dello schermo avremo le ombre abilitate su tutte le finestre, eccone un dettaglio dei bordi:
Si integrano molto bene e sono belle da vedere, passiamo ora alle trasparenze.
transset ci consente di attivare le trasparenze su una finestra per volta, essendo ancora in fase di sviluppo non abbiamo un gestore che ci consenta di settare le trasparenze solo su una determinata famiglia di finestre, per farlo dovremo quindi avviare transset e clickare sulla finestra da rendere trasparente:
$ xcompmgr -n & (solo se non e’ gia’ stato avviato)
$ transset 0.7
Con 0 indichiamo la totale trasparenza della finestra, con 1 abbiamo la completa opacita’, scegliete voi il rapporto che piu’ preferite.
Per questa prova ho usato -n in modo da non avere le ombre, quindi premente invio e clickate sulla finestra che volete rendere trasparente, il risultato e’ ancora una volta molto gradevole:
Sebbene le ombre siano molto carine e per nulla invasive, lo stesso non si puo’ dire delle trasparenze, infatti nonstante siano molto belle da vedere, rendono piuttosto scomoda quasi qualunque operazione, pensate a scrivere una lettera mentre sotto scorrono i messaggi di una chat…
Ora siete in grado di utilizzare le features introdotte nell’ultima release di xorg, scegliete quelle che fanno per voi e abilitatele… Se ogni tanto xcompmgr crasha, non abbiate paura, e’ ancora una beta e ci vorra’ un po’ di tempo prima che diventi completamente stabile.
Conclusioni
Abbiamo imparato come installare xorg senza l’ausilio dei pacchetti precompilati, tuttavia moltissime altre cose possono essere ancora fatte, come l’installazione dei font, il fine-tuning della configurazione ed altro. Consiglio a tutti di leggere un po’ di documentazione sul sito di xorg, perche’ sono state introdotte nuove estensioni che potrebbe essere interessante testare ed utilizzare. Vi lascio con un piccolo tip per coloro che usano kde, vista la natura intrinsecamente lenta di un sistema client-server, potra’ esservi d’aiuto avviare X con una priorita’ leggermente piu’ alta rispetto agli altri processi, per far questo aprite:
# vi /usr/kde/{kde_version}/share/config/kdm/Xstartup
Sostituite kde_version con la versione che state utilizzando (3.1, 3.2, 3.3 etc) ed aggiungete questa riga al file:
renice -10 -p `pidof X`
Se nel path da me indicato non trovate Xstartup, fate un find perche’ potrebbe trovarsi in una directory differente:
$ find / -iname “xstartup”
Dopo la modifica il vostro X server girera’ con una priorita’ leggermente maggiore, e come diretta conseguenza avrete un sistema grafico un po’ piu’ veloce. Buon divertimento.