2010-07-16 19 views
6

Estoy un poco confundido con la programación Xlib ahora. Empecé a usar dwm (un administrador de ventanas liviano) hace algunas semanas, y me gustaría recuperar algunos libros de programación de Xlib o recursos en línea para personalizar el dwm.¿Dónde hay algunas buenas guías de programación Xlib?

Sin embargo, después de buscar en Google en la web, ¿no veo muchos artículos nuevos que hablan de Xlib? ¡La guía de programación más nueva para el sistema de ventanas X en Amazon es en 1994 !? ¿No hay nuevos artículos de Xlib porque el libro anterior es suficiente, o porque hay alguna tecnología nueva de la que no tengo conocimiento? O tal vez no tenía la palabra clave correcta para buscar en la web. Si ese es el caso, ¿alguien puede indicarme el lugar correcto?

+4

X es bastante vieja tecnología. El desarrollo moderno de GUI de UNIX/Linux ocurre en QT o GTK + (o en varios otros kits de herramientas). No pierdas tu tiempo programando en Xlib. Pase un día como máximo y luego aprenda GTK o Qt (que se implementan con Xlib) –

Respuesta

14

No tengo ningún libro actualizado que sepa. Realmente solo tiene que leer un montón de especificaciones y código fuente. Afortunadamente no es que complicado.

Yo diría que leer la fuente en gtk +/gdk/x11 (el backend X en GTK) y la fuente de su pareja favorita de WM sería muy útil. Las especificaciones ICCCM y EMWH son esenciales.

Un cambio enorme en la programación X ya que las guías anteriores son que a nadie le gusta usar muchas de las instalaciones del lado del servidor para dibujar, fuentes, imprimir, etc. Así que las funciones de XDrawFoo, todo sobre fuentes, XPrint, GC, mapas de color, todo eso es más o menos obsoleto. En general, el dibujo se realiza ahora en el lado del cliente con bibliotecas como El Cairo o Skia.

Sin embargo, las cosas sobre ventanas y mapas de píxeles y la forma básica en que X trabaja en esos libros antiguos seguirían siendo precisas.

Como consejo general X si está jugando con un WM:

  • que necesita para responder a los eventos en lugar de obtener el estado. Por ejemplo, siempre considere su tamaño como el último tamaño para el que obtuvo ConfigureNotify; no llame a XGetGeometry o algo para obtener su tamaño. Obtener estado tiene dos problemas: mata el rendimiento (bloqueo durante un viaje de ida y vuelta = muerte por rendimiento) e introduce condiciones de carrera.

  • en una WM, se trata de ventanas de otras aplicaciones, y se pueden destruir en cualquier momento, lo que generará un error si toca esa ventana. por lo que cualquier función que llame en una ventana puede fallar.

  • nunca use CurrentTime, utilice siempre una marca de tiempo real, o que va a crear extrañas condición carrera errores que te volverá loco

Hay muchos más consejos, pero supongo que esas son tres para llegar comenzó a evitar errores comunes ;-)

Cuestiones relacionadas