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 ;-)
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) –