Capitolo 5. L'X Window System

5.1. Sinossi

FreeBSD usa X11 per fornire agli utenti una potente interfaccia grafica. X11 è una implementazione gratuita dell’X Window System che è stata implementata sia in Xorg che in XFree86™ (ed altri pacchetti di software che qui non menzioneremo). Le versioni di FreeBSD fino alla FreeBSD 5.2.1-RELEASE inclusa troveranno come installazione di default XFree86™, il server X11 rilasciato dal Progetto XFree86™. A partire da FreeBSD 5.3-RELEASE, la versione di default ed ufficiale è stata cambiata in Xorg, il server X11 sviluppato dalla Fondazione X.Org sotto una licenza molto simile a quella usata da FreeBSD. Sono disponibili per FreeBSD anche X server commerciali.

Questo capitolo copre l’installazione e la configurazione di X11 con enfasi su Xorg release 7.7. Per ulteriori informazioni sulla configurazione di XFree86™ (ad esempio su vecchie release di FreeBSD dove XFree86™ era la distribuzione di default di X11) o release precedenti di Xorg è sempre possibile riferirsi alla versione archiviata del Manuale di FreeBSD consultabile a questo indirizzo http://docs.FreeBSD.org/doc/.

Per maggiori informazioni sull’hardware video che X11 supporta, controlla il sito web Xorg.

Dopo aver letto questo capitolo, conoscerai:

  • I diversi componenti dell’X Window system, e come questi cooperano.

  • Come installare e configurare X11.

  • Come installare ed usare diversi window manager.

  • Come usare i font TrueType® in X11.

  • Come impostare il tuo sistema per il login grafico ( XDM).

Prima di leggere questo capitolo, dovresti:

5.2. Capire X

Usare X per la prima volta può essere talvolta scioccante per quelli che hanno familiarità con altri ambienti grafici, come Microsoft® Windows® e Mac OS®.

Seppure non sia necessario capire tutti i dettagli dei diversi componenti di X e come interagiscono, tuttavia una qualche conoscenza di base rende possibile avvantaggiarsi delle funzionalità di X.

5.2.1. Perchè X?

X non è il primo window manager scritto per UNIX®, ma è il più popolare. Il gruppo di sviluppo originale di X aveva già lavorato ad un altro sistema grafico prima di scrivere X. Il nome di quel sistema era "W" (per "Window"). X era semplicemente la lettera seguente nell’alfabeto Romano.

X può essere chiamato "X", "X Window System", "X11", e in altri modi. Chiamare X11 "X Windows" potrebbe dare fastidio a della gente; per ulteriori dettagli su questo, consulta X(7).

5.2.2. Il modello client/server di X

X è stato progettato fin dall’inizio per essere incentrato sulla rete ed adotta un modello "client-server".

Nel modello di X, il "server X" funziona sul computer che ha tastiera, monitor e mouse attaccati. Il server è responsabile di operazioni come il controllo del display, la gestione dell’input dalla tastiera e dal mouse, e di altri dispositivi di input o di output (es. una "tavoletta" può essere usata come dispositivo di input, e un proiettore video può essere un dispositivo di output alternativo). Ogni applicazione X (come XTerm, o getenv(3)) è un "client". Un client spedisce messaggi al server come "Per favore disegna una finestra a queste coordinate", e il server risponde con messaggi quali "L’utente ha appena premuto il bottone OK".

In una casa o in un piccolo ufficio, il server X e i client X di solito funzioneranno sullo stesso computer. Ad ogni modo, è perfettamente possibile far funzionare il server X su un desktop meno potente, e far funzionare le applicazioni X (i client) su di una potente e costosa macchina che serve l’ufficio. In questo scenario le comunicazioni tra il client X e il server hanno luogo attraverso la rete.

Questo confonde certa gente, perchè la terminologia di X è proprio l’opposto di quello che ci si possa aspettare di solito. Normalmente ci si aspetta che il "server X" sia la grossa e potente macchina in fondo alla sala, e il "client X" sia la macchina sulla propria scrivania.

È importante ricordare che il server X è la macchina con il monitor e la tastiera, e i client X sono i programmi che mostrano le finestre.

Non c’è nulla nel protocollo che obbliga la macchina client e quella server ad utilizzare lo stesso sistema operativo, oppure a funzionare sullo stesso tipo di computer. È certamente possibile far funzionare un server X su Microsoft® Windows® o Mac OS® di Apple, e ci sono diverse applicazioni free o commerciali che fanno esattamente questo.

5.2.3. Il Window Manager

La filosofia di design di X è molto simile a quella di UNIX® "strumenti, non regole". Questo significa che X non prova a dire come una azione debba essere compiuta. Invece, vengono forniti degli strumenti all’utente, ed è quindi responsabilità dell’utente decidere come usare questi strumenti.

Questa filosofia si estende al fatto che X non dice come le finestre debbano comparire sullo schermo, né come queste debbano essere spostate con il mouse, né quali tasti servano per muoversi attraverso le finestre (ad esempio, Alt+Tab, nel caso di Microsoft® Windows®), né che aspetto devono avere le barre sopra ogni finestra, se queste hanno o meno bottoni di chiusura, e così via.

Al contrario X delega questa responsabilità ad una applicazione chiamata "Window Manager". Ci sono dozzine di window manager disponibili per X; AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, ed altri. Ciascuno di questi window manager fornisce un diverso aspetto ed ambiente; alcuni di questi supportano i "virtual desktop"; alcuni consentono di avere delle combinazioni di tasti predefinite per gestire il desktop; altri hanno un pulsante "Start" o simile; altri possono avere dei "temi", permettendo un cambio completo di aspetto e funzionalità applicando un nuovo tema. Questi window manager, e molti altri, sono disponibili nella categoria x11-wm dei Port.

Inoltre, i desktop environments KDE e GNOME hanno tutti e due il proprio window manager che si integra con il desktop.

Ciascun window manager inoltre ha a un proprio meccanismo di configurazione; alcuni si aspettano di avere un file di configurazione scritto a mano, altri hanno delle interfacce grafiche per molti dei compiti di configurazione; almeno uno (Sawfish) ha un file di configurazione scritto in un dialetto del linguaggio Lisp.

Regole di fuoco

Un’altra caratteristica per la quale il window manager deve avere responsabilità è la cosiddetta "focus policy", o Regola di fuoco. Ogni sistema a finestre necessita di un modo per scegliere la finestra che deve essere attiva e che deve ricevere le comunicazioni da tastiera, e dovrebbe anche indicare in modo visibile quale finestra è attiva in un determinato momento.

Una Focus policy familiare è chiamata "click-to-focus". Questo è il modello utilizzato da Microsoft® Windows®, nel quale una finestra diventa attiva dopo aver ricevuto un click del mouse.

X non supporta alcuna focus policy particolare. È invece il Window Manager che controlla quale finestra è attiva in un determinato momento. Diversi Window manager supporteranno diversi metodi di focus. Tutti supportano il click-to-focus, e la maggioranza di questi ne supporta molti altri.

Le regole di fuoco più popolari sono:

focus-follows-mouse (o fuoco-segue-mouse)

La finestra su cui si trova il puntatore è quella che riceve il fuoco. Questa potrebbe non essere necessariamente la finestra che si trova davanti a tutte le altre. Il fuoco cambia se si punta un’altra finestra, e non c’è bisogno di fare click con il mouse.

sloppy-focus

Questa policy è una piccola estensione della focus-follows-mouse. Con focus-follows-mouse, se il mouse viene mosso sulla finestra principale (o sullo sfondo), allora nessuna finestra avrà il fuoco, e la pressione di un tasto verrà semplicemente ignorata. Con sloppy-focus, il fuoco è solamente cambiato quando il cursore entra in una nuova finestra, e non quando si esce dalla finestra corrente.

click-to-focus

La finestra attiva è scelta dal click del mouse. La finestra potrebbe essere allora "alzata", ed apparire davanti alle altre finestre. Tutte le pressioni dei tasti saranno da quel momento dirette a questa finestra, anche se il cursore viene spostato su un’altra finestra.

Molti window manager supportano altre policy, come possono avere variazioni sul tema. Per maggiori informazioni vi preghiamo di consultare la documentazione stessa del window manager.

5.2.4. I Widget

L’approccio di X di fornire strumenti e non regole si estende anche ai widget visti sullo schermo in ogni applicazione.

"Widget" è un termine usato per tutte quelle parti nell’interfaccia utente che possono essere cliccate o manipolate in un certo modo; bottoni, checkboxes, radio buttons, icone, liste, e così via. Microsoft® Windows® li chiama "controlli".

Sia Microsoft® Windows® che Apple Mac OS® hanno delle regole strette per i widget. Gli sviluppatori devono assicurarsi che tutte le loro applicazioni condividano lo stesso stile e lo stesso aspetto. Con X, non si è sentito un particolare bisogno di obbligare ad avere un particolare stile grafico, o settare widgets a cui aderire.

Come risultato, non aspettatevi che le applicazioni per X abbiano lo stesso stile e lo stesso aspetto. Ci sono alcuni widgets popolari e le loro variazioni, come l’originale Athena sviluppato dal MIT, Motif® (dal quale è stato modellato il widget presente su Microsoft® Windows®, tutti angoli a doppio livello e tre sfumature di grigio), OpenLook, ed altri.

Molte applicazioni nuove di X di oggi usano un widget con sembianze moderne, probabilmente Qt, usato da KDE, o GTK+, usato da GNOME. Rispetto a questo, c’è un accenno di convergenza nell’aspetto dei desktop UNIX, il che facilita le cose ai nuovi utenti.

5.3. Installazione di X11

Xorg è l’implementazione di default di X11 per FreeBSD. Xorg è l’implementazione dell’X server dell’X Window System rilasciato dalla Fondazione X.Org. Xorg è basato sul codice di XFree86™ 4.4RC2 e X11R6.6. La versione di Xorg disponibile al momento nella Collezione dei Ports è 7.7.

Per compilare ed installare Xorg dalla Collezione dei Ports digita:

# cd /usr/ports/x11/xorg
# make install clean

Per compilare Xorg nella sua interezza, accertati di avere almeno 4 GB di spazio libero disponibile.

In alternativa, X11 può essere installato direttamente dai pacchetti. Per X11 sono disponibili anche pacchetti binari da usare con pkg_add(1). Quando si usa il download da remoto di pkg_add(1), il numero di versione deve essere rimosso. pkg_add(1) scaricherà automaticamente l’ultima versione dell’applicazione.

Quindi per scaricare ed installare il pacchetto di Xorg, semplicemente digita:

# pkg_add -r xorg

Gli esempi sopra riportati installeranno la distribuzione completa di X11 inclusi i server, i client, i font etc. Sono anche disponibili pacchetti e port separati di X11.

Il resto del capitolo spiegherà come configurare X11 e come impostare un desktop enviroment produttivo

5.4. La Configurazione di X11

5.4.1. Prima di Partire

Prima di configurare X11 è necessario avere le seguenti informazioni sul sistema:

  • Specifiche del Monitor

  • Chipset della Scheda Video

  • Memoria della Scheda Video

Le specifiche del monitor sono usate da X11 per determinare la risoluzione ed il refresh rate ai quali girare. Queste specifiche possono essere di solito ottenute dalla documentazione che è arrivata con il monitor o dal sito web del produttore. Ci sono i due intervalli di numeri di cui è necessario conoscere il valore, l’horizontal scan rate ed il vertical scan rate.

Il chipset della scheda video determina quale modulo driver X11 usa per parlare con l’hardware grafico. Con la maggior parte dei chipset, questo può essere determinato automaticamente, ma è ancora utile conoscerlo caso mai la ricerca automatica non funzioni correttamente.

La memoria della scheda video determina la risoluzione e la profondità dei colori ai quali il sistema può funzionare. È importante conoscerlo cosicchè l’utente conosca i limiti del sistema.

5.4.2. Configurare X11

A partire dalla versione 7.3, Xorg può spesso lavorare senza un file di configurazione particolare semplicemnte digitando al prompt:

% startx

Se non funziona, o se la configurazione di default non è accettabile, allora X11 deve essere configurato manualmente. La configurazione di X11 è un processo dai molti passi. Il primo passo è creare un file di configurazione iniziale. Come super utente digita semplicemente:

# Xorg -configure

Questo genererà uno scheletro di configurazione di X11 nella directory /root chiamato xorg.conf.new (il fatto che tu abbia fatto un su(1) o che tu abbia fatto una login diretta determina la variabile ereditata $HOME). Il programma X11 cercherà di determinare l’hardware grafico usato sul sistema e scriverà un file di configurazione per caricare i driver corretti per l’hardware presente sul sistema.

Il prossimo passo è testare la configurazione esistente per verificare che Xorg possa funzionare con l’hardware grafico sul sistema. Per eseguire questo passo, digita:

# Xorg -config xorg.conf.new

Se appare una griglia bianca e nera con un cursore del mouse ad X, la configurazione ha avuto successo. Per uscire dal testo, premi Ctrl+Alt+Backspace simultaneamente.

Se il mouse non funziona, devi configurarlo prima di continuare. Leggi Configurazione del Mouse nel capitolo di installazione di FreeBSD.

Quindi, fai il tuning di xorg.conf.new a piacere. Apri il file in un editor come emacs(1) o ee(1). Per prima cosa aggiungi le frequenze per il monitor del sistema. Queste sono di solito espresse come synchronization rate orizzontali e verticali. Questi valori sono aggiunti al file xorg.conf.new sotto la sezione "Monitor":

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection

Le parole chiave HorizSync e VerRefresh possono mancare sul file di configurazione. Se mancano, è necessario aggiungerle con la corretta horizontal synchronization rate dopo la parola chiave HorizSync e la vertical synchronization rate dopo la parola chiave VertRefresh. Nell’esempio sopra sono stati immessi i valori corretti per il sistema di riferimento.

X permette che siano usate le feature di DPMS (Energy Star) con i monitor che ne dispongono. Il programma xset(1) controlla i timeout e può forzare lo standby, la sospensione o lo spegnimento. Se desideri abilitare features di DPMS per il tuo monitor, devi aggiungere le seguenti linee alla sezione del monitor:

Option       "DPMS"

Mentre il file di configurazione xorg.conf.new è ancora aperto in un editor, seleziona la risoluzione di default e la profondità del colore desiderata. Questa è definita nella sezione "Screen":

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection

la parola chiave DefaultDepth descrive la profondità dei colori da usare di default. Questa opzione può essere sovrascritta con l’opzione da command line -depth di Xorg(1). La parola chiave Modes descrive la risoluzione sotto cui girare per una data profondità di colori. Nota che solo i modi standard VESA sono supportati come definito dall’hardware grafico del sistema. Nell’esempio di prima, la risoluzione accettata è 1024 per 768 pixels.

Alla fine, scrivi il file di configurazione e testalo usando la modalità test spiegata in precedenza.

Uno dei tool disponibili per assisterti durante la fase di risoluzione dei problemi sono i log file di X11, che contengono l’informazione su ogni device a cui il server X11 si collega. I nomi dei log file di Xorg sono nel formato /var/log/Xorg.0.log. Il nome esatto del log può variare da Xorg.0.log a Xorg.8.log e così via.

Se è andato tutto bene, il file di configurazione deve essere installato in una directory dove Xorg(1) possa trovarlo. Questa è tipicamente /etc/X11/xorg.conf o /usr/local/etc/X11/xorg.conf.

# cp xorg.conf.new /etc/X11/xorg.conf

Il processo di configurazione di X11 è ora completo. Xorg può ora essere avviato con la utility startx(1). Il server X11 può essere anche avviato con l’uso di xdm(1).

Esiste anche un tool di configurazione grafico, xorgcfg(1) che viene distribuito con X11. Ti permette di di definire la tua configurazione scegliendo i driver appropriati e le impostazioni. Questo programma può essere invocato dalla console, digitando xorgcfg -textmode. Per ulteriori dettagli, consulta la pagina di manuale di xorgcfg(1).

In alternativa c’è anche un tool chiamato xorgconfig(1). Questo programma è una utility della console che è meno user friendly, ma potrebbe funzionare in situazioni nelle quali gli altri tool non funzionano.

5.4.3. Argomenti di Configurazione Avanzati

5.4.3.1. Configurazione con i Chipset Grafici Intel® i810

La configurazione dei chipset integrati Intel® i810 richiede l’interfaccia di programmazione AGP agpgart perchè X11 possa usare la scheda. Consulta la pagina di manuale del driver agp(4) per maggiori informazioni.

Questo permetterà la configurazione dell’hardware come ogni altra scheda grafica. Nota che su sistemi senza il driver agp(4) compilato nel kernel, cercare di caricare il modulo con kldload(8) non funzionerà. Questo driver deve essere nel kernel al momento del boot, o compilandolo nel kernel, o usando /boot/loader.conf.

5.4.3.2. Aggiungere un Flatpanel a Tutto Schermo al Mix.

Questa sezione assume una conoscenza della configurazione un pò avanzata. Se i tentativi di usare gli strumenti di configurazione standard descritti in precedenza non hanno avuto successo, ci sono abbastanza informazioni nei file di log utile per fare funzionare l’installazione. Sarà necessario un editor testuale.

Al momento i formati a tutto schermo (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, et.al.) supportano i formati 16:10 e 10:9 o frazioni dell’aspetto grafico che possono essere problematiche. Esempi di alcune risoluzioni del monitor comuni per la frazione dell’aspetto grafico sono:

  • 2560x1600

  • 1920x1200

  • 1680x1050

  • 1440x900

  • 1280x800

In futuro, questo compito sarà semplice come aggiungere una di queste risoluzioni come possibile Mode nella Section "Screen", come viene mostrato di seguito:

Section "Screen"
      Identifier "Screen0"
      Device     "Card0"
      Monitor    "Monitor0"
      DefaultDepth 24
      SubSection "Display"
            Viewport  0 0
            Depth     24
            Modes     "1680x1050"
      EndSubSection
EndSection

Xorg è abbastanza furbo da ottenere le informazioni di risoluzione dal widescreen via I2C/DDC, così conosce quali formati il monitor possa gestire come frequenze e risoluzioni.

Se quelle ModeLines non esistono nei driver, uno potrebbe avere necessità di dare ad Xorg un piccolo aiuto. Usando /var/log/Xorg.0.log uno può estrarre abbastanza informazioni da creare manualmente una Modeline che funziona. Basta cercare linee che assomigliano a queste:

(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

Questa informazione è chiamata informazione EDID. Creare una ModeLine da questa è solo questione di mettere i numeri nell’ordine giusto:

ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

Così la ModeLine nella sezione "Monitor" in questo esempio somiglierebbe a questa:

Section "Monitor"
    Identifier      "Monitor1"
    VendorName      "Bigname"
    ModelName       "BestModel"
    ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
    Option          "DPMS"
EndSection

Adesso, dopo aver completato questi semplici passi con l’editor, X dovrebbe partire sul tuo monitor a tutto schermo.

5.5. Usare i Font in X11

5.5.1. Font Type1

I font di default che vengono distribuite con X11 non sono certo ideali per il tipico desktop di pubblicazione. I font grandi delle presentazioni appaiono confuse e non professionali, e i piccoli font in getenv(3) sono quasi illeggibili. Comunque, ci sono molti font Type1 gratis e di alta qualità (PostScript®) disponibili che possono essere usate subito con X11. Ad esempio la collezione dei font URW (x11-fonts/urwfonts) include versioni di alta qualità di font standard type1 (Times Roman™, Helvetica™, Palatino™ ed altre). La collezione Freefonts (x11-fonts/freefonts) include molti altri font, ma la maggior parte di loro sono fatte per essere usate con software grafico come Gimp e non sono abbastanza complete per essere usate come font di schermo. Inoltre, X11 può essere configurato per usare i font TrueType® con un minimo sforzo. Per ulteriori dettagli leggi la pagina di manuale di X(7) o la sezione sui font TrueType®.

Per installare la collezione dei font Type1 sopra citate, esegui il seguente comando:

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

E in maniera analoga per freefont o altre collezioni. Per fare sì che l’X server usi questi font, aggiungi una linea appropriata al file di configurazione dell’X server (/etc/X11/xorg.conf), simile a questa:

FontPath "/usr/local/lib/X11/fonts/URW/"

Alternativamente, alla command line in una sessione di X esegui:

% xset fp+ /usr/local/lib/X11/fonts/URW
% xset fp rehash

Questo funzionerà ma sarà perso quando la sessione X viene chiusa, a meno che non sia aggiunto al file di startup (~/.xinitrc per una normale sessione startx, o ~/.xsession quando ci si logga attraverso un login manager grafico come XDM). Un terzo modo è usare il nuovo file /usr/local/etc/fonts/local.conf: consulta la sezione su anti-aliasing.

5.5.2. TrueType® Font

Xorg ha il supporto nativo per rendere i font TrueType®. Ci sono due differenti moduli che possono abilitare questa funzionalità. Il modulo freetype è usato in questo esempio perchè è più consistente con gli altri back-end di rendering degli altri font. Per abilitare il modulo freetype basta che aggiungi la seguente linea nella sezione "Module" del file /etc/X11/xorg.conf:

Load "freetype"

Adesso crea una directory per i font TrueType® (ad esempio /usr/local/lib/X11/fonts/TrueType) e copia tutte i font TrueType® in questa directory. Ricordati che i font TrueType® non possono essere prese direttamente da un Macintosh®, devono essere in formato UNIX®/MS-DOS®/Windows® per essere usate da X11. Una volta che i file sono stati copiati in questa directory, usa il comando ttmkfdir per creare un file fonts.dir, così che il renderer di font X sappia che questi nuovi file sono stati installati. ttmkfdir è disponibile dalla Collezione dei Ports di FreeBSD come x11-fonts/ttmkfdir.

# cd /usr/local/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir

Adesso aggiungi la directory TrueType® al percorso dei font. È lo stesso procedimento seguito sopra per i font Type1, ovvero usa

% xset fp+ /usr/local/lib/X11/fonts/TrueType
% xset fp rehash

o aggiungi una linea FontPath al file xorg.conf.

Questo è tutto. Adesso getenv(3), Gimp, StarOffice™ e tutte le altre applicazioni X dovrebbero riconoscere i font TrueType® installate. I font molto piccoli (come del testo mostrato in alta risoluzione su una pagina web) e font estremamente grandi (all’interno di StarOffice™) avranno un’apparenza molto migliore.

5.5.3. Font Anti-Aliased

L’anti-aliasing dei font è stato disponibile per X11 a partire da XFree86™ 4.0.2. Tuttavia la configurazione dei font era complicata prima dell’introduzione di XFree86™ 4.3.0. A partire da XFree86™ 4.3.0, tutte i font in X11 che sono trovati sotto le directory /usr/local/lib/X11/fonts/ e ~/.fonts/ sono automaticamente resi disponibili per l’anti aliasing ad applicazioni con supporto per Xft. Non tutte le applicazioni lo hanno, ma molte hanno ricevuto supporto per Xft. Esempi di applicazioni con supporto per Xft includono Qt 2.3 e successivi (il toolkit per il desktop KDE), GTK+ 2.0 e successivi (il toolkit per il desktop GNOME) e Mozilla 1.2 e successivi.

Per controllare quali font sono anti-aliased, o per configurare delle proprietà anti-alias, crea (o edita, se esiste già) il file /usr/local/etc/fonts/local.conf. Molte caratteristiche avanzate del sistema di font Xft possono essere configurate usando questo file; questa sezione descrive solo alcune semplici possibilità. Per ulteriori dettagli, consulta fonts-conf(5).

Questo file deve essere in formato XML. Presta particolare attenzione al case, e accertati che tutti i tag siano chiusi propriamente. Il file inizia con l’header usuale XML seguito da una definizione DOCTYPE, poi usa il tag <fontconfig>:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

Come ricordato in precedenza, tutti i font in /usr/local/lib/X11/fonts/ così come quelli in ~/.fonts/ sono già resi disponibili alle applicazioni pronte per Xft. Se desideri aggiungere un’altra directory fuori da queste due alberature di directory, aggiungi una linea simile a questa in /usr/local/etc/fonts/local.conf:

<dir>/path/to/my/fonts</dir>

Dopo aver aggiunto i nuovi font, e specialmente nuove directory, dovresti eseguire questo comando per ricostruire la cache dei font:

# fc-cache -f

L’anti-aliasing rende i bordi un pò confusi, il che rende il testo piccolo più leggibile e rimuove le "scale" dal testo grande, ma può causare una cattiva visuale se applicato al testo normale. Per escludere i font di dimensione minore di 14 punti dall’anti-aliasing includi le seguenti linee:

        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>

Anche lo spazio per alcuni font a spazio singolo potrebbe essere inappropriato con l’anti-aliasing. Questo pare che sia un problema in particolare con KDE. Una possibile soluzione a questo è forzare lo spazio di questi font a 100. Aggiungi le seguenti linee:

       <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>

(questo crea un alias per altri nomi comuni di font a dimensione fissa come "mono"), e poi aggiungi:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>

Alcuni font, come Helvetica, potrebbero avere un problema quando sono resi anti-alias. In genere questo si manifesta come un font che sembra tagliato in verticale. Nella peggiore delle ipotesi, questo potrebbe causare il crash delle applicazioni come Mozilla. Per evitarlo, considera di aggiungere queste linee a local.conf:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>

Quando hai finito di editare il file local.conf accertati di mettere alla fine del file il tag </fontconfig>. Se non lo fai le tue modifiche saranno ignorate.

Il set di font che viene di default con X11 non è molto desiderabile quando viene reso sotto anti-alias. Un set molto migliore può essere trovato nel port x11-fonts/bitstream-vera. Questo port installerà un file /usr/local/etc/fonts/local.conf se non esiste già. Se il file esiste, il port creerà un file /usr/local/etc/fonts/local.conf-vera. Unisci il contenuto di questo file in /usr/local/etc/fonts/local.conf e i font Bitstream automaticamente rimpiazzeranno le X11 Serif di default, Sans Serif, e Monospaced.

Alla fine, gli utenti possono aggiungere le loro impostazioni attraverso i loro file personali .fonts.conf. Per farlo, ogni utente dovrebbe crearsi semplicemente un file ~/.fonts.conf. Anche questo file dovrebbe essere in formato XML.

Un ultimo punto: con uno schermo LCD, potrebbe essere desiderabile una resa sub-pixel. In sostanza questo tratta le componenti rosse, verdi e blu in modo separato per migliorare la risoluzione orizzontale; il risultato è notevole. Per abilitarlo, aggiungi queste linee da qualche parte nel file local.conf:

         <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>

A seconda del tipo di display, rgb potrebbe essere cambiato in bgr, vrgb o vbgr: sperimenta e vedi quale funziona meglio.

L’anti-aliasing dovrebbe essere abilitato la prossima volta che il server X sarà avviato. Comunque, i programmi devono sapere come avvantaggiarsene. Al momento, il toolkit Qt lo sa, così l’intero ambiente KDE può usare font anti-aliased. GTK+ e GNOME possono essere rese compatibili con l’anti-aliasing attraverso il capplet "Font" (leggi Font anti-aliased con GNOME per dettagli). Di default Mozilla 1.2 e successivi sapranno come usare automaticamente l’anti-aliasing. Per disabilitarlo, ricompila Mozilla con il flag DWITHOUT_XFT.

5.6. L’X Display Manager

5.6.1. Overview

L’X Display Manager (XDM) è una parte opzionale dell’X Windows System che è usata per la gestione delle sessioni di login. Questo è utile in molte situazioni, inclusi desktop "X Terminal " minimali, e grandi reti di display server. Dato che l’X Window System è indipendente dalla rete e dal protocollo, c’è una grande moltitudine di configurazioni possibili per eseguire client X e server X su diverse macchine connesse da una rete. XDM fornisce un’interfaccia grafica per scegliere a quale display manager collegarsi, e digitare le informazioni di autenticazione come una combinazione di login e password.

Puoi pensare a XDM come a qualcosa che fornisce all’utente la stessa funzionalità dell’utility getty(8) (vedi ad esempio Configurazione per dettagli). In poche parole, gestisce login di sistema al display al quale si è collegati e quindi esegue un session manager per conto dell’utente (di solito un X Window Manager). XDM quindi attende che questo programma termini, segnalando che l’utente ha finito e che dovrebbe essere mandato fuori dal display. A questo punto XDM può mostrare lo schermo di login e di scelta degli schermi per il prossimo utente.

5.6.2. Usare XDM

Il programma demone è situato in /usr/local/bin/xdm. Questo programma può essere avviato in ogni istante come root e inizierà a gestire il display X sulla macchina locale. Se XDM deve essere eseguito ogni volta che la macchina fa il boot, un modo conveniente è quello di farlo aggiungendo una entry a /etc/ttys. Per maggiori informazioni sul formato e l’uso di questo file, consulta Aggiunta di un Elemento in /etc/ttys. C’è una linea nel file di default /etc/ttys per eseguire il demone XDM su un terminale virtuale:

ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure

Di default questa entry è disabilitata; al fine di abilitarla cambia il campo 5 da off ad on e riavvia init(8) usando le direttive in Come Forzare init a Rileggere /etc/ttys. Il primo campo, il nome del terminale che questo programma gestirà, è ttyv8. Questo significa che XDM si avvierà sul nono terminale virtuale.

5.6.3. Configurare XDM

La directory di configurazione di XDM è situata in /usr/local/lib/X11/xdm. In questa directory ci sono molti file usati per cambiare il comportamento e l’aspetto di XDM. Tipicamente in questi file sarà trovato:

FileDescrizione

Xaccess

Regole di autorizzazione del client.

Xresources

Valori di default delle risorse X.

Xservers

Lista dei display locali e remoti da gestire.

Xsession

Script di default delle sessioni di login.

Xsetup_*

Script per lanciare applicazioni prima dell’interfaccia di login.

xdm-config

Configurazione globale per tutti i display che girano su questa macchina.

xdm-errors

Errori generati dal programma server.

xdm-pid

L’id di processo dell’XDM che è in esecuzione al momento.

In questa directory ci sono anche alcuni scripts e programmi usati per impostare il desktop quando XDM è in esecuzione. Lo scopo di ognuno di questi file sarà descritto brevemente. La sintassi esatta e l’uso di tutti questi file è descritto in xdm(1).

La configurazione di default è una semplice finestra di login rettangolare con l’hostname della macchina mostrato in cima a grandi caratteri e sotto un prompt di "Login:" e "Password:". Questo è un buon punto di inizio per cambiare l’aspetto degli schermi XDM.

5.6.3.1. Xaccess

Il protocollo per connettersi ai display controllati da XDM è chiamato l’X Display Manager Connection Protocol (XDMCP). Questo file è un insieme di regole per controllare le connessioni XDMCP da remoto. È ignorato a meno che xdm-config sia cambiato per restare in ascolto di connessioni remote. Di default non permette a nessun client di connettersi.

5.6.3.2. Xresources

Questa è un file di default dell’applicazione per il selettore di display e schermate di login. In questo, l’apparenza del programma di login può essere modificata. Il formato è identico al file app-default descritto nella documentazione di X11.

5.6.3.3. Xservers

Questo è una lista dei display remoti che il programma di selezione dovrebbe fornire come scelta.

5.6.3.4. Xsession

Questo è lo script di default delle sessioni per XDM da eseguire dopo che un utente si è loggato. Normalmente ogni utente avrà uno script di sessione personalizzato in ~/.xsession che sovrascriverà questo script.

5.6.3.5. Xsetup_*

Questi andranno automaticamente in esecuzione prima di mostrare il selettore o le interfacce di login. C’è uno script per ogni display in uso, chiamato Xsetup_ seguito dal numero del display locale (per esempio Xsetup_0). Tipicamente questi script eseguirannno uno o due programmi in background come xconsole.

5.6.3.6. xdm-config

Questo contiene le impostazioni nella forma di default di applicazioni che sono applicabili ad ogni display che questa installazione gestisce.

5.6.3.7. xdm-errors

Questo contiene l’output di ogni X server che XDM cerca di eseguire. Se un display che XDM gestisce si blocca per qualche motivo, questo è un buon posto per cercare messaggi di errore. Questi stessi messaggi sono anche scritti nel file dell’utente ~/.xsession-errors in base alla sessione.

5.6.4. Eseguire un Network Display Server

Affinchè gli altri clienti si connettano al server di display, devi editare le regole di controllo degli accessi ed abilitare il processo in ascolto di connessioni. Di default queste sono impostate a valori conservativi. Per far sì che XDM resti in ascolto in attesa di connessioni, per prima cosa decommenta una linea nel file xdm-config:

! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0

e poi riavvia XDM. Ricordati che i commenti nei file app-default iniziano con un carattere "!", non con l’usuale "#". Possono essere desiderabili controlli degli acccessi più stretti - guarda le entry di esempio in Xaccess, e fai riferimento alla pagina di manuale di xdm(1) per ulteriori informazioni.

5.6.5. Programmi sostitutivi per XDM

Ci sono molti programmi sostitutivi per il classico programma XDM. Uno di questi, kdm (distribuito con KDE) viene descritto successivamente in questo capitolo. Il display manager kdm offre molti miglioramenti visuali e rifiniture grafiche, come anche la possibilità di permettere agli utenti di scegliere il loro window manager al momento del login.

5.7. Desktop Environment

Questa sezione descrive alcuni diversi desktop environment disponibili per X su FreeBSD. Un "desktop environment" può significare tutto ciò che va da un semplice window manager ad una completa suite di applicazioni desktop, come KDE o GNOME.

5.7.1. GNOME

5.7.1.1. A proposito di GNOME

GNOME è un desktop environment user-friendly che permette agli utenti di usare semplicemente il loro computer e configurarlo. GNOME include un pannello (per avviare le applicazioni e mostrarne lo status), un desktop (dove dati ed applicazioni possono essere posti), un insieme di strumenti da desktop ed applicativi, ed un insieme di convenzioni che rendono semplice per le applicazioni la cooperazione e la consistenza reciproca. Gli utenti di altri sistemi operativi o environment dovrebbero sentirsi a casa loro usando il potente ambiente grafico che GNOME offre. Ulteriori informazioni a proposito di GNOME su FreeBSD possono essere trovate sul sito FreeBSD GNOME Project. Il sito web contiene anche delle FAQ abbastanza estese circa l’installazione, la configurazione, e la gestione di GNOME.

5.7.1.2. Installare GNOME

Il software può essere installato facilmente da un pacchetto o dalla collezione dei Ports:

Per installare il pacchetto GNOME dalla rete, semplicemente digita:

# pkg_add -r gnome2

Per compilare GNOME da sorgenti, usa l’albero dei ports:

# cd /usr/ports/x11/gnome2
# make install clean

Una volta che GNOME è installato, bisogna dire al server X di avviare GNOME invece del window manager di default.

Il modo più semplice per avviare GNOME è con GDM, il Display Manager di GNOME. GDM, che è installato come parte del desktop GNOME (ma è disabilitato di default) può essere abilitato aggiungendo gdm_enable="YES" a /etc/rc.conf. Una volta che hai rebootato, GNOME partirà automaticamente una volta che ti logghi - nessuna altra configurazione è necessaria.

GNOME può anche essere avviato dalla command-line configurando propriamente un file chiamato .xinitrc. Se un file personalizzato .xinitrc è già al suo posto, semplicemente sostituisci la linea che avvia il window manager corrente con una che invece avvia /usr/local/bin/gnome-session. Se invece non è stato fatto nulla di speciale al file di configurazione, dovrebbe essere sufficiente digitare:

% echo "/usr/local/bin/gnome-session" > ~/.xinitrc

Quindi, digita startx e il desktop environment GNOME sarà avviato.

Se un precedente display manager, come XDM, è in uso, questo non funzionerà. Invece, crea un file eseguibile .xsession con lo stesso comando dentro. Per farlo edita il file e sostituisci il window manager esistente con /usr/local/bin/gnome-session:

% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/local/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession

Un’altra opzione è configurare il display manager per scegliere il window manager al momento di login; la sezione in KDE details spiega come farlo per kdm, il display manager di KDE.

5.7.1.3. Font anti-aliased con GNOME

X11 supporta l’anti-aliasing attraverso l’estensione "RENDER". GTK+ 2.0 e successivi (il toolkit usato da GNOME) può fare uso di questa funzionalità. Configurare l’anti-aliasing è descritto in Font Anti-Aliased. Così, con software aggiornato, è possibile usare l’anti-aliasing all’interno del desktop GNOME. Basta che vai in Applications  Desktop Preferences  Font, e selezioni Best shapes, Best contrast, o Subpixel smoothing (LCDs). Per una applicazione GTK+ che non è parte di GNOME, imposta la variabile di ambiente GDK_USE_XFT a 1 prima di avviare il programma.

5.7.2. KDE

5.7.2.1. A proposito di KDE

KDE è un desktop environment facila da usare. Alcune delle caratteristiche che KDE fornisce alll’utente sono:

  • Un bel desktop moderno

  • Un desktop che esibisce una totale trasparenza rispetto alla rete.

  • Un sistema di help integrato che permette accesso conveniente e consistente all’aiuto sull’uso del desktop KDE e le sue applicazioni

  • Un aspetto delle applicazioni KDE consistente fra loro

  • Menu e toolbars standardizzate, key-bindings, color-scheme etc.

  • Internazionalizzazione: KDE è disponibile in più di 40 linguaggi

  • Configurazione del desktop centralizzata, consistente e guidata da finestre dialog

  • Un gran numero di utili applicazioni KDE

KDE viene installato con un browser chiamato Konqueror, che è un solido competitore di altri browser esistenti su sistemi UNIX®. Maggiori informazioni su KDE possono essere trovati al sito di KDE. Per informazioni specifiche su FreeBSD e risorse su KDE consulta il sito KDE sul sito del team di FreeBSD.

5.7.2.2. Installare KDE

Proprio come con GNOME o altri desktop environment, il software può essere installato facilmente da pacchetto o dalla Collezione dei Port:

Per installare il pacchetto KDE dalla rete, semplicemente digita:

# pkg_add -r kde

pkg_add(1) automaticamente scaricherà l’ultima versione dell’applicazione.

Per compilare KDE dai sorgenti, usa l’albero dei ports:

# cd /usr/ports/x11/kde3
# make install clean

Dopo che KDE è stato installato, bisogna dire al server X di avviarlo al posto del window manager di default. Questo si ottiene editando il file .xinitrc:

% echo "exec startkde" > ~/.xinitrc

Adesso, ogni volta che l’X Window System è avviato con startx, KDE sarà il desktop.

Se si usa un display manager come XDM, la configurazione è leggermente differente. Devi infatti editare il file .xsession. Le istruzioni per kdm sono descritte di seguito in questo capitolo.

5.7.3. Maggiori dettagli su KDE

Adesso che KDE è installato sul tuo computer, la maggior parte delle cose le puoi scoprire attraverso le pagine dell’help, o semplicemente puntando e cliccando qualche menu. Gli utenti Windows® e Mac® si sentiranno abbastanza a loro agio.

Il migliore riferimento per KDE è la documentazione on-line. KDE arriva con il suo web browser, Konqueror, dozzine di utili applicazioni e documentazione estesa. Il resto di questa sezione discute dettagli tecnici che sono difficili da imparare da una esplorazione casuale.

5.7.3.1. Il Display Manager KDE

Un amministratore di un sistema multiutente può desiderare di avere uno schermo di login grafico per dare il benvenuto agli utenti. XDM può essere usato, come descritto in precedenza. In ogni caso, KDE include un’alternativa, kdm, che è disegnato per essere più attraente ed includere maggiori opzioni di login. In particolare, gli utenti possono facilmente scegliere (attraverso un menu) quale desktop environment (KDE, GNOME o qualcos’altro) avviare dopo essersi loggati.

Per abilitare kdm, la entry ttyv8 in /etc/ttys deve essere adattata. La linea assomiglia a questa:

ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure

5.7.4. XFce

5.7.4.1. A proposito di XFce

XFce è un desktop environment basato sul toolkit GTK+ usato da GNOME, ma è molto più snello e disegnato per quelli che vogliono un semplice, efficiente desktop che sia non di meno facile da usare e configurare. Visivamente, assomiglia molto a CDE, il desktop che si trova su sistemi UNIX® commerciali. Alcune delle caratteristiche di XFce sono:

  • Un semplice desktop, facile da gestire

  • Interamente configurabile via mouse, con drag and drop, etc.

  • Pannelli principali simili a CDE, con menu, applets e lanciatori di applicazioni

  • Window manager integrato, file manager, sound manager, modulo di compatiblità GNOME e altro

  • I suoi temi si possono configurare (grazie a GTK+)

  • Veloce, snello ed efficiente: ideale per macchine vecchie/lente o macchine con poca memoria

Maggiori informazioni su XFce possono essere trovate sul sito web XFce.

5.7.4.2. Installare XFce

Esiste un pacchetto binario per XFce al momento in cui scriviamo. Per installarlo, semplicemente digita:

# pkg_add -r xfce4

In alternativa, per compilare dai sorgenti, usa la collezione dei ports:

# cd /usr/ports/x11-wm/xfce4
# make install clean

Adesso devi dire all’X server di lanciare XFce la prossima volta che X è avviato. Digita semplicemente questo:

% echo "/usr/local/bin/startxfce4" > ~/.xinitrc

La prossima volta che X è avviato, XFce sarà il desktop. Come prima, se un display manager come XDM è in uso, crea un .xsession, come descritto nella sezione su GNOME, ma con il comando /usr/local/bin/startxfce4; o configura il display manager per permetterti di scegliere un desktop al momento del login, come spiegato su kdm.


Questo, ed altri documenti, possono essere scaricati da https://download.freebsd.org/ftp/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <freebsd-questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <freebsd-doc@FreeBSD.org>.