Capitolo successivo Capitolo precedente Indice

38. X - struttura e configurazione essenziale

X è un sistema grafico per gli ambienti Unix, o più precisamente per gli ambienti aderenti agli standard ANSI C o POSIX.

X Window System è stato originariamente sviluppato nei laboratori del MIT (Massachusetts Institute of Technology) e in seguito tutti i diritti sono stati assegnati al X Consortium, a partire dal 1 gennaio 1994.

X Window System è un marchio di X Consortium, Inc. ( http://www.x.org) e la licenza con cui è rilasciato è riportata in appendice ( `X Consortium').

I termini X, X Window e X Window System sono sinonimi, mentre il nome ``X Windows'' non è corretto per identificare questo sistema grafico.

38.1 Struttura

Nel sistema X Window System si utilizzano alcuni termini importanti che rappresentano altrettante parti di questo.

X server

Si tratta del programma che gestisce, e mette a disposizione degli altri programmi, le funzionalità grafiche. Per questa ragione, il computer su cui si fa funzionare il server X deve essere dotato di video grafico (bitmap), tastiera e mouse. Il server grafico fornisce anche un servizio di rete dal momento che consente l'accesso a programmi in funzione presso altri computer.

X client

I programmi che utilizzano questo ambiente grafico comunicando con il server X. Un client X può essere messo in funzione anche in un computer diverso da quello sul quale è in funzione un server X.

X protocol

Il protocollo di comunicazione tra i programmi che utilizzano l'ambiente grafico e il server X.

Xlib

La libreria utilizzata dai programmi che utilizzano i servizi del server X.

Window Manager

Un WM o Window Manager è un programma speciale che si occupa di gestire le finestre delle varie applicazioni. Nell'ambiente X Window System, si tratta di un client X.

Hardware

Dal punto di vista di X Window System, l'hardware è ciò che consente di interagire in questo sistema grafico (nel senso che il resto non è di sua competenza). Si tratta della tastiera, dello schermo grafico e del dispositivo di puntamento. In pratica il ruolo di X Window System è tutto qui: controllare tutto questo.


X Window System è un sistema attraverso il quale, teoricamente, è possibile avere macchine che fanno girare più di un server grafico, ognuno in grado di controllare una stazione grafica (display) che a sua volta utilizza uno o più schermi grafici.

All'interno di un computer possono teoricamente funzionare più server grafici per controllare altrettante stazioni grafiche di lavoro. Inoltre, sempre teoricamente, una stazione grafica può utilizzare più di uno schermo grafico contemporaneamente.

Nel gergo di X Window System, la stazione grafica è il display e viene identificato da un numero a partire da zero, nella forma :n. Se una stazione grafica è dotata di più di uno schermo, quando si deve fare riferimento ad uno di questi occorre aggiungere all'indicazione del numero di display quello dello schermo. Anche in questo caso, il primo corrisponde a zero. La forma diventa quindi :n.m, dove n è il display e m è lo schermo. La figura (figura) dovrebbe chiarire il meccanismo. Il valore predefinito di display e schermo è zero, per qui, quando non si specificano queste informazioni, si intende implicitamente lo schermo :0.0.

Dispositivo di puntamento

I dispositivi di puntamento, solitamente il mouse, possono avere un numero variabile di tasti; teoricamente si va da un minimo di uno ad un massimo di cinque. Nell'ambiente X Window System, questi tasti si distinguono attraverso un numero: 1, 2, 3, 4 e 5. Il ``tasto sinistro'' è il primo, e da lì si continua la numerazione. Quando si utilizza un mouse a tre tasti, il tasto numero 2 è quello centrale.

Il vero problema è che X Window System utilizza normalmente tre tasti, mentre la maggior parte dei mouse in circolazione ne mette a disposizione due (compatibilità Microsoft). Nei mouse a due tasti, il tasto destro svolge la funzione del tasto numero 3 e solitamente, il tasto centrale (cioè il numero 2) si ottiene con l'uso contemporaneo dei due tasti esistenti.


La numerazione dei tasti dei mouse che ne hanno solo due è particolare.

Questo problema viene ripreso nella descrizione della configurazione di XFree86 e lì dovrebbe risultare più chiaro.

Client-Server

Il programma che si occupa di gestire la stazione grafica è il server grafico. È un server perché offre solo dei servizi e non interagisce direttamente con l'utente. Sono i programmi client a interagire con l'utente. Questi richiedono al server di poter utilizzare un determinato schermo e attraverso la stazione grafica corrispondente sono in grado di ricevere l'input della tastiera e dell'unità di puntamento.

Tra i programmi client, quello che riveste un ruolo fondamentale è il gestore delle finestre, attraverso il quale si rendono disponibili quei meccanismi con cui si può facilmente passare da un programma all'altro e le finestre possono essere ridimensionate o ridotte a icona.

X Window System è trasparente nei confronti della rete. Un programma client può utilizzare i servizi di un server remoto, interagendo con la stazione grafica di quel server. Questo tipo di utilizzo richiede comunque una forma di autorizzazione o autenticazione, per motivi di sicurezza.

Quando si vuole identificare un particolare schermo di un certo computer nella rete, si antepone alle coordinate (già viste nella sezione precedente) il nome o l'indirizzo di quel computer: <computer-host>:n.m. La figura (seguente) mostra un esempio di questo tipo di utilizzo.


Il server grafico può concedere l'utilizzo della stazione grafica anche a programmi in esecuzione su computer remoti.

Socket

Nella sezione precedente si è visto che un programma client può connettersi con un server X sia locale che remoto. Per una connessione remota occorre stabilire un collegamento. Il server X resta normalmente in ascolto sulla porta (socket) numero 6000+n, dove n rappresenta il numero della stazione grafica, ovvero del server X.

Nel caso di una stazione grafica con indirizzo :1, la porta su cui dovrebbe trovarsi in ascolto il server relativo è la numero 6001.

Il concetto di client-server per ciò che riguarda la rete viene ripreso nei capitoli dedicati proprio alle connessioni in rete ( `Rete' e successivi).

Xlib

I programmi che utilizzano i servizi di un server grafico fanno uso di librerie particolari. Queste librerie sono dunque indispensabili anche per quei programmi client che utilizzano il servizi di server remoti.

38.2 XFree86

XFree86 è una collezione di server X per i sistemi operativi Unix basati sull'architettura dei PC. XFree86 è una derivazione di X386. Si tratta di una collezione di server perché uno solo non basterebbe per gestire tutti i tipi di scheda video esistente nelle piattaforme PC, di conseguenza, quando si usa X Window System in un PC, si deve scegliere il programma server in relazione alla scheda video utilizzata.

Collocazione nel filesystem

La struttura prevista per il filesystem di Linux (capitolo `Gerarchia del filesystem') colloca tutti i file statici di X Window System (binari, documentazione, librerie, ...) al di sotto di /usr/X11R6/. I file di configurazione, sono invece collocati al di sotto di /etc/X11/.

Per ragioni di compatibilità, vengono inoltre aggiunti alcuni link simbolici.

/usr/bin/X11     -> /usr/X11R6/bin
/usr/lib/X11     -> /usr/X11R6/lib/X11
/usr/include/X11 -> /usr/X11R6/include/X11

Configurazione

Per poter utilizzare XFree86 occorre configurare il file /etc/X11/XF86Config, di solito attraverso il programma /usr/X11R6/bin/xf86config, oppure /usr/X11R6/bin/XF86Setup.

Il primo dei due è un programma interattivo che non fa uso di grafica e piuttosto scomodo: fa una serie di domande e non è possibile tornare indietro quando si scopre di aver sbagliato qualcosa. Si può solo ricominciare.

Il secondo, è un programma grafico, più comodo, che però potrebbe non funzionare, soprattutto se sono stati installati solo alcuni server grafici e non quello per la scheda VGA standard.

Di seguito si descrive l'operazione di configurazione attraverso xf86config.

Prima di avviare il programma di configurazione occorre avere ben chiare in mente le caratteristiche dell'hardware video-tastiera-mouse. Per quanto riguarda il monitor si deve conoscere il valore minimo e massimo delle frequenze di scansione orizzontale e verticale. La frequenza orizzontale è espressa in KHz mentre quella verticale in Hz. La scheda video è l'elemento più delicato e di essa, oltre che il nome dell'integrato che si occupa della grafica, occorre conoscere la quantità di memoria. Negli esempi seguenti si fa riferimento a un monitor in grado di utilizzare frequenze orizzontali da 31 a 60 KHz e frequenze verticali da 50 a 90 Hz, una scheda video con integrato S3 Trio64+, una tastiera italiana standard e un mouse seriale Microsoft compatibile (a due tasti).

$ su [Invio]

È meglio essere l'utente root per fare questa operazione, altrimenti viene creato un file XF86Config all'interno della propria directory home invece che nella sua destinazione corretta.

# xf86config [Invio]

This program will create a basic XF86Config file, based on menu selections you
make.

The XF86Config file usually resides in /usr/X11R6/lib/X11 or /etc. A sample
XF86Config file is supplied with XFree86; it is configured for a standard
VGA card and monitor with 640x480 resolution. This program will ask for a
pathname when it is ready to write the file.

You can either take the sample XF86Config as a base and edit it for your
configuration, or let this program produce a base XF86Config file for your
configuration and fine-tune it. Refer to /usr/X11R6/lib/X11/doc/README.Config
for a detailed overview of the configuration process.

For accelerated servers (including accelerated drivers in the SVGA server),
there are many chipset and card-specific options and settings. This program
does not know about these. On some configurations some of these settings must
be specified. Refer to the server man pages and chipset-specific READMEs.

Before continuing with this program, make sure you know the chipset and
amount of video memory on your video card. SuperProbe can help with this.
It is also helpful if you know what server you want to run.

Press enter to continue, or ctrl-c to abort.

Il programma mostra una introduzione ricordando in particolare che prima di proseguire è necessario conoscere le caratteristiche della scheda video.

[Invio]

The directory '/usr/X386/bin' exists. You probably have an old version of
XFree86 installed (XFree86 3.1 installs in '/usr/X11R6' instead of
'/usr/X386').

It is important that the directory '/usr/X11R6' is present in your
search path, *before* any occurrence of '/usr/X386/bin'. If you have installed
X program binaries that are not in the base XFree86 distribution in
'/usr/X386/bin', you can keep the directory in your path as long as it is
after '/usr/X11R6'.

Your PATH is currently set as follows:
/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/openwin/bin:/usr/lib/teTeX/bin:.

Note that the X binary directory in your path may be a symbolic link.
In that case you could modify the symbolic link to point to the new binaries.
Example: 'rm -f /usr/bin/X11; ln -s /usr/X11R6/bin /usr/bin/X11', if the
link is '/usr/bin/X11'.

Make sure the path is OK before continuing.
Press enter to continue, or ctrl-c to abort.

Come s'era detto in precedenza, XFree86 è derivato da X386, quindi le precedenti versioni erano installate all'interno della directory /usr/X386/bin. Ma per motivi di compatibilità con il passato è normale trovare un link simbolico che traduce /usr/X386 in /usr/X11R6. Di conseguenza, se le cose stanno così, l'avvertimento che riguarda questa directory può essere ignorato.

Per il funzionamento del server XFree86 è necessario che la directory in cui risiede sia compresa nel percorso di ricerca (cioè nella variabile PATH). Questa directory è /usr/X11R6/bin, ma spesso è raggiungibile anche attraverso il link simbolico /usr/X11 che punta a /usr/X11R6. Quindi il percorso di ricerca trovato nella variabile PATH è valido (si trattava di ...:/usr/X11/bin:...).

[Invio]

First specify a mouse protocol type. Choose one from the following list:

 1.  Microsoft compatible (2-button protocol)
 2.  Mouse Systems (3-button protocol)
 3.  Bus Mouse
 4.  PS/2 Mouse
 5.  Logitech Mouse (serial, old type, Logitech protocol)
 6.  Logitech MouseMan (Microsoft compatible)
 7.  MM Series
 8.  MM HitTablet

If you have a two-button mouse, it is most likely of type 1, and if you have
a three-button mouse, it can probably support both protocol 1 and 2. There are
two main varieties of the latter type: mice with a switch to select the
protocol, and mice that default to 1 and require a button to be held at
boot-time to select protocol 2. Some mice can be convinced to do 2 by sending
a special sequence to the serial port (see the ClearDTR/ClearRTS options).

Enter a protocol number:

Anche il mouse può essere un problema, specialmente se si dispone di un bus mouse. In questo caso è meglio leggere il Busmouse HOWTO. Con un mouse seriale o PS/2, di solito va tutto bene.

Fondamentalmente esistono due tipi di mouse seriali: Microsoft a due tasti e Mouse System a tre tasti. Il Mouse System a tre tasti sarebbe l'ideale dal momento che X Window System richiede l'uso di tutti e tre i tasti, ma spesso, un mouse del genere è anche compatibile con il sistema Microsoft a due tasti. Nella migliore delle ipotesi si ha a disposizione un piccolo commutatore che permette di selezionare la modalità di funzionamento, nella peggiore occorre tenere premuti uno dei tasti all'avviamento del sistema per definire la modalità a tre tasti.

Tra i mouse a tre tasti esiste anche il tipo Logitech MouseMan che è compatibile con il tipo Microsoft, ma ha il tasto centrale che genera un segnale corrispondente alla pressione di entrambi i tasti.

Dato che si vuole seguire l'esempio proposto inizialmente, si sceglie il mouse Microsoft compatibile.

1 [Invio]

You have selected a Microsoft protocol mouse. If your mouse was made by
Logitech, you might want to enable ChordMiddle which could cause the
third button to work.

Please answer the following question with either 'y' or 'n'.
Do you want to enable ChordMiddle?

Quando si hanno a disposizione solo due tasti si pone il problema di accedere alle funzioni legate al tasto centrale mancante. Nella peggiore delle ipotesi si devono premere contemporaneamente i due tasti (cosa non facile) e in questo caso si parla di emulare il terzo bottone, oppure si dispone di un mouse in grado di generare un segnale equivalente alla pressione dei due tasti quando si preme il tasto centrale e si parla di ``accordo centrale''. Una delle due scelte esclude l'altra. La differenza tra emulare il terzo bottone e utilizzare l'accordo centrale sta nel fatto che nel primo caso viene concessa una certa tolleranza (dovendo premere due tasti diventa difficile farlo contemporaneamente), mentre nel secondo caso no. Tutto sommato si potrebbe utilizzare sempre l'emulazione del terzo bottone anche quando si ha un mouse Logitech.

n [Invio]

You have selected a two-button mouse protocol. It is recommended that you
enable Emulate3Buttons.

Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons?

y [Invio]

Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.

Mouse device:

Se il proprio sistema è stato configurato correttamente, nella directory /dev/ dovrebbe trovarsi un link simbolico che punta al file di dispositivo corrispondente all'interfaccia utilizzata per connettere il mouse. Dovrebbe trattarsi del link /dev/mouse. Se è così, è sufficiente confermare.

[Invio]

Beginning with XFree86 3.1.2D, you can use the new X11R6.1 XKEYBOARD
extension to manage the keyboard layout. If you answer 'n' to the following
question, the server will use the old method, and you have to adjust
your keyboard layout with xmodmap.

Please answer the following question with either 'y' or 'n'.
Do you want to use XKB?

È possibile utilizzare una mappa della tastiera gestita direttamente da X Window System. Si procede in modo da selezionare una mappatura adatta alla tastiera italiana.

y [Invio]

The following dialogue will allow you to select from a list of already
preconfigured keymaps. If you don't find a suitable keymap in the list,
the program will try to combine a keymap from additional information you
are asked then. Such a keymap is by default untested and may require
manual tuning. Please report success or required changes for such a
keymap to XFREE86@XFREE86.ORG for addition to the list of preconfigured
keymaps in the future.

Press enter to continue, or ctrl-c to abort.

[Invio]

List of preconfigured keymaps:

  1  Standard 101-key, US encoding
  2  Microsoft Natural, US encoding
  3  KeyTronic FlexPro, US encoding
  4  Standard 101-key, US encoding with ISO9995-3 extensions
  5  Standard 101-key, German encoding
  6  Standard 101-key, French encoding
  7  Standard 101-key, Thai encoding
  8  Standard 101-key, Swiss/German encoding
  9  Standard 101-key, Swiss/French encoding
 10  None of the above

Enter a number to choose the keymap.

10 [Invio]

You did not select one of the preconfigured keymaps. We will now try to
compose a suitable XKB setting. This setting is untested.
Please select one of the following standard keyboards. Use DEFAULT if
nothing really fits (101-key, tune manually)

  1  Standard 101-key keyboard
  2  Standard 102-key keyboard
  3  101-key with ALT_R = Multi_key
  4  102-key with ALT_R = Multi_key
  5  Microsoft Natural keyboard
  6  KeyTronic FlexPro keyboard
  7  DEFAULT

Enter a number to choose the keyboard.

2 [Invio]

Please choose one of the following countries. Use DEFAULT if nothing
really fits (US encoding, tune manually)
Press enter to continue, or ctrl-c to abort.

[Invio]

  1  Belgium
  2  Bulgaria
  3  Canada
  4  Czechoslovakia
  5  Denmark
  6  Finland
  7  France
  8  Germany
  9  Italy
 10  Norway
 11  Poland
 12  Portugal
 13  Russia
 14  Spain
 15  Sweden
 16  Thailand
 17  Switzerland/French layout
 18  Switzerland/German layout

Enter a number to choose the country.
Press enter for the next page

9 [Invio]

Now we want to set the specifications of the monitor. The two critical
parameters are the vertical refresh rate, which is the rate at which the
the whole screen is refreshed, and most importantly the horizontal sync rate,
which is the rate at which scanlines are displayed.

The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.

Press enter to continue, or ctrl-c to abort.

La fase successiva è quella di definire gli intervalli di frequenza delle scansioni orizzontale e verticale del monitor. Si procede indicando direttamente i valori.

[Invio]

You must indicate the horizontal sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range.

It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.

    hsync in kHz; monitor type with characteristic modes
 1  31.5; Standard VGA, 640x480 @ 60 Hz
 2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
 3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
 4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
 5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
 6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
 7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
 8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
 9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11  Enter your own horizontal sync range

Enter your choice (1-11):

11 [Invio]

Please enter the horizontal sync range of your monitor, in the format used
in the table of monitor types above. You can either specify one or more
continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.

Horizontal sync range:

31-60 [Invio]

You must indicate the vertical sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).

 1  50-70
 2  50-90
 3  50-100
 4  40-150
 5  Enter your own vertical sync range

Enter your choice:

5 [Invio]

Vertical sync range:

50-60 [Invio]

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.

The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition:

I dati identificativi del monitor sono facoltativi e si possono semplicemente saltare, anche se in questo esempio vengono inseriti.

Addonics MON-7C8B [Invio]

Enter the vendor name of your monitor:

Addonics [Invio]

Enter the model name of your monitor:

MON-7C8B [Invio]

Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.

The database entries include information about the chipset, what server to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what server
to run (based on the chipset the card uses) and are untested.

If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).

Do you want to look at the card database?

L'indicazione della scheda video è una fase delicata e con un po' di fortuna si può trovare la propria scheda nell'elenco di quelle previste.

y [Invio]

  0  2 the Max MAXColor S3 Trio64V+                    S3 Trio64V+
  1  928Movie                                          S3 928
  2  AGX (generic)                                     AGX-014/15/16
  3  ALG-5434(E)                                       CL-GD5434
  4  ASUS PCI-AV264CT                                  ATI-Mach64
  5  ASUS PCI-V264CT                                   ATI-Mach64
  6  ASUS Video Magic PCI V864                         S3 864
  7  ASUS Video Magic PCI VT64                         S3 Trio64
  8  ATI 3D Xpression                                  ATI-Mach64
  9  ATI 8514 Ultra (no VGA)                           ATI-Mach8
 10  ATI Graphics Pro Turbo                            ATI-Mach64
 11  ATI Graphics Pro Turbo 1600                       ATI-Mach64
 12  ATI Graphics Ultra                                ATI-Mach8
 13  ATI Graphics Ultra Pro                            ATI-Mach32
 14  ATI Graphics Xpression with 68875 RAMDAC          ATI-Mach64
 15  ATI Graphics Xpression with AT&T 20C408 RAMDAC    ATI-Mach64
 16  ATI Graphics Xpression with CH8398 RAMDAC         ATI-Mach64
 17  ATI Graphics Xpression with Mach64 CT (264CT)     ATI-Mach64

Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.

L'elenco è fortunatamente molto lungo e vale la pena di scorrerlo tutto prima di scegliere il numero corrispondente al modello della propria scheda. Una volta raggiunta la fine, l'elenco viene riproposto dall'inizio.

[Invio] [Invio] [Invio] ...

234  S3 86C928 (generic)                               S3 928
235  S3 86C964 (generic)                               S3 964
236  S3 86C968 (generic)                               S3 968
237  S3 86C988 (generic)                               S3 ViRGE/VX
238  S3 911/924 (generic)                              S3 911/924
239  S3 924 with SC1148 DAC                            S3 924
240  S3 928 (generic)                                  S3 928
241  S3 964 (generic)                                  S3 964
242  S3 968 (generic)                                  S3 968
243  S3 Trio32 (generic)                               S3 Trio32
244  S3 Trio64 (generic)                               S3 Trio64
245  S3 Trio64V+ (generic)                             S3 Trio64V+
246  S3 ViRGE (generic)                                S3 ViRGE
247  S3 ViRGE/VX (generic)                             S3 ViRGE/VX
248  S3 Vision864 (generic)                            S3 864
249  S3 Vision868 (generic)                            S3 868
250  S3 Vision964 (generic)                            S3 964
251  S3 Vision968 (generic)                            S3 968

Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.

245 [Invio]

Your selected card definition:

Identifier: S3 Trio64 (generic)
Chipset:    S3 Trio64
Server:     XF86_S3
Do NOT probe clocks or use any Clocks line.

Press enter to continue, or ctrl-c to abort.

Il programma di configurazione conferma la scelta della scheda video e, in questo caso, avvisa che non si dovrà sondare il clock e non si dovrà usare alcuna linea di clock.

[Invio]

Now you must determine which server to run. Refer to the manpages and other
documentation. The following servers are available (they may not all be
installed on your system):

 1  The XF86_Mono server. This a monochrome server that should work on any
    VGA-compatible card, in 640x480 (more on some SVGA chipsets).
 2  The XF86_VGA16 server. This is a 16-color VGA server that should work on
    any VGA-compatible card.
 3  The XF86_SVGA server. This is a 256 color SVGA server that supports
    a number of SVGA chipsets. On some chipsets it is accelerated or
    supports higher color depths.
 4  The accelerated servers. These include XF86_S3, XF86_Mach32, XF86_Mach8,
    XF86_8514, XF86_P9000, XF86_AGX, XF86_W32, XF86_Mach64, XF86_I128 and
    XF86_S3V.

These four server types correspond to the four different "Screen" sections in
XF86Config (vga2, vga16, svga, accel).

 5  Choose the server from the card definition, XF86_S3.

Which one of these screen types do you intend to run by default (1-5)?

Questa domanda sembra superflua dato che la scheda video è appena stata scelta. In pratica si deve confermare che si vuole proprio il server che può gestire la scheda selezionata precedentemente.

5 [Invio]

The server to run is selected by changing the symbolic link 'X'. For example,
'rm /usr/X11R6/bin/X; ln -s /usr/X11R6/bin/XF86_SVGA /usr/X11R6/bin/X' selects
the SVGA server.

Please answer the following question with either 'y' or 'n'.
Do you want me to set the symbolic link?

Per fare in modo che venga avviato il server desiderato, si crea o si modifica un link simbolico. In questo caso si deve fare in modo che /usr/X11R6/bin/X punti a /usr/X11R6/bin/XF86_S3. Lo si può fare manualmente o lo si può lasciar fare al programma di configurazione.

y [Invio]

Now you must give information about your video card. This will be used for
the "Device" section of your video card in XF86Config.

You must indicate how much video memory you have. It is probably a good
idea to use the same approximate amount as that detected by the server you
intend to use. If you encounter problems that are due to the used server
not supporting the amount memory you have (e.g. ATI Mach64 is limited to
1024K with the SVGA server), specify the maximum amount supported by the
server.

How much video memory do you have on your video card:

 1  256K
 2  512K
 3  1024K
 4  2048K
 5  4096K
 6  Other

Enter your choice:

L'informazione sulla quantità di memoria a disposizione è importante per determinare la cosiddetta profondità dell'immagine, intendendo con questo la quantità di colori che si possono utilizzare, a seconda della risoluzione utilizzata.

3 [Invio]

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).

Your card definition is S3 Trio64 (generic).

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:

Come per il monitor, le informazioni sul nome della scheda sono facoltative.

S3-763 [Invio]

You can simply press enter here if you have a generic card, or want to
describe your card with one string.
Enter the vendor name of your video card:

[Invio]

Enter the model (board) name of your video card:

S3 Trio64V+ [Invio]

Especially for accelerated servers, Ramdac, Dacspeed and ClockChip settings
or special options may be required in the Device section.

The RAMDAC setting only applies to the S3, AGX, W32 servers, and some
drivers in the SVGA servers. Some RAMDAC's are auto-detected by the server.
The detection of a RAMDAC is forced by using a Ramdac "identifier" line in
the Device section. The identifiers are shown at the right of the following
table of RAMDAC types:

  1  AT&T 20C490 (S3 and AGX servers, ARK driver)                att20c490
  2  AT&T 20C498/21C498/22C498 (S3, autodetected)                att20c498
  3  AT&T 20C409/20C499 (S3, autodetected)                       att20c409
  4  AT&T 20C505 (S3)                                            att20c505
  5  BrookTree BT481 (AGX)                                       bt481
  6  BrookTree BT482 (AGX)                                       bt482
  7  BrookTree BT485/9485 (S3)                                   bt485
  8  Sierra SC15025 (S3, AGX)                                    sc15025
  9  S3 GenDAC (86C708) (autodetected)                           s3gendac
 10  S3 SDAC (86C716) (autodetected)                             s3_sdac
 11  STG-1700 (S3, autodetected)                                 stg1700
 12  STG-1703 (S3, autodetected)                                 stg1703


Enter a number to choose the corresponding RAMDAC.
Press enter for the next page, q to quit without selection of a RAMDAC.

[Invio]

 19  IBM RGB 526 (S3)                                            ibm_rgb526
 20  IBM RGB 528 (S3, autodetected)                              ibm_rgb528
 21  ICS5342 (S3, ARK)                                           ics5342
 22  ICS5341 (W32)                                               ics5341
 23  IC Works w30C516 ZoomDac (ARK)                              zoomdac
 24  Normal DAC                                                  normal


Enter a number to choose the corresponding RAMDAC.
Press enter for the next page, q to quit without selection of a RAMDAC.

24 [Invio]

A Clockchip line in the Device section forces the detection of a
programmable clock device. With a clockchip enabled, any required
clock can be programmed without requiring probing of clocks or a
Clocks line. Most cards don't have a programmable clock chip.
Choose from the following list:

 1  Chrontel 8391                                               ch8391
 2  ICD2061A and compatibles (ICS9161A, DCS2824)                icd2061a
 3  ICS2595                                                     ics2595
 4  ICS5342 (similar to SDAC, but not completely compatible)    ics5342
 5  ICS5341                                                     ics5341
 6  S3 GenDAC (86C708) and ICS5300 (autodetected)               s3gendac
 7  S3 SDAC (86C716)                                            s3_sdac
 8  STG 1703 (autodetected)                                     stg1703
 9  Sierra SC11412                                              sc11412
10  TI 3025 (autodetected)                                      ti3025
11  TI 3026 (autodetected)                                      ti3026
12  IBM RGB 51x/52x (autodetected)                              ibm_rgb5xx

Just press enter if you don't want a Clockchip setting.
What Clockchip setting do you want (1-12)?

[Invio]

For most configurations, a Clocks line is useful since it prevents the slow
and nasty sounding clock probing at server start-up. Probed clocks are
displayed at server startup, along with other server and hardware
configuration info. You can save this information in a file by running
'X -probeonly 2>output_file'. Be warned that clock probing is inherently
imprecise; some clocks may be slightly too high (varies per run).

At this point I can run X -probeonly, and try to extract the clock information
from the output. It is recommended that you do this yourself and add a clocks
line (note that the list of clocks may be split over multiple Clocks lines) to
your Device section afterwards. Be aware that a clocks line is not
appropriate for drivers that have a fixed set of clocks and don't probe by
default (e.g. Cirrus). Also, for the P9000 server you must simply specify
clocks line that matches the modes you want to use.  For the S3 server with
a programmable clock chip you need a 'ClockChip' line and no Clocks line.

You must be root to be able to run X -probeonly now.

The card definition says to NOT probe clocks.
Do you want me to run 'X -probeonly' now?

La scheda scelta non richiede la linea di clock e lo stesso programma di configurazione avverte di questo.

n [Invio]

For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"640x480" "800x600" "1024x768" for 8bpp
"640x480" "800x600" for 16bpp
"640x480" for 24bpp
"640x400" for 32bpp

Note that 16, 24 and 32bpp are only supported on a few configurations.
Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8pp (256 colors)
 2  Change the modes for 16bpp (32K/64K colors)
 3  Change the modes for 24bpp (24-bit color, packed pixel)
 4  Change the modes for 32bpp (24-bit color)
 5  The modes are OK, continue.

Enter your choice:

In base al tipo di scheda e alla quantità di memoria installata su di essa, si può determinare l'elenco delle modalità di funzionamento di questa. Dal momento che si ha a disposizione solo 1MB di memoria, non si può superare la risoluzione 1024x768. Se ci si accontenta di risoluzioni inferiori si può aumentare la profondità dei colori (bpp equivale a bit per pixel e 2 elevato a questo valore da il numero di colori a disposizione, quindi, con 8bpp si hanno a disposizione 2**8 = 256 colori).

Quando si avvierà il server si potrà indicare la profondità desiderata e in base a quella scelta verrà utilizzata una delle modalità elencate.

Volendo è possibile scegliere un ordine diverso nella sequenza di una particolare modalità, oppure si può eliminare un livello di risoluzione che genera qualche problema di visualizzazione. In generale non vale la pena di cambiare alcunché.

5 [Invio]

I am going to write the XF86Config file now. Make sure you don't accidently
overwrite a previously configured one.

Do you want it written to the current directory as 'XF86Config'?

La riserva posta dal programma di configurazione si spiega solo considerando la possibilità che si voglia conservare la configurazione precedente per qualche motivo. Se è così vale la pena di farsene una copia prima di procedere alla configurazione.

y [Invio]

File has been written. Take a look at it before running 'startx'. Note that
the XF86Config file must be in one of the directories searched by the server
(e.g. /usr/X11R6/lib/X11) in order to be used. Within the server press
ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,
alt and backspace simultaneously immediately exits the server (use if
the monitor doesn't sync for a particular mode).

For further configuration, refer to /usr/X11R6/lib/X11/doc/README.Config.

Alla conclusione, il programma di configurazione ricorda che il file XF86Config deve trovarsi dove il server si aspetta di trovarlo. La directory /etc/X11/ è il luogo corretto in quanto solitamente /usr/X11R6/lib/X11/XF86Config è un link simbolico che punta a /etc/X11/XF86Config.

Per verificare se tutto è andato bene si può avviare lo script startx. Se qualcosa non va, basta premere la sequenza [Ctrl+Alt+Backspace] per fare terminare l'esecuzione del server.

/etc/X11/XF86Config

La lettura del file /etc/X11/XF86Config può dare molte utili informazioni sull'organizzazione di XFree86. Segue la descrizione di alcune sezioni.

Files

La sezione Files riguarda la posizione dei file utilizzati dal server.

ServerFlags

Questa sezione permette di controllare alcuni flag abbastanza importanti, in particolare i seguenti.

# DontZap

Togliendo il simbolo # di commento a questa riga si toglie la possibilità di concludere l'attività del server attraverso la combinazione di tasti [Ctrl+Alt+Backspace].

# DontZoom

Togliendo il simbolo # di commento a questa riga si toglie la possibilità di cambiare il livello di risoluzione attraverso l'uso delle combinazioni [Ctrl+Alt+num(+)] (control alt + del tastierino numerico) e [Ctrl+Alt+num(-)] (control alt - del tastierino numerico).

Keyboard

Questa sezione riguarda la configurazione della tastiera.

Pointer

Questa sezione riguarda la configurazione del mouse.

Monitor

Questa sezione riguarda la configurazione del monitor.

Device

Questa sezione riguarda la configurazione della scheda grafica.

Screen

Questa sezione riguarda l'associazione tra monitor, scheda video e server.

38.3 Primo avvio di X

Con le normali distribuzioni Linux, dopo la configurazione del server X, dovrebbe essere sufficiente avviare lo script startx, senza argomenti, per vedere funzionare questo ambiente grafico.

$ startx [Invio]

Zoom

Avendo avviato il server X, vale la pena di provare a cambiare la risoluzione attraverso la combinazione [Ctrl+Alt+num(+)] (control alt + del tastierino numerico) e [Ctrl+Alt+num(-)] (control alt - del tastierino numerico).

Console virtuali

Per passare dal server X a una console virtuale, è sufficiente utilizzare la combinazione [Ctrl+Alt+F1], [Ctrl+Alt+F2], ... invece del solito [Alt+Fn] che non potrebbe funzionare. Il server X si trova di solito nella settima console virtuale: [Ctrl+Alt+F7].

Fine lavoro

Per concludere l'esecuzione del server X ci sono due modi:

L'interruzione dell'esecuzione del server X con la combinazione [Ctrl+Alt+Backspace] è il modo più brutale, ma può essere opportuno quando non si vede più nulla, specie quando si è avviato X Window System dopo una configurazione sbagliata.

38.4 Procedura di avvio

Nelle sezioni precedenti si è accennato al modo con cui è possibile avviare e concludere il funzionamento del server X. Dovrebbe essere chiaro che per avviare X Window System si utilizza normalmente lo script startx, ma questo non è l'unico modo, ed in ogni caso, da questo script si articola una struttura piuttosto articolata che è opportuno conoscere.

Il server grafico è un programma distinto a seconda del tipo di scheda grafica. Teoricamente sarebbe necessario avviare il sistema grafico utilizzando il programma adatto al proprio hardware, in pratica, il sistema di configurazione xf86config provvede a creare un link simbolico in modo da poter avviare il server utilizzando semplicemente il nome X.

Se si avvia semplicemente il server, utilizzando il nome X oppure quello specifico di una particolare scheda grafica, si ottiene solo una superficie su cui fare scorre il mouse. Per poter fare qualcosa, occorre almeno avere in funzione un programma che consenta di avviarne altri. Occorrono cioè dei client.

Se si vuole provare a vedere cos'è un server X senza client basta avviare X. Come già spiegato in precedenza, è sempre possibile uscire con la combinazione [Ctrl+Alt+Backspace].

Per risolvere questo problema si deve utilizzare il programma xinit, attraverso il quale si possono definire alcuni client di partenza (per esempio un gestore di finestre), il tipo di server da utilizzare e le sue eventuali opzioni.

$ xinit

xinit [[<client>] <opzioni>] [ -- [<server>] [<display>] <opzioni>]

xinit viene usato per avviare il server X e un primo programma client. Quando questo programma client termina la sua esecuzione, xinit invia un segnale di interruzione al server X e quindi, a sua volta, termina la sua esecuzione.

Se non viene indicato un programma client specifico, xinit tenta di avviare il file ~/.xinitrc, che di solito dovrebbe corrispondere ad uno script, e se questo manca, tenta di avviare il programma xterm nel modo seguente.

xterm -geometry +1+1 -n -login -display :0

Se non viene indicato un programma server specifico, xinit tenta di avviare il file ~/.xserverrc, e se questo manca, tenta di avviare il programma X nel modo seguente.

X :0

Quando si vuole fare in modo che il server X venga avviato inizialmente con un gruppetto di programmi client, si fa in modo che xinit utilizzi per questo uno script. Di solito si tratta proprio del file ~/.xinitrc, quello che verrebbe avviato in modo predefinito. All'interno di questo script, i programmi dovrebbero essere avviati in background, con la possibile eccezione di quelli che terminano immediatamente la loro funzione. L'ultimo di questi programmi deve funzionare in primo piano (foreground), in modo che la sua conclusione corrisponda con quella dello script stesso.

Di solito, xinit viene avviato senza l'indicazione esplicita di client e server. Se si intende utilizzare questa possibilità, i nomi di questi devono comprendere il percorso per raggiungerli: devono cioè inziare con un punto (.) oppure con una barra inclinata (/). Diversamente non verrebbero riconosciuti come tali, ma come opzioni per il programma client o per il programma server, a seconda che si trovino a sinistra o a destra dei due trattini di separazione (--).

Esempi

$ xinit

Avvia xinit con i valori predefiniti. In questo modo xinit tenta di avviare il server X utilizzando il programma o lo script ~/.xinitrc come client, oppure il programma xterm in sua mancanza.

$ xinit -- /usr/X11R6/bin/X86_SVGA

Si richiede a xinit di avviare il server /usr/X11R6/bin/X86_SVGA. Per quanto riguarda il client, si utilizzano i valori predefiniti.

$ xinit -- -bpp 16

xinit avvia il server X predefinito, con l'argomento -bpp 16 attraverso cui si richiede una profondità di colori di 16 bit per pixel (2**16 = 65535). Per quanto riguarda il client, si utilizzano i valori predefiniti.

Interdipendenza

Il modo migliore per verificare cosa accade quando si avvia xinit è quello di verificare l'interdipendenza tra i processi attraverso pstree. Supponendo di aver avviato xinit senza argomenti, e che questo abbia potuto utilizzare lo script ~/.xinitrc, si dovrebbe ottenere uno schema simile a quello seguente.

...---xinit-+-.xinitrc---fvwm-+-FvwmPager
            |                 `-GoodStuff
            `-X

In questo caso si può osservare che ~/.xinitrc avvia il gestore di finestre fvwm che a sua volta si occupa di avviare altre cose.

startx

Nella sezione precedente si è visto che è possibile avviare il server X attraverso xinit. Questo modo potrebbe però risultare scomodo quando si ha la necessità di utilizzare sistematicamente determinati attributi. Il modo normale di avviare il sistema grafico dovrebbe essere quello di utilizzare lo script startx, predisposto per avviare xinit nel modo più adatto alle proprie esigenze particolari.

Di solito la distribuzione Linux fornisce uno script adattato alla sua impostazione, oppure in futuro, lo stesso programma di configurazione di X Window System potrebbe predisporre da solo questo file. In ogni caso, l'amministratore del sistema dovrebbe rivedere questo script ed eventualmente ritoccarlo.

La sintassi di startx, quando si tratta di una versione aderente all'impostazione originale di X Window System, è praticamente uguale a quella di xinit.

startx [[<client>] <opzioni>] [ -- [<server>] <opzioni>]

startx offre però la possibilità di predisporre delle opzioni predefinite per client e server.

#!/bin/sh

# $XConsortium: startx.cpp,v 1.4 91/08/22 11:41:29 rws Exp $
# $XFree86: xc/programs/xinit/startx.cpp,v 3.0 1994/05/22 00:02:28 dawes Exp $
# 
# This is just a sample implementation of a slightly less primitive 
# interface than xinit.  It looks for user .xinitrc and .xserverrc
# files, then system xinitrc and xserverrc files, else lets xinit choose
# its default.  The system xinitrc should probably do things like check
# for .Xresources files and merge them in, startup up a window manager,
# and pop a clock and several xterms.
#
# Site administrators are STRONGLY urged to write nicer versions.
# 

userclientrc=$HOME/.xinitrc
userserverrc=$HOME/.xserverrc
sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc
sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc
clientargs=""
serverargs=""

if [ -f $userclientrc ]; then
    clientargs=$userclientrc
else if [ -f $sysclientrc ]; then
    clientargs=$sysclientrc
fi
fi

if [ -f $userserverrc ]; then
    serverargs=$userserverrc
else if [ -f $sysserverrc ]; then
    serverargs=$sysserverrc
fi
fi

whoseargs="client"
while [ "x$1" != "x" ]; do
    case "$1" in
        /''*|\.*)       if [ "$whoseargs" = "client" ]; then
                    clientargs="$1"
                else
                    serverargs="$1"
                fi ;;
        --)     whoseargs="server" ;;
        *)      if [ "$whoseargs" = "client" ]; then
                    clientargs="$clientargs $1"
                else
                    serverargs="$serverargs $1"
                fi ;;
    esac
    shift
done

xinit $clientargs -- $serverargs

Nell'esempio appena visto, è sufficiente modificare le prime righe per definire delle opzioni predefinite, attribuendo un valore alle variabili clientargs e serverargs. La prima si riferisce alle opzioni per il client, la seconda per quelle del server.

Per esempio, volendo avviare il server, attraverso startx, con una risoluzione di 16 bit per pixel, basterebbe modificare le prime righe come nell'esempio seguente, in modo da fornire al server l'opzione -bpp 16.

...
userclientrc=$HOME/.xinitrc
userserverrc=$HOME/.xserverrc
sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc
sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc
clientargs=""
serverargs="-bpp 16"
...

Se il funzionamento dello script indicato come esempio non dovesse risultare chiaro, ecco in breve la descrizione delle varie fasi in esso contenute.

  1. Vengono definite delle variabili per le impostazioni predefinite.
  2. Si determina quale script utilizzare per l'avvio dei programmi client e quale per l'avvio del server.
  3. Nel ciclo while, vengono scanditi gli eventuali argomenti utilizzati per avviare startx, e se ne vengono trovati, questi prendono il sopravvento su quelli predefiniti.
  4. Alla fine viene avviato xinit con gli argomenti determinati in base all'elaborazione precedente.

Da quanto visto finora, si può intuire l'importanza dello script ~/.xinitrc. È il mezzo attraverso cui avviare più programmi client, ma non solo: alcuni programmi hanno lo scopo di configurare alcune impostazioni del server X e questo è l'unico posto comodo per metterli in esecuzione in modo automatico. Un esempio di questi programmi è xset.

Interdipendenza

Supponendo di aver avviato startx senza argomenti, si dovrebbe ottenere uno schema simile a quello seguente.

...---startx---xinit-+-.xinitrc---fvwm-+-FvwmPager
                     |                 `-GoodStuff
                     `-X

Come si può osservare, rispetto allo stesso esempio visto nella sezione precedente, si ha startx che avvia xinit che poi provvede al resto.

~/.xinitrc

Questo script è quello predefinito per l'avvio dei primi programmi client di un server X avviato attraverso il programma xinit.

Per preparare il proprio script personalizzato si può partire da quello predefinito della distribuzione Linux che dovrebbe trovarsi all'interno di /usr/X11R6/lib/X11/xinit/ (oppure /etc/X11/xinit/). Basta copiarlo nella propria directory home e cambiargli nome facendolo diventare ~/.xinitrc.

La preparazione di questo script è molto importante, se non altro perché permette di definire il tipo di interfaccia grafica.

Inizialmente occorre concentrarsi nella parte finale, quella che inizia dopo il commento: ``# start some nice programs''. Nel caso in cui il proprio sistema sia stato originalmente predisposto per utilizzare il gestore di finestre fvwm, le ultime righe potrebbero apparire come nell'esempio seguente.

# start some nice programs
xsetroot -solid SteelBlue
fvwm

Il programma xsetroot definisce lo sfondo, in questo caso solo un colore, e quindi termina immediatamente l'esecuzione. Il programma fvwm è il window manager da avviare. Eventualmente, prima di avviare il window manager si possono indicare altri programmi che si vuole siano già pronti in esecuzione quando si avvia il server. Per esempio, volendo avviare xclock basterebbe modificare le ultime righe come segue.

# start some nice programs
xsetroot -solid SteelBlue
xclock &
fvwm


L'avviamento di X Window System con il window manager fvwm e xclock aperto automaticamente.

In questo caso, xclock viene avviato in background perché altrimenti, a differenza di xsetroot, rimarrebbe in funzione fino al ricevimento di un segnale di interruzione, impedendo così l'avvio del gestore di finestre fino al termine del suo funzionamento.

La parte precedente dello script ~/.xinitrc potrebbe apparire come nell'estratto seguente.

#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
    xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
    xmodmap $usermodmap
fi

# start some nice programs
...

~/.Xmodmap

All'interno dello script ~/.xinitrc si incontrano di solito, tra le altre, le righe seguenti.

usermodmap=$HOME/.Xmodmap

sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f $usermodmap ]; then
    xmodmap $usermodmap
fi

In pratica, se esiste il file /usr/X11R6/lib/X11/xinit/.Xmodmap, viene eseguito il programma xmodmap utilizzando il suo contenuto, e quindi, se esiste il file ~/.Xmodmap, viene eseguito il programma xmodmap utilizzando il suo contenuto.

xmodmap si occupa di ridefinire la tastiera per l'utilizzo con X Window System.

Di solito non è necessario ridefinire la mappatura della tastiera, questa è già stata definita all'interno del file di configurazione /etc/XF86Config, al massimo potrebbe capitare la necessità a livello personale di ridefinire qualcosa per facilitare l'utilizzo di programmi che non riconoscono alcuni tasti o attribuiscono loro un significato diverso da quello che si vorrebbe.

Nella distribuzione Linux Slackware, il file /usr/X11R6/lib/X11/xinit/.Xmodmap contiene a titolo di esempio la ridefinizione del tasto utilizzato come [Backspace]. In realtà non servirebbe perché X Window System funziona correttamente anche senza questa dichiarazione.

keycode 22 = BackSpace

38.5 Definizione dello schermo

Per l'utilizzo normale che si può fare di X Window System non è necessario doversi rendere conto che ogni programma client deve specificare lo schermo su cui vuole apparire. Infatti, viene definita, in modo trasparente, la variabile di ambiente DISPLAY contenente le coordinate dello schermo predefinito. Modificando eventualmente il contenuto di questa variabile, si modifica l'indicazione dello schermo predefinito per i programmi che verranno avviati ricevendo quel valore.

È possibile informare un programma dello schermo su cui questo deve apparire attraverso un argomento standard, -display, descritto nel capitolo `x - utilizzo di client normali'.

38.6 Condivisione dello schermo

Quando si esegue una sessione telnet, si avvia un login su un altro computer, utilizzando il proprio come terminale o console remota. Quando si utilizza un server X è possibile condividere lo schermo del proprio monitor. Per farlo occorre autorizzare l'utilizzo del proprio schermo al computer remoto.

L'autorizzazione all'utilizzo del proprio schermo grafico da parte di programmi in esecuzione su altri computer connessi in rete può avvenire semplicemente in base ad un semplice elenco di indirizzi autorizzati, oppure attraverso altre forme di riconoscimento. Qui viene spiegato solo il modo più semplice e meno sicuro; per avere una visione completa delle possibilità si deve consultare Xsecurity(1).

$ xhost

xhost [[+|-]<nome>... ]

xhost [+|-]

xhost permette di aggiungere o togliere nomi dalla lista di computer e utenti a cui è concesso di utilizzare lo schermo grafico, senza utilizzare forme di autenticazione. Se non vengono utilizzati argomenti, xhost emette un messaggio informando sullo stato attuale del controllo degli accessi.

Opzioni

+

L'accesso è consentito a tutti.

-

L'accesso è consentito solo ai computer e agli utenti inclusi nell'elenco di quelli autorizzati.

[+]<nome>

Il nome indicato, può trattarsi di un computer o di un utente di un computer, è autorizzato ad utilizzare lo schermo. Il segno + iniziale è facoltativo.

-<nome>

Il nome indicato, può trattarsi di un computer o di un utente di un computer, non è autorizzato ad utilizzare lo schermo. Le connessioni in corso non vengono interrotte, ma le nuove connessioni vengono impedite.

Nomi

I nomi indicati nella sintassi di xhost hanno una struttura particolare:

<famiglia>:<indirizzo>

in pratica, per le connessioni su reti IP si utilizza la famiglia inet

Esempi

$ xhost +

Autorizza chiunque ad accedere.

$ xhost -

Limita la possibilità di accesso ai soli nomi inseriti nell'elenco di computer e utenti autorizzati.

$ xhost +inet:pippo.zigozago.dg

Consente al computer pippo.zigozago.dg di accedere al server grafico.

$ xhost -inet:pippo.zigozago.dg

Elimina il computer pippo.zigozago.dg dalla lista di quelli a cui è consentito accedere.

Note

Le funzionalità di X Window System non sono sempre presenti su tutte le piattaforme. In questo caso particolare, potrebbe darsi che non sia possibile regolare gli accessi ai singoli utenti.

Se si vuole concedere sistematicamente l'accesso a qualche computer, conviene inserire i comandi necessari all'interno del file ~/.xinitrc in modo che siano eseguiti ogni volta all'avvio del server X.

$ xon

xon <computer-remoto> [<opzioni>] [<comando>]

xon esegue un comando in un computer remoto utilizzando rsh, facendo in modo che venga utilizzato il server X locale. Si tratta in pratica di un modo abbreviato per eseguire una applicazione remota senza la necessità di utilizzare la solita opzione -display.

Prima di utilizzare xon è indispensabile sapere gestire rsh ( rsh).

Se attraverso gli attributi non viene indicato alcun comando da eseguire, xon tenta di avviare xterm -ls, in pratica una sessione xterm di login.

<!>   xon è in grado di funzionare solo quando il computer remoto è configurato in modo da consentire le connessioni remote attraverso rsh senza richiedere alcun tipo di riconoscimento. Sotto questo aspetto, xon è limitato all'utilizzo nelle reti chiuse in cui esiste un serio rapporto di fiducia tra le persone che vi accedono.

Alcune opzioni

-access

Prima di eseguire il comando indicato, utilizza xhost nel tentativo di autorizzare il computer remoto ad utilizzare il proprio server X. In effetti, lo scopo di xon è quello di facilitare l'esecuzione di programmi remoti ma con un I/O locale, cioè attraverso il server X con il quale si interagisce.

-debug

Quando xon viene avviato attraverso una finestra di terminale, utilizzando questa opzione si riceve lo standard output e lo standard error. In tal modo si possono conoscere eventuali segnalazioni di errore e qualunque altro output normale.

-screen <numero-schermo>

Esempi

$ xon pippo.zigozago.dg -access /usr/X11R6/bin/xcalc

Avvia il programma xcalc nel computer pippo.zigozago.dg e utilizza il server X locale. Prima di farlo, avvia xhost per consentire al computer remoto di accedere al proprio server X.

38.7 Tipi di carattere

In base a quanto indicato nel file di configurazione /etc/XF86Config nella sezione Files, i tipi di carattere (font) sono collocati nelle directory successive a /usr/X11R6/lib/X11/fonts/. All'interno di queste directory si trovano una serie di file contenenti i vari font e i loro nomi sono contenuti negli elenchi fonts.dir.

Il nome di un tipo di carattere è strutturato in un modo altamente descrittivo. Segue un esempio che viene scomposto.

-b&h-lucidatypewriter-medium-r-normal-sans-8-80-75-75-m-50-iso8859-1

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice