Capítulo 5. El sistema X Window

5.1. Sinopsis

FreeBSD usa X11 para proporcionar una potente interfaz gráfica. X11 es una implementación de código abierto del sistema X Window que incluye Xorg y XFree86™. En las versiones de FreeBSD hasta FreeBSD 4.10-RELEASE y FreeBSD 5.3-RELEASE el sistema X window que se instalará por defecto es XFree86™, el servidor X11 distribuido por el proyecto XFree86™. Después de FreeBSD 5.3-RELEASE el sistema X Window pasó a ser Xorg, el servidor X11 distribuido por la Fundación X.Org.

Este capítulo cubre la instalación y configuración de X11 poniendo énfasis en Xorg. Si quiere información sobre la configuración de XFree86™ o versiones anteriores de Xorg consulte las versiones archivadas del «Handbook» de FreeBSD en http://docs.FreeBSD.org/doc/.

Para mas información del hardware de vídeo que X11 soporta consulte la página web de Xorg.

Después de leer este capítulo usted sabrá:

  • Cuáles son los diferentes componentes del sistema X Window y como interoperan.

  • Cómo instalar y configurar X11.

  • Cómo instalar y usar diferentes gestores de ventanas.

  • Cómo usar tipos de letra TrueType® en X11.

  • Como preparar su sistema para iniciar la sesión de forma gráfica (XDM).

Antes de leer este capítulo debería:

Este capítulo cubre la instalación y configuración de los servidores X11 Xorg y XFree86™. La mayoría de los ficheros de configuración, órdenes y sintaxis son idénticos. En los casos en que haya diferencias se mostrará la sintaxis de Xorg y XFree86™.

5.2. Entender X

Usar X por primera vez puede resultar chocante para alguien familiarizado con otros entornos gráficos, como Microsoft® Windows® o Mac OS®.

No es necesario entender todos los detalles de los diferentes componentes de X y como interactúan, pero un conocimiento básico hace posible el sacarle más provecho a la potencia de X.

5.2.1. ¿Por qué X?

X no es el primer sistema de ventanas escrito para UNIX® pero es el más popular de todos ellos. El equipo original que desarrolló X trabajó en otro sistema de ventanas antes de escribir X. Ese sistema se llamó «W» (de «Window» que significa ventana en inglés). X era solo la siguiente letra en el alfabeto Romano.

X se puede llamar «X» «X Window System», «X11» y de otras formas. También puede usar el término «X Windows» para describir X11 si lo que quiere es ofender a algunas personas; si quiere saber más sobre esto consulte X(7).

5.2.2. El modelo cliente/servidor de X

X fue diseñado desde el principio pensando en redes y adoptó un modelo «cliente-servidor».

En el modelo de X el «servidor X» se ejecuta en la máquina que tiene el teclado, monitor y ratón. El servidor es responsable de manejar la pantalla, la entrada de datos a través del teclado, el ratón, etc. Cada aplicación X (como una XTerm o getenv(3)) es un «cliente». Un cliente manda mensajes al servidor como «Por favor dibuja una ventana en estas coordenadas» y el servidor devuelve mensajes como «El usuario ha pulsado el botón OK».

Sí solo hay un ordenador involucrado, como en una casa o una pequeña oficina, el servidor X y los clientes X seguramente se ejecutarán en el mismo sistema. Sin embargo, es perfectamente posible ejecutar el servidor X en un sistema de escritorio menos potente y ejecutar las aplicaciones X (los clientes) en, por ejemplo, la potente y cara máquina que sirve la oficina. En este panorama la comunicación entre el cliente X y el servidor tiene lugar a través de la red.

Esto confunde a algunas personas, porque la terminología es exactamente opuesta a lo que ellos esperan. Ellos esperan que el «servidor X» sea la máquina grande que hay en el sótano y que el «cliente X» sea la máquina de su mesa.

Es importante que recuerde que el servidor X es la máquina con el monitor y el teclado y que los clientes X son los programas que muestran las ventanas.

No hay nada en el protocolo que obligue a que el cliente y el servidor tengan que usar el mismo sistema operativo o incluso que estén en el mismo sistema. Es posible ejecutar un servidor X en Microsoft® Windows® o en el Mac OS® de Apple; de hecho hay varias aplicaciones libres y comerciales que hacen exactamente eso.

A partir de FreeBSD 5.3-RELEASE, el servidor X que se instala con FreeBSD es Xorg, que es libre y se distribuye bajo una licencia muy similar a la de FreeBSD. También hay servidores X comerciales para FreeBSD.

5.2.3. El gestor de ventanas

La filosofía de diseño de X es más parecida a la de UNIX®: «herramientas, no normas». Esto significa que X no impone cómo debe hacerse una tarea. En lugar de eso proporciona herramientas al usuario y es responsabilidad suya decidir qué hacer con ellas.

Esta filosofía se extiende a X; no impone como deben verse las ventanas en la pantalla, cómo moverlas con el ratón, qué teclas deberían usarse para moverse entre ventanas (por ejemplo Alt+Tab, en Microsoft® Windows®), cómo deben ser las barras de título en cada ventana, si tienen o no botón de cierre, etc.

En lugar de eso X delega esta responsabilidad en una aplicación llamada «gestor de ventanas». Hay docenas de gestores de ventanas disponibles para X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, etc. Cada uno de estos gestores de ventanas tiene un aspecto diferente; algunos soportan «escritorios virtuales»; otros permiten personalizar las teclas para manejar el escritorio; otros tienen un botón de «Inicio» o algo similar; otros tienen «diseños modificables», permitiendo un cambio completo del aspecto mediante un nuevo diseño. Estos gestores de ventanas, y muchos otros, están en la categoría x11-wm de los ports.

Además, los entornos de escritorio KDE y GNOME tienen sus propios gestores de ventanas integrados con el escritorio.

Cada gestor de ventanas tiene diferentes mecanismos de configuración; en algunos debe escribir el fichero de configuración a mano, otros tienen herramientas gráficas para la mayor parte de la configuración; y al menos uno (Sawfish) tiene un fichero de configuración escrito en un dialecto del lenguaje Lisp.

Política de foco

Otra responsabilidad del gestor de ventanas es la «política de foco» del ratón. Todos los sistemas de ventanas necesitan algo para elegir una ventana activa que recibirá los eventos y también debieran indicar claramente qué ventana está activa.

Una política muy popular es la de «click to focus». Este es el modelo que utiliza Microsoft® Windows®, en el que una ventana se convierte en activa al recibir un clic del ratón.

X no tiene ninguna política de foco. En lugar de eso el gestor de ventanas controla qué ventana tiene el foco en todo momento. Los diferentes gestores de ventanas tienen diferentes políticas de foco. Todos soportan la política «clic-para-foco» y la mayoría de ellos también soportan otros métodos.

Las políticas de foco más populares son:

el-foco-sigue-al-ratón (focus-follows-mouse)

La ventana que esta bajo el puntero del ratón es la ventana que tiene el foco. No es necesario que la ventana esté encima de las demás ventanas. El foco se cambia al apuntar a otra ventana, aunque no es necesario hacer clic en ella.

foco-descuidado sloppy-focus

Esta política es una pequeña extensión de «el-foco-sigue-al-ratón». En «el-foco-sigue-al-ratón» si el ratón se mueve sobre la ventana raíz (o fondo) ninguna ventana tiene el foco y las pulsaciones del teclado se perderán. Con la política «foco-descuidado» el foco sólo cambia cuando el cursor entra en una nueva ventana y no cuando sale de la ventana actual.

click-para-foco click-to-focus

La ventana activa se selecciona con un clic del ratón. La ventana se puede «levantar» y aparecer delante de las demás ventanas. Todas las pulsaciones de teclado serán redirigidas a esa ventana aunque el cursor se mueva a otra ventana.

Muchos gestores de ventanas soportan otras políticas o variaciones de estas. Consulte la documentación del propio gestor de ventanas.

5.2.4. Widgets

La idea de X de hacer herramientas en vez de normas y se extiende a los «widgets» que se ven en la pantalla de cada aplicación.

«Widget» es un término que abarca todos los objetos en el interfaz de usuario que pueden pulsarse con el ratón manipularse de alguna manera: botones, «check boxes», listas, etc. Microsoft® Windows® los llama «controles».

Microsoft® Windows® y Mac OS® de Apple tienen una política de «widgets» muy rígida. Se supone que los desarrolladores de aplicaciones comparten el aspecto. En X no se consideró imponer un estilo gráfico o un conjunto de «widgets» al que adherirse.

Como resultado no se puede esperar que las aplicaciones de X tengan un aspecto homogéneo. Hay varios conjuntos de «widgets» y variaciones muy populares como el «widget» Athena creado en el MIT, Motif® (donde los «widgets» de Microsoft® Windows® fueron modelados, con todos los bordes biselados y tres tonos de gris), OpenLook, y otros.

Las aplicaciones más modernas de X usan un conjunto de «widgets» con mejor aspecto, o Qt, utilizado por KDE, o GTK+, que usa el proyecto GNOME. Se intenta que el aspecto del escritorio de UNIX® sea parecido, lo que hace la vida más fácil al usuario novato.

5.3. Instalar X11

Xorg es la implementación de X11 por omisión en FreeBSD. Xorg está basado en código de XFree86™ 4.4RC2 y X11R6.6. La versión de Xorg que se distribuye actualmente en la Colección de Ports de FreeBSD es la 7.7.

Para compilar e instalar Xorg desde la colección de ports:

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

Si quiere compilar e instalar Xorg entero, asegúrese de tener como mínimo 2GB de espacio disponible.

Si lo prefiere puede instalar Xorg con packages. Cuando utilice la capacidad de pkg_add(1) para instalar packages que descargue remotamente recuerde que no debe escribir el número de versión. pkg_add(1) descargará automáticamente la última versión de la aplicación..

Veamos qué es lo que hay que hacer para descargar e instalar el package de Xorg:

# pkg_add -r xorg

El anterior ejemplo instala la distribución X11 completa, es decir, servidores, clientes, tipos de letra, etc. Hay packages y ports con cada uno de esos elementos por separado.

En el resto del capítulo se explica cómo configurar X11 y cómo configurar un entorno de escritorio que le resulte productivo.

5.4. Configuración de X11

5.4.1. Antes de empezar

Antes de configurar X11 necesitará la siguiente información sobre el sistema:

  • Especificaciones del monitor

  • Chipset de la tarjeta de vídeo

  • Memoria de la tarjeta de vídeo

X11 usa las especificaciones del monitor para determinar la resolución y la frecuencia de refresco a la que funcionará. Estas especificaciones se pueden encontrar normalmente en la documentación que viene con el monitor o en la web del fabricante. Se necesitan dos rangos de números: la frecuencia de refresco horizontal y la vertical.

El chipset de la tarjeta de vídeo define qué controlador utilizará X11 para comunicarse con el hardware gráfico. Con la mayoría de chipsets es posible detectarlo automáticamente pero es útil saberlo en caso de que la detección automática no funcione.

La memoria de la tarjeta gráfica determina la resolución y la profundidad de color a la que el sistema funcionará. Es importante saberlo para que el usuario conozca las limitaciones del sistema.

5.4.2. Configurar X11

A partir de la versión 7.3 Xorg puede funcionar sin utilizar fichero de configuración; basta con teclear en el prompt:

% startx

Si no funciona, o si la configuración por omisión no es aceptable, hay que configurar X11 a mano.

Ciertos entornos de escritorio como GNOME, KDE o XFce tienen herramientas que permiten al usuario configurar fácilmente parámetros de la pantalla como la resolución. Si la configuración por omisión no sirve y tiene idea de instalar un entorno de escritorio puede seguir adelante tranquilamente con la instalación del entorno de escritorio y utilice la herramienta que el software que instale le facilite.

La configuración de X11 es un proceso que consta de múltiples pasos. El primero es generar un fichero inicial de configuración. Como superusuario teclee:

# Xorg -configure

Esto generará un fichero de configuración bastante esquemático pero completo en /root llamado xorg.conf.new (si ha utilizado su(1) o ha entrado directamente como superusuario afectará al valor que tenga la variable de directorio $HOME). X11 intentará probar el hardware gráfico del sistema y escribir un fichero de configuración en el que registrar los controladores de dispositivo adecuados para hacer funcionar el harware que haya detectado.

El siguiente paso es probar el fichero generado para verificar si Xorg puede funcionar con el hardware gráfico del sistema. Para ello teclee:

# Xorg -config xorg.conf.new

Si aparece una rejilla negra y gris junto con el cursor del ratón con forma de X es que la configuración ha tenido éxito. Para salir de la prueba pulse simultáneamente Ctrl+Alt+Retroceso.

Si el ratón no funciona tendrá que configurarlo antes de continuar. Consulte la Configuratión del ratón en el capítulo de instalación de FreeBSD.

Después modifique el fichero xorg.conf.new a su gusto. Abra el fichero con un editor de texto (como emacs(1) o ee(1)). Primero añada las frecuencias del monitor. Estas suelen estar expresadas en frecuencia de refresco horizontal y vertical. Estos valores se añaden al fichero xorg.conf.new en la sección "Monitor":

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

Las palabras HorizSync y VertRefresh podrían no existir en el fichero de configuración. Si no existen es necesario añadirlas con la frecuencia horizontal correcta puesta después de la palabra HorizSync y la frecuencia vertical correcta después de la palabra VertRefresh. En el ejemplo anterior se pusieron las frecuencias del monitor.

X permite usar las características DPMS (Energy Star) con los monitores que lo soportan. El programa xset(1) controla el «timeout», y puede forzar los modos «standby», suspendido o apagado. Si desea habilitar las características DPMS para su monitor tendrá que añadir la siguiente línea en la sección monitor:

        Option       "DPMS"

Agrege a su xorg.conf.new la resolución por omisión y la profundidad de color deseada. Esto se define en la sección "Screen":

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

La palabra DefaultDepth describe la profundidad de color a la que arrancará por omisión. Esto puede sobrescribirse con el argumento -bpp de Xorg(1) (o XFree86(1)). La palabra Modes describe la resolución a la que funcionará para esa profundidad de color. Observe que sólo los modos estándar VESA están soportados por el hardware gráfico. En el ejemplo anterior la profundidad de color es 24 bits por pixel. En esta profundidad de color la resolución aceptada es 1024 por 768 pixels.

Para acabar guarde el fichero de configuración y pruébelo usando el modo de prueba descrito anteriormente

Una de las herramientas disponibles para ayudarle con el proceso de solución de problemas es el fichero de «logs», que contiene información de cada dispositivo al que el servidor X11 se conecta. Los «logs» (o bitácoras) de Xorg se pueden encontrar en /var/log/Xorg.0.log El nombre exacto del fichero de «log» puede variar entre Xorg.0.log y Xorg.8.log y así sucesivamente.

Si todo ha ido bien ha llegado el momento de ubicar el fichero de configuración donde Xorg(1) pueda encontrarlo. Puede dejarlo en /etc/X11/xorg.conf o /usr/local/etc/X11/xorg.conf.

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

El proceso de configuración de X11 ha concluido. Arranque Xorg mediante startx(1). Puede también arrancar el servidor X11 utilizando xdm(1).

Existe también una herramienta gráfica de configuración en X11, xorgcfg(1). Permite definir de forma interactiva su configuració mediante la elección de los controladores y las opciones adecuadas. Este programa también puede usarse desde consola mediante la orden xorgcfg -textmode. Para más información consulte la página de manual de xorgcfg(1).

Puede usar también xorgconfig(1). Este programa es una herramienta orientada a consola que es bastante menos atractiva para el usuario, pero que puede funcionar en situaciones en las que otras herramientas no sirven.

5.4.3. Configuración avanzada

5.4.3.1. Configuración de chipsets gráficos Intel® i810

Para configurar los chipsets integrados Intel® i810 es necesario el interfaz de programación AGP agpart para que X11 pueda usarla. Consulte la página de manual de agp(4) para más información.

Hecho esto podrá configurar el hardware como cualquier otra tarjeta gráfica. Tenga en cuenta que si en un sistema que no tenga el controlador agp(4) intenta cargar el módulo del kernel con kldload(8) no va a funcionar. El controlador tiene necesariamente que estar en el kernel desde el mismo momento del arranque, cosa que puede obtenerse bien compilando un nuevo kernel, bien utilizando /boot/loader.conf.

5.4.3.2. Añadir una pantalla panorámica a nuestro sistema

A lo largo de esta sección se asumen unos mínimos de soltura con ciertos aspectos de configuración avanzada. Si Si las herramientas estándar de configuración que se han descrito previamente no le ayudan a tener una configuración funcional busque en los ficheros de log, ahí encontrará información suficiente para lograrlo. Tendrá que utilizar un editor de texto a lo largo de estas instrucciones.

Los formatos actuales de pantalla panorámica, (también conocidas como «Widescreen», WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, etc, soportan formatos de 16:10 y 10:9 o aspectos-tasa que pueden ser problemáticos. Veamos algunos ejemplos de resoluciones de pantalla en formatos 16:10:

  • 2560x1600

  • 1920x1200

  • 1680x1050

  • 1440x900

  • 1280x800

At some point, it will be as easy as adding one of these resolutions as a possible Mode in the Section "Screen" as such:

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

Xorg se basta y se sobra para recabar la información de resolución de su pantalla panorámica mediante la información I2C/DDC, así que sabe qué frecuencias y resoluciones puede manejar el monitor.

Si esas ModeLines no existen en los controladores tendrá usted que ayudar un poco a Xorg. Lea atentamente el contenido de /var/log/Xorg.0.log; de él podrá extraer suficiente información como para crear un ModeLine que funcione. Todo lo que tiene que hacer es buscar información que se parezca a esta:

(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

Esta información se llama información EDID. Para crear una ModeLine a partir de estos datos solamente tiene que poner los números en el orden correcto:

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

Así que la ModeLine en la Section "Monitor" del ejemplo tendría este aspecto:

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

Como ve, con un poco de edición hemos culminado la tarea y X debería ya poder arrancar sin problemas en su nuevo monitor panorámico.

5.5. Uso de tipos en X11

5.5.1. Tipos Type1

Los tipos que X11 incluye por omisión no son precisamente ideales para las aplicaciones típicas. Los tipos grandes para presentaciones aparecen dentados y con un aspecto poco profesional, mientras que los tipos pequeños en getenv(3) son prácticamente ilegibles. Sin embargo hay varios tipos de letra libres Type1 de alta calidad (PostScript®) que se pueden usar con X11. Por ejemplo los tipos URW (x11-fonts/urwfonts) incluyen una versión de alta calidad de los tipos estándar Type 1 (Times Roman™, (Helvetica™, (Palatino™, y muchas otras). Las Freefonts (x11-fonts/freefonts ) incluyen muchas más pero la mayoría están pensadas para usarse con software gráfico como el Gimp y no son lo bastante completos para usarse como tipos de pantalla. Además X11 se puede configurar para usar tipos TrueType® con un esfuerzo mínimo. Para más detalles sobre esto consulte la página del manual X(7) o la sección de tipos TrueType®.

Para instalar los tipos Type1 desde los ports ejecute las siguientes órdenes:

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

Proceda del mismo modo con los FreeFonts o cualesquiera otras. Para que el servidor X las detecte añada la siguiente línea al fichero de configuración de X (/etc/X11/xorg.conf:

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

o bien desde una emulación de terminal durante una sesión X ejecute

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

Esto funcionará hasta que la sesión X se cierre a menos que lo añada a su fichero de inicio (~/.xinitrc en el caso de una sesión startx normal o ~/.xsession si hace login desde un gestor gráfico como XDM). Una tercera forma sería usando el nuevo fichero /usr/X11R6/etc/fonts/local.conf: consulte la sección de anti-aliasing.

5.5.2. Tipos TrueType®

Xorg se diseñó pensando en que utilizara tipos TrueType®. Hay dos módulos diferentes que pueden habilitar esta opción. El módulo freetype se usa en en este ejemplo porque es más consistente con el resto de «back-ends» de representación. Para habilitar el módulo freetype debe añadir la siguiente línea a la sección "Module" del fichero /etc/X11/xorg.conf.

Load "freetype"

Ahora haga un directorio para los tipos TrueType® (por ejemplo /usr/X11R6/lib/X11/fonts/TrueType) y copie todos los tipos TrueType® en este directorio. Recuerde que los tipos TrueType® no se pueden coger directamente de un Macintosh®; tienen que estar en formato UNIX®/MS-DOS®/Windows® para usarlas con X11. Una vez que los ficheros se hayan copiado en este directorio use ttmkfdir para crear un fichero fonts.dir, para que el representador de tipos de X sepa que se han instalado estos ficheros nuevos. ttmkfdir forma parte de la Colección de Ports de FreeBSD: x11-fonts/ttmkfdir.

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

Ahora añada el directorio TrueType® a la ruta de tipos. Esto es igual que lo anteriormente descrito sobre los tipos Type1. Ejecute:

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

o añada una línea FontPath en su /etc/X11/xorg.conf.

Esto es todo. Ahora getenv(3), Gimp, StarOffice™ y el resto de aplicaciones X debieran reconocer los tipos TrueType® instalados. Los tipos muy pequeños (como el texto en una pantalla con alta resolución viendo una página web) y los tipos muy grandes (Dentro de StarOffice™) se verán muchísimo mejor ahora.

5.5.3. Tipos Anti-Aliasing

Los «tipos anti-aliasing» han estado en X11 desde XFree86™ 4.0.2. Aunque la configuración de los tipos era incómoda antes de XFree86™ 4.3.0. A partir de XFree86™ 4.3.0 todos los tipos de X11 que se encuentren en /usr/local/lib/X11/fonts/ y ~/.fonts/ están disponibles automáticamente para aplicaciones que soporten Xft. No todas las aplicaciones soportan Xft pero muchas ya tienen soporte Xft. Ejemplos de aplicaciones que lo soportan son Qt 2.3 o superior (el «toolkit» del escritorio KDE), GTK+ 2.0 o superior (el «toolkit» del escritorio GNOME ) y Mozilla 1.2 o superior.

Para controlar qué tipos «anti-aliasing» o configurar las propiedades «anti-aliasing» crée (o edite, si ya existe) el fichero /usr/local/etc/fonts/local.conf. Se pueden modificar diversas opciones avanzadas del sistema de tipos Xft usando este fichero; esta sección describe solo algunas posibilidades simples. Para más detalles consulte fonts-conf(5).

Este fichero tiene que estar en formato XML. Preste especial atención a las mayúsculas y minúsculas y asegúrese de que las etiquetas están cerradas correctamente. El fichero empieza con la típica cabecera XML seguida de una definición DOCTYPE y después la etiqueta <fontconfig>:

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

Como se ha dicho antes todos los tipos en /usr/local/lib/X11/fonts/ y en ~/.fonts/ están ya disponibles para las aplicaciones que soporten Xft. Si usted desea añadir otro directorio además de estos dos árboles de directorios añada una línea similar a esta en el fichero /usr/local/etc/fonts/local.conf:

<dir>/ruta/de/mis/tipos</dir>

Después de añadir los nuevos tipos, y en especial los nuevos directorios de tipos, debe ejecutar la siguiente orden para reconstruir la caché de tipos:

# fc-cache -f

Los «tipos anti-aliasing» hacen los bordes ligeramente borrosos, lo que hace que el texto muy pequeño sea más legible y elimina los escalones del texto grande pero puede causar fatiga visual aplicada al texto normal. Para excluir los tipos de menos de 14 puntos del «anti-aliasing» incluya las siguientes líneas:

        <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>

El espacio entre algunos tipos también podría ser inapropiado con «anti-aliasing», por ejemplo en el caso de KDE. Una posible solución para esto es forzar que el espacio entre los tipos sea 100. Añada las siguientes líneas:

       <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>

(Esto selecciona los otros nombres comunes para «tipos fixed» como "mono"); añada también lo siguiente:

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

Algunos tipos, como Helvetica, podrían tener problemas con «anti-aliasing». Normalmente esto se manifiesta en tipos que parecen cortados verticalmente por la mitad. En el peor de los casos podría causar que el funcionamiento de aplicaciones como Mozilla se interrumpiese. Para evitar esto puede añadir lo siguiente 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>

Una vez que haya terminado de editar local.conf asegúrese de que el fichero termina con la etiqueta </fontconfig>. Si no lo hace los cambios que haya hecho serán ignorados.

Los tipos por omisión que vienen con X11 no son los ideales para «anti-aliasing». Puede encontrar otros mucho mejores en el port x11-fonts/bitstream-vera. Este port instalará el fichero /usr/local/etc/fonts/local.conf si aun no se ha creado. Si el fichero existe el port creara el fichero /usr/local/etc/fonts/local.conf-vera. Combine el contenido de este fichero con /usr/local/etc/fonts/local.conf y los tipos Bitstream reemplazarán automáticamente los tipos por defecto por X11 Serif, Sans Serif y Monospaced.

Por si esto fuera poco los usuarios pueden añadir sus propios ajustes mediante sus ficheros personales .fonts.conf. Los usuarios que deseen hacerlo deberán crear un fichero ~/.fonts.conf. Este fichero tiene que estar también en formato XML.

Un último punto: con pantallas LCD sería deseable un muestreo de subpixel, que consiste en configurar los componentes (separados horizontalmente) rojo, verde y azul para mejorar la resolución horizontal; los resultados pueden ser impresionantes. Para habilitarlo añada la siguiente línea a local.conf:

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

Dependiendo del tipo de pantalla rgb podría ser bgr o vrgb o vbgr: experimente y elija cuál de ellos funciona mejor.

Una vez concluido el proceso «anti-aliasing» se debería activar la próxima vez que arranque X, aunque los programas necesitan saber como utilizarlo. En este momento el «toolkit» Qt es capaz de hacerlo, así que KDE entero puede usar «tipos anti-aliasing». GTK+ y GNOME también pueden usar «tipos anti-aliasing» mediante el «applet» «Font» (consulte Tipos «Anti-aliased» en GNOME para más detalle). Por omisión Mozilla 1.2 y versiones siguientes usarán automáticamente «tipos anti-aliasing». Para deshabilitarlos recompile Mozilla usando el parámetro -DWITHOUT_XFT.

5.6. El gestor de pantalla X

5.6.1. Descripción

El gestor de pantalla X (XDM) es una parte opcional del sistema X Window que se usa para la gestión de sesiones. Esto es útil en diferentes situaciones, como «Terminales X» con escritorios mínimos y grandes servidores de red. Como X Window System es independiente del protocolo y de la red hay muchas configuraciones posibles para ejecutar clientes y servidores X en diferentes equipos conectados a una red. XDM dispone de un interfaz gráfico para elegir a qué pantalla se quiere conectar y pedir la información de autentificación como el nombre de usuario y le contraseña.

XDM ac6túa como proveedor de la misma funcionalidad que getty(8) (consulte Configuración para más detalles). Esto quiere decir que se encarga de las entradas al sistema en la pantalla a la que está conectado y arranca el gestor de sesiones para que lo utilice el usuario (normalmente un gestor de ventanas X). XDM espera a que el programa termine, envía la señal de que el usuario ha terminado y que se le debería desconectar de la pantalla. En este punto XDM puede mostrar las pantallas de entrada al sistema y de selección de pantalla para que el siguiente usuario intente acceder al sistema.

5.6.2. Uso de XDM

El dæmon XDM está en /usr/local/bin/xdm. Este programa se puede arrancar en cualquier momento como root y empezará a gestionar la pantalla X en la máquina local. Si se quiere que XDM arranque cada vez que la máquina se encienda puede hacerlo añadiendo una entrada a /etc/ttys. Para más información sobre el formato y uso de este fichero consulte la Agregando una entrada a /etc/ttys. Por omisión hay una línea en /etc/ttys que permite arrancar el dæmon XDM en una terminal virtual:

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

Por omisión esta entrada está deshabilitada; para habilitarla cambie el campo 5 de off a on y reinicie init(8) usando los pasos descritos en la Forzar init a que relea /etc/ttys. El primer campo es el nombre de la terminal que que gestiona el programa, ttyv8. Es decir, XDM empezará a ejecutarse en la terminal virtual número 9.

5.6.3. Configuración de XDM

El directorio de configuración de XDM está en /usr/local/lib/X11/xdm. En este directorio hay varios ficheros que se usan para intervenir en el comportamiento y la apariencia de XDM. Normalmente tendrá estos ficheros:

Fichero Descripción

Xaccess

Reglas de acceso para clientes.

Xresources

Recursos de X por omisión.

Xservers

Lista de pantallas locales y remotas a gestionar.

Xsession

«script» por omisión para el acceso al sistema.

Xsetup_*

«script» para lanzar aplicaciones antes del acceso al sistema.

xdm-config

Configuración de todas las pantallas de este equipo.

xdm-errors

Errores generados por el programa servidor.

xdm-pid

El ID de proceso del XDM que está funcionando.

En este directorio también hay unos cuantos programas y «scripts» que se usan para arrancar el escritorio cuando XDM se está ejecutando. El objetivo de cada uno de estos ficheros será descrito brevemente. La sintaxis exacta y el uso de todos estos ficheros se describe en xdm(1).

La configuración por omisión es una simple ventana rectangular de acceso al sistema con el nombre de la máquina en la parte superior en un tipo de letra grande y unos campos para que introduzca«Login:» y «Password:» debajo. Este es un buen punto de partida para aprender a cambiar el aspecto de las pantallas de XDM.

5.6.3.1. Xaccess

El protocolo para conectar con las pantallas controladas por XDM se llama «X Display Manager Connection Protocol» (XDMCP). Este fichero es un conjunto de reglas para controlar las conexiones XDMCP desde otros equipos. Por defecto permite a cualquier cliente conectar, pero eso no importa a menos que xdm-config se cambie para escuchar conexiones remotas. La configuración básica no permite conexiones desde ningún cliente.

5.6.3.2. Xresources

Este es el fichero de opciones por defecto para el selector de pantalla y acceso al sistema. Aquí es donde se puede modificar la apariencia del programa de «login». El formato es idéntico al fichero de opciones por defecto descrito en la documentación de X11.

5.6.3.3. Xservers

Una lista de pantallas remotas entre las que elegir.

5.6.3.4. Xsession

Este es el «script» de sesión que por defecto XDM arrancará después de que el usuario acceda al sistema. Normalmente cada usuario tendrá una versión personalizada del «script» de sesión en ~/.xsession que sobreescribe el «script» por defecto.

5.6.3.5. Xsetup_*

Estos se arrancarán automáticamente antes de que se muestre el interfaz de selección o de acceso al sistema. Hay un «script» por cada gestor de ventanas disponible llamados Xsetup_ seguido por el número de pantalla local (por ejemplo Xsetup_0). Normalmente estos «scripts» arrancan uno o dos programas en segundo plano, por ejemplo xconsole.

5.6.3.6. xdm-config

Este fichero contiene las opciones por defecto aplicables a todas las pantallas que gestiona la instalación.

5.6.3.7. xdm-errors

Este fichero contiene la salida de los servidores X que XDM intente arrancar. Si alguna pantalla que XDM intente arrancar se cuelga por alguna razón este es un buen sitio para buscar los mensajes de error. Estos mensajes también se escriben en el fichero ~/.xsession-errors del usuario en cada sesión.

5.6.4. Ejecutar un servidor de pantalla a través de la red

Para que otros clientes puedan conectar al servidor de pantalla edite las reglas de acceso y habilite la escucha en la conexión. Por omisión se aplican restricciones. Si quiere que XDM escuche conexiones comente la siguiente línea en el fichero 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

y después reinicie XDM. Recuerde que los comentarios en los ficheros de opciones por defecto comienzan con el carácter«!» en vez del típico «\#». Puede aplicar controles más restrictivos. Consulte las opciones de ejemplo en Xaccess y la página de manual de xdm(1).

5.6.5. Alternativas a XDM

Hay algunas alternativas al programa por defecto XDM. Una de ellas, kdm (que se incluye con KDE) se describe más adelante en este capítulo. kdm ofrece muchas ventajas visuales y funcionalidad para permitir a los usuarios elegir su gestor de ventanas en el momento del acceso al sistema.

5.7. Entornos de escritorio

Está sección describe los diferentes entornos de escritorio disponibles para X en FreeBSD. Un «entorno de escritorio» puede ser cualquier cosa que vaya desde un simple gestor de ventanas hasta una completa «suite» de aplicaciones de escritorio como KDE o GNOME.

5.7.1. GNOME

5.7.1.1. Acerca de GNOME

GNOME es un entorno de escritorio amigable que permite a los usuarios una configuración fácil de sus sistemas. GNOME incluye un panel (para iniciar las aplicaciones y mostrar su estado), un escritorio (donde pueden colocarse los datos y las aplicaciones), un conjunto de herramientas y aplicaciones de escritorio estándar y un conjunto de convenciones para facilitar la creación de aplicaciones que sean consistentes y colaboren unas con otras. Los usuarios de otros sistemas operativos o entornos pueden sentirse como en casa utilizando el poderoso entorno gráfico GNOME. Encontrará más información sobre GNOME en FreeBSD en la página del Proyecto FreeBSD GNOME.

5.7.1.2. Instación de GNOME

GNOME puede instalarse fácilmente utilizando packages precompilados o desde la Colección de Ports:

Para instalar el paquete de GNOME desde la red, simplemente teclee:

# pkg_add -r gnome2

Para compilar GNOME a partir del código fuente, es decir, como port:

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

Una vez GNOME esté instalado debe indicarle al servidor X como iniciar GNOME para convertirlo en el gestor de ventanas predeterminado.

La manera más fácil de arrancar GNOME es con GDM, el gestor de pantalla de GNOME. GDM, que se instala con el escritorio GNOME al ser parte del mismo (aunque venga desactivado por omisión) se activa añadiendo gdm_enable="YES" a /etc/rc.conf. Tras reiniciar, GNOME arrancará automáticamente al acceder al sistema; no es necesario configurar nada más.

Puede arrancar GNOME también desde la línea de órdenes configurando adecuadamente un fichero llamado .xinitrc. Si ya tiene un .xinitrc personalizado tendrá que reemplazar la línea que arranca el gestor de ventanas anterior por otra que contenga /usr/local/bin/gnome-session. Si no ha modificado el fichero previamente basta con que teclée lo siguiente:

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

Después teclée startx y debería iniciarse el entorno de escritorio GNOME.

Si utiliza un gestor de pantalla antíguo, como XDM, lo anteriormente descrito no funcionará. Cree un fichero ejecutable .xsession con la misma orden en él. Edite el fichero y sustituya la orden para iniciar su actual gestor de ventanas por /usr/local/bin/gnome-session:

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

Otra opción es configurar el gestor de pantalla para que permita seleccionar el gestor de ventanas durante el acceso; la sección de detalles de KDE explica cómo hacerlo para kdm, el gestor de pantalla de KDE.

5.7.1.3. Tipos «Anti-aliased» en GNOME

X11 soporta «anti-aliasing» a través de la extensión «RENDER». Gtk+ 2.0 y superiores (el «toolkit» utilizado por GNOME) disponen de esta funcionalidad. La configuración del «anti-aliasing» se describe en la Tipos Anti-Aliasing. Una vez configurado el software es posible utilizar «anti-aliasing» en el entorno de escritorio GNOME. Sólamente tiene que ir a Applications  Desktop Preferences  Font, y seleccione entre Best shapes, Best contrast, o Subpixel smoothing (LCDs). En el caso de una aplicación Gtk+ que no forme parte del escritorio GNOME asigne a la variable de entorno GDK_USE_XFT un valor de 1 antes de arrancar el programa.

5.7.2. KDE

5.7.2.1. Acerca de KDE

KDE es un entorno de escritorio contemporáneo y fácil de usar. Veamos alguna de las cosas que KDE brinda al usuario:

  • Un bello escritorio contemporáneo.

  • Un escritorio completamente transparente en red.

  • Un sistema de ayuda integrado que facilita un acceso adecuado y consistente a la ayuda durante el uso del escritorio KDE y sus aplicaciones.

  • Un aspecto consistente de todas las aplicaciones KDE.

  • Menús y barras de herramientas estándares, teclas programables, esquemas de color, etc.

  • Internacionalización: KDE está disponible en más de 40 idiomas.

  • Un diálogo de configuración del escritorio centralizado y consistente.

  • Un gran número de útiles aplicaciones KDE.

KDE incluye un navegador web llamado Konqueror, que es un sólido competidor del resto de navegadores web existentes en sistemas UNIX®. Puede encontrar más información sobre KDE en el sitio web de KDE. Si quiere información específica y recursos sobre KDE en FreeBSD consulte el sitio web del equipo de KDE en FreeBSD.

Hay dos versiones de KDE en FreeBSD: la versión 3 lleva ya bastante tiempo en el sistema y es muy estable en todos los sentidos. La versión 4, la nueva generación de KDE, también está en los ports. Si quiere puede instalar ambas versiones simultáneamente.

5.7.2.2. Instalación de KDE

Igual que sucede con GNOME o cualquier otro entorno de escritorio puede instalarlo como package o desde la Colección de Ports:

Si quiere instalar como package KDE3 (desde la red) escriba:

# pkg_add -r kde

Si quiere instalar como package KDE4 (desde la red) escriba:

# pkg_add -r kde4

pkg_add(1) descargará automáticamente la versión más reciente de la aplicación.

Si lo que desea es compilar KDE3 desde el código fuente utilice el árbol de ports:

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

Si lo que desea es compilar KDE4 desde el código fuente utilice el árbol de ports:

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

Una vez instalado KDE debe indicarle al servidor X cómo iniciar la aplicación para que se convierta en el gestor de ventanas por defecto. Edite .xinitrc:

Para KDE3:

% echo "exec startkde" > ~/.xinitrc

Para KDE4:

% echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc

A partir de ahora cuando se llame al sistema X Window con startx el escritorio será KDE.

Si utiliza un gestor de pantalla, como por ejemplo xdm, la configuración es ligeramente diferente. En vez de lo antedicho edite .xsession. Las instrucciones para kdm se decribirán más adelante en este capítulo.

5.7.3. Más detalles sobre KDE

Una vez KDE está instalado en el sistema la mayoría de las cosas se pueden ir descubriendo utilizando las páginas de ayuda o sencillamente a golpe de ratón en los diversos menús. Los usuarios de Windows® y Mac® se sentiráan como en casa.

La mejor referencia para KDE es la documentación «on-line». KDE incluye su propio navegador, Konqueror, docenas de útiles aplicaciones y una extensa documentación. El resto de esta sección trata sobre cuestiones técnicas que son difíciles de aprender mediante una exploración al azar.

5.7.3.1. El gestor de pantalla de KDE

El administrador de un sistemas multiusuario puede querer ofrecer a sus usuarios una pantalla de bienvenido que se les presente al acceder al sistema. Tal y como se ha explicado previamente puede usar XDM. De todos modos KDE incluye su propia alternativa, alternative, kdm, diseñado pensando en ser más atractivo y tener más opciones que ofrecer en el momento del acceso al sistema. Más concretamente ofrece a los usuarios la posibilidad de elegir mediante un menú qué entorno de escritorio (KDE, GNOME, o cualquier otro) quiere ejecutar el usuario una vez validado.

Si quiere activar kdm debe modificar la entrada de ttyv8 en /etc/ttys. La línea debe quedar del siguiente modo:

Si va a usar KDE3:

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

En el caso de KDE4:

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

5.7.4. XFce

5.7.4.1. Acerca de XFce

XFce es un entorno de escritorio basado en el «toolkit» GTK utilizado por GNOME pero es mucho más ligero y está pensado para aquellos que quieran un escritorio sencillo, eficiente y fácil de utlizar y configurar. Visualmente es muy parecido a CDE, que podemos encontrar en sistemas UNIX® comerciales. Alguna de las caracterésticas de XFce son:

  • Un escritorio sencillo y fácil de utilizar.

  • Completamente configurable utilizando el ratón, con arrastrar y soltar, etc.

  • Panel principal similar al de CDE, con menús, «applets» y accesos directos a las aplicaciones.

  • Gestor de ventanas integrado, gestor de ficheros, gestor de sonido, módulo de compatibilidad con GNOME, y muchas cosas más.

  • Aspecto configurable (utiliza GTK).

  • Rápido, ligero y eficiente: ideal para máquinas viejas, lentas o máquinas con memoria limitada.

Puede encontrar más información sobre XFce en el sitio web de XFce.

5.7.4.2. Instalar XFce

En el momento de escribir este texto existe un paquete binario para XFce. Para instalarlo escriba:

# pkg_add -r xfce4

También puede compilarlo desde el código gracias a la Colección de Ports:

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

Para indicar al servidor X que use XFce la próxima vez que arranque simplemente escriba lo siguiente:

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

La próxima vez que arranque X XFce será el escritorio. Como antes, si se usa un gestor de pantalla como xdm cree un .xsession tal y como se ha descrito en la anterior sección en GNOME, pero con la orden /usr/local/bin/startxfce4; puede configurar el gestor de pantalla para permitir elegir el escritorio en el momento de acceder al sistema tal y como se ha explicado en la sección de kdm.