Chapter 11. Il sistema X Window

Table of Contents

11.1. Come ottimizzare l'installazione del sistema X Window
11.2. Installare e configurare dei font
11.3. Configurare OpenGL/3D

Abstract

Sotto Unix il sistema X window (X11) rappresenta quasi lo standard in tema di GUI (interfaccia grafica dell'utente): inoltre X11 è basato sulla rete in modo che l'output di applicazioni che girano su di un computer possono essere visualizzate su di un altro, sempre che i computer siano connessi via rete. La rete può essere una rete LAN, oppure WAN, cioé i computer possono anche comunicare via Internet.

In questo capitolo, vi illustreremo come ottimizzare il vostro ambiente del sistema X window, faremo luce su alcune nozioni fondamentali riguardanti l'utilizzo di font sotto e tratteremo la configurazione di OpenGL/3D. La descrizione del modulo per la configurazione dello schermo, scheda grafica, mouse e tastiera è reperibile nel sezione dedicata all'installazione del manuale (sezione Section 2.4.4, “Scheda grafica e Monitor (SaX2)”).

11.1. Come ottimizzare l'installazione del sistema X Window

"X.Org" rappresenta un'implementazione a sorgente aperto dell' X Window system. "X.Org Foundatation", che nel contempo è responsabile per lo sviluppo di nuove tecnologie e standard dell' X Window Systems, porta avanti lo sviluppo di questa implementazione.

Per poter utilizzare in modo ottimale l'hardware a disposizione (mouse, scheda grafica, schermo, tastiera) vi è la possibilità di ottimizzare la configurazione manualmente. Illustreremo alcuni aspetti del modo di applicare le ottimizzazioni. Per delle informazioni dettagliate riguardanti la configurazione dell'X Window System consultate i file nella directory /usr/share/doc/packages/Xorg nonché chiaramente la pagina di manuale con: man XF86Config.

[Warning]Warning

Durante il processo di configurazione dell'X Window Systems si dovrebbe procedere con cautela! Non lanciare X11 prima che sia stata terminata la configurazione. Un sistema impostato in modo erratto può causare dei danni irriparabili al vostro hardware; molta attenzione va fatta con schermi a frequenza fissa. Gli autori del presente manuale e la AG declinano ogni responsabilità per danni che eventualmente potrebbero verificarsi. Il presente testo è stato redatto con la maggior accuratezza possibile, comunque non si può garantire che i metodi qui presentati siano esenti da errori e che escludono ogni danno al vostro hardware.

I programmi e xf86config creano il XF86Config di default in /etc/X11. Questo è il file di configurazione primario dell' X Window System. Qui trovate le indicazioni sul mouse, schermo e scheda grafica.

In questa sezione descriveremo la struttura del file di configurazione /etc/X11/XF86Config. Questo file è suddiviso in sezioni (ingl. sections) introdotte dalla parola chiave Section "identificatore", e che terminano con EndSection. Ci limiteremo a presentare le sezioni principali.

XF86Config, come già accennato, è composto da più sezioni Sections, ognuna delle quali si occupa di un aspetto della configurazione. Una sezione è sempre strutturata nel modo seguente:

Section denominazione della sezione
registrazione 1
registrazione 2
registrazione n
EndSection

Esistono i seguenti tipi di sezioni:

Table 11.1. Sezioni in /etc/X11/XF86Config

Tipo

Significato

Files

Questa sezione descrive i percorsi usati per i font e le tabelle cromatiche RGB.

ServerFlags

Qui vengono indicati i server flag.

InputDevice

Tramite questa sezione vengono configurati i dispositivi d'immissione, ovvero tastiere, mouse e speciali dispositivi di immissione come touch tables, joystick etc. Gli indicatori importanti sono qui Driver e le opzioni che stabiliscono Protocol e Device.

Monitor

Descrive il monitor utilizzato. Gli elementi di questa sezione sono: il nome, a cui si rimanda per la definizione degli Screens, la descrizione della larghezza di banda (Bandwidth) e delle frequenze di sincronizzazione consentite (HorizSync e VertRefresh). Le indicazioni sono espresse in MHz, kHz o Hz. Fondamentalmente il server rifiuta ogni modeline che non corrisponda alle specifiche del monitor: in questo modo si evita che, facendo esperimenti con i modeline, possano venire inviate al monitor frequenze troppo alte.

Modes

Qui vengono definiti i parametri di rappresentazione delle singole risoluzioni dello schermo. Questi parametri possono venire calcolati da in base ai valori indicati dall'utente e generalmente non devono venire modificati. Potete però intervenire manualmente se per esempio intendete collegare uno schermo a frequenza fissa. Spiegare dettagliatamente i singoli parametri non rientra nello scopo del presente manuale; una illustrazione dettagliata dei singoli valori numerici la trovate nel file HOWTO /usr/share/doc/howto/en/XFree86-Video-Timings-HOWTO.gz .

Device

Questa sezione definisce una determinata scheda grafica. Ci si riferisce ad essa con il nome indicato.

Screen

Questa sezione infine riunisce un Monitor e un Device da cui derivare le indicazioni necessarie per . La sottosezione Display permette di indicare la dimensione virtuale dello schermo (Virtual), del ViewPort e dei Modes usati con questo schermo.

ServerLayout

Questa sezione definisce il layout di una configurazione singlehead o multihead. Qui vengono raggruppati i dispositivi d'immessione InputDevice e quelli di visualizzazione. Screen.

Occupiamoci ora delle sezioni Monitor, Device e Screen. Nella pagina di manuale d e XF86Config troverete ulteriori informazioni sulle altre sezioni.

Un file XF86Config può contenere più sezioni Monitor e Device. Sono possibili anche più sezioni Screen; quale di queste venga usata, dipende dalla sezione successiva ServerLayout.

11.1.1. Screen-Section

Diamo un'occhiata alla sezione screen; come già accennato, questa raggruppa le sezioni monitor e device e stabilisce la risoluzione e la profondità dei colori.

Ecco una sezione Screen esempio:Example 11.1, “La sezione Screen del file /etc/X11/”.

Example 11.1. La sezione Screen del file /etc/X11/

Section "Screen"
DefaultDepth  16
SubSection "Display"
  Depth       16
  Modes       "1152x864" "1024x768" "800x600"
  Virtual     1152x864
EndSubSection
SubSection "Display"
  Depth       24
  Modes       "1280x1024"
EndSubSection
SubSection "Display"
  Depth       32
  Modes       "640x480"
EndSubSection
SubSection "Display"
  Depth       8
  Modes       "1280x1024"
EndSubSection
  Device        "Device[0]"
  Identifier    "Screen[0]"
  Monitor       "Monitor[0]"
EndSection

La riga Identifier (qui Screen[0]) dà a questa sezione una denominazione univoca, attraverso la quale nella sezione successiva ServerLayout si potrà fare riferimento ad essa in modo univoco. Tramite le voci Device e Monitor vengono assegnati a Screen in modo univoco la scheda grafica e monitor. Si tratta di semplici riferimenti alla sezione Device e Monitor con i rispettivi nomi o Identifier. Entreremo nei dettagli riguardanti queste sezioni più avanti.

Tramite l'indicazione DefaultDepth, si può scegliere con quale profondità dei colori debba partire il server (se viene inizializzato senza una precisa indicazione della profondità dei colori). Per ogni profondità di colore segue una sottosezione Display. La profondità di colore per la quale è valida la sottosezione, viene stabilita dalla parola chiave Depth. I valori possibili per Depth sono 8, 15, 16 e 24. Non tutti i moduli dell'X server supportano ognuno di questi valori.

Dopo la profondità di colore, con Modes viene stabilita una serie di risoluzioni che l'X server leggerà da sinistra a destra. Per ogni risoluzione viene cercata nella sezione Modes, in base alla sezione Monitor, una Modeline supportata dallo schermo e dalla scheda grafica.

La prima risoluzione in questo senso è quella con la quale parte l'X-server (il cosiddetto Default-Mode). Con i tasti Ctrl-Alt-+ vi spostate a destra, con i tasti Ctrl-Alt-- a sinistra. In questo modo si può variare la risoluzione dello schermo con il sistema X-Window in esecuzione.

L'ultima riga della sottosezione Display con Depth 16 si riferisce alla dimensione dello schermo virtuale. La dimensione massima dello schermo virtuale dipende dalla quantità di memoria della scheda video e dalla profondità di colore desiderata, e non dalla risoluzione massima del monitor. Dato che le recenti schede grafiche dispongono di tanta memoria grafica, si possono generare desktop virtuali di notevole dimensioni. Tenete presente però che eventualmente non potrete più utilizzare le funzionalità tridimensionali se in pratica riempite l'intera memoria grafica con un desktop virtuale. Se p.es. la scheda grafica ha 16 Mbyte di video RAM, lo schermo virtuale - con una profondità di colore di 8 bit - può raggiungere fino a 4096x4096(!) pixel. Specialmente con server accelerati non è consigliabile dedicare allo schermo virtuale l'intera memoria della scheda grafica, poiché la memoria inutilizzata viene allocata da questi server per diverse font cache ed alla cache grafica.

11.1.2. Device-Section

Una Device Section descrive e definisce una determinata scheda grafica. XF86Config può contenere diverse sezioni del genere, sempre che il loro nome, il quale viene indicato dalla parola chiave Identifier, sia diverso. In genere – se avete integrato nel sistema più di una scheda grafica – le sezioni vengono numerate, con Device[0] la prima, con Device[1] la seconda etc. Ecco un estratto della sezione Device di un computer con una scheda grafica Matrox Millennium PCI:

Section "Device"
  BoardName     "MGA2064W"
  BusID         "0:19:0"
  Driver        "mga"
  Identifier    "Device[0]"
  VendorName    "Matrox"
  Option        "sw_cursor"
EndSection

Se per la configurazione usate , la Device section dovrebbe corrispondere più o meno a quella riportata sopra. In particolar modo le voci Driver e BusID dipendono dall'hardware installato e vengono rilevate automaticamente da . BusID determina lo slot PCI o AGP della scheda grafica che corrisponde all'ID emessa dal comando lspci. Tenete presente che l'X-server emette le indicazioni in modo decimale, mentre il programma lspci le emette in modo esadecimale!

Tramite il parametro Driver stabilite il driver da usare per questa scheda grafica. Nel caso della Matrox Millennium, il modulo driver si chiama mga. L'X server li cerca nella sottodirectory drivers di ModulePath definito nella sezione Files. In una installazione standard, la directory è /usr/X11R6/lib/modules/drivers; al nome viene semplicemente aggiunto _drv.o; nel caso del driver mga viene caricato il file driver mga_drv.o.

Tramite ulteriori opzioni, è possibile influenzare il comportamento dell'X server o del driver. Nella Device Section, a scopi dimostrativi, è stata settata l'opzione sw_cursor, che disattiva il cursore hardware del mouse e abilita quello software. A seconda del modulo driver, avete a disposizione diverse opzioni descritte nei file documentazione che trovate nella directory /usr/X11R6/lib/X11/doc. Opzioni valide in mode generale si trovano anche nelle rispettive pagine di manuale (man XF86Config e man ).

11.1.3. Monitor Section e Modes Section

Analogamente alle sezioni device, le sezioni monitor e sezioni modes, descrivono e definiscono un determinato monitor. Il file di configurazione /etc/XF86Config può contenere un numero qualsiasi di sezioni monitor che devono avere tutte nomi diversi. Nella sezione ServerLayout viene stabilito quale sezione monitor sia quella rilevante.

Per la definizione del monitor vale, ancor più che per la descrizione della scheda grafica, che solamente utenti esperti dovrebbero creare una sezione monitor (e questo vale in particolar modo per la sezione modes). I componenti principali della sezione Modes sono le modeline in cui vengono indicati il timing orizzontale e verticale per la rispettiva risoluzione. Nella sezione Monitor vengono registrate le proprietà del monitor e specialmente le frequenze di deflessione consentite.

[Warning]Warning

Senza cognizioni di base sul funzionamento di monitor e scheda grafica, le modeline non dovrebbero venire modificate, poiché ciò potrebbe danneggiare seriamente il vostro monitor!

Chi desidera generare una propria descrizione del monitor, dovrebbe prima leggere la documentazione contenuta nella directory /usr/X11/lib/X11/doc.

Fortunatamente, diventano sempre più rari i casi in cui bisogna impostare manualmente la modeline o le definizioni monitor. Se usate un moderno monitor multisync di solito l'X server sarà in grado di leggere gli intervalli di frequenza consentiti e la risoluzione ottimale (come già accennato nella sezione di configurazione ) del monitor direttamente per via del DDC. Se ciò non dovesse essere possibile, potete usare uno dei modi VESA integrato dell'X-server. Questi dovrebbero funzionare perfettamente con ogni combinazione di schede grafiche e monitor.