X11

De Astillas.net

En esta página estoy guardando datos y técnicas que tienen que ver con programas funcionando sobre el sistema X11. Es una especie de batiburrillo éste sistema gráfico como nexo común.

Enlaces y referencias

Recetario

Validar xorg.conf

Una vez escrito el archivo xorg.conf.new que queremos validar podemos invocar al servidor X de esta forma:

# X -config xorg.conf.new 

aunque a partir de la versión 7.4 aparece una pantalla blanca que dificulta la depuración de errores; para evitar esto se puede emplear el parámetro -retro.

Si aparece una pantalla con fondo blanco y gris con una X como cursor del ratón es que ha funcionado. Para salir de allí se debe pasar a la consola con Ctrl + Alt + F1 y pulsar Ctrl + C para interrumpir el servidor gráfico.

Conceptos

xinit

El programa xinit se emplea para arrancar el entorno gráfico X en sistemas que no lo hacen directamente.

Su trabajo consiste en poner en marcha el servidor X y un primer cliente conectado a él; cuando dicho programa cliente termina xinit también finaliza el servidor gráfico.

El programa puede recibir los siguientes parámetros directos:

xinit [ [cliente] opciones ] [ -- [ servidor ] [display] ]

y los considera de esta forma:

  • Si no recibe un programa cliente intenta con
    1. El archivo $HOME/.xinitrc o aquél indicado en la variable de entorno XINITRC.
    2. Un terminal gráfico de esta forma
      xterm  -geometry  +1+1  -n  login
  • Las opciones del programa cliente se usan con el programa indicado o con el que terminal predeterminado.
  • Si no recibe un servidor gráfico (un programa que haga de tal) emplea
    1. El archivo $HOME/.xserverrc que ejecutará como un guión del shell.
    2. El programa llamado X que espera encontrar en el entorno de ejecución del proceso (variable PATH).
  • El display a conectar predeterminado es :0 o el contenido en la variable de entorno DISPLAY.

Consideraciones especiales:

  1. Si se emplea el programa .xserverrc el servidor gráfico debe llamarse con la función exec para que no existan retardos en la comunicación y la puesta en marcha del cliente.
  2. Los programas llamados mediante el archivo .xinitrc deberían hacerlo en segundo plano (usando el carácter &) ya que en caso contrario atascarán el flujo de arranque al no poder comenzar otro hasta que ellos terminen, exceptuando aquél con el que vaya a interactuar el usuario como un gestor de ventanas o un terminal; estos deberían funcionar en primer plano ya que cuando xinit termine con este archivo acabará también con el servidor gráfico lo que provocará el fin abrupto de cualquier programa cliente.
  3. Tanto el programa cliente como el programa servidor indicados en la línea de órdenes de xinit deberían ser una ruta absoluta o una relativa (aquella que comienza por ./), ya que en caso contrario se asumen como parámetros y no como programas.

Lo siguiente es un ejemplo de archivo .xinitrc que fija algunas opciones del entorno gráfico, abre algunas utilidades como un reloj, un indicador de carga y un par de terminales gráficos, e invoca a un gestor de ventanas

xrdb -load $HOME/.Xresources
xsetroot -solid gray &
xclock -g 50x50-0+0 -bw 0 &
xload -g 50x50-50+0 -bw 0 &
xterm -g 80x24+0+0 &
xterm -g 80x24+0-0 &
twm

Todos los programas son lanzados en segundo plano excepto el primero (xrdb) que carga unos recursos en el entorno y que por tanto debe terminar su trabajo para que los demás los usen, y el último (twm) porque es el que permite manipular las ventanas al usuario y el que ofrece la sensación de sesión gráfica; cuando él termine ésta habrá acabado y se podrá terminar también el servidor gráfico.

XDMCP

XDMCP es un protocolo que permite establecer sesiones gráficas basadas en X-Windows entre clientes y servidores gráficos en una red.

Para tener acceso desde una sesión gráfica abierta puede emplearse el programa

$ Xnest -query 192.168.0.10 -geometry 1280x1024 :1

o lanzar el servidor gráfico diréctamente contra él como en

X -query 192.168.0.10

si no existe ya uno funcionado en la propia máquina.

Lista de errores que puede encontrarse:

XDMCP fatal error
Manager unwilling Host unwilling
Cuando esto ocurre se debe a que el archivo Xaccess correspondiente (/etc/kde3/kdm/Xaccess por ejemplo) no contiene ninguna indicación sobre quién puede conectar vía XDMCP. Basta con configurarlo y reiniciar el gestor de entrada gráfico (kdm en este caso).

Tipografías

Las fuentes tipográficas se expresan en big points. Cada uno corresponde a un setentaydosavo de pulgada (1/72) por lo que corresponden a:

  • 0.0139 pulgadas
  • 0.3527 mm

De lo que deducimos que:

  • 1 carácter a 20pt ocupa 7.05mm
  • 80 caracteres a 20pt ocupan 564,32mm

Para determina cuánto espacio ocupa un texto con tamaño dado en milímetros en una pantalla hacemos:

  tamaño_milímetros = numero_caracteres x tamaño_caracter x 0.3527

y para calcular el tamaño de punto necesario para contener un texto completo en un espacio limitado:

                            tamaño_milímetros x 0.3527
  tamaño_caracter = ---------------------------------------
                                  numero_caracteres

Luego tenemos el factor de conversión entre unidades físicas (pulgadas, milímetros, puntos, ...) y unidades lógicas como los píxeles. En este caso necesitamos contar con el factor de resolución medido en dpi (Dots Per Inch) que nos indica que en cada pulgada están contenidos N píxeles.

Para obtener entonces los milímetros correspondientes a una medida en píxeles emplearemos:

  mm = (pixels * 25.4) / dpi

y para lo contrario, para obtener los píxeles contenidos en una medida física como los milímetros:

  pixels = (mm * dpi) / 25.4

Varios

Gtk

Marcadores

Existe un archivo en el directorio del usuario que contiene los marcadores de sitios que utilizan aplicaciones escritas bajo este entorno y que se llama ~/.gtk-bookmarks

El formato es simple: una línea por cada marcador y en cada línea dos campos separados por un primer espacio en blanco. El primer campo es el URL y el segundo la descripción que se muestra al usuario.

Ejemplo:

file:///home/victor/git git
file:///home/victor/Imagenes Imagenes
file:///home/victor/Descargas Descargas
file:///home/victor/data data
file:///home/victor/tmp tmp

No he podido encontrar documentación precisa sobre este tema. Es una de esas cosas que parece que han existido siempre y nadie parece haber tenido tiempo ni oportunidad para documentarlo en algún sitio.

Archivos .directory

Estos archivos contienen una descripción ampliada del directorio donde están situados de esta forma:

[Desktop Entry]
Name=Documentos
Comment=Documentos, hojas de cálculo y similares del usuario
Type=Directory
Icon=/usr/share/icons/docs-folder.png