Je ne connais aucun livre à jour. Vous avez vraiment juste à lire un tas de spécifications et de code source. Heureusement, ce n'est pas que compliqué. Je dirais que lire la source à gtk +/gdk/x11 (le backend X à GTK) et la source à votre couple préféré de WM iraient un long chemin. Les spécifications ICCCM et EMWH sont essentielles.
Un énorme changement dans la programmation X depuis les anciens guides est que personne n'aime utiliser de nombreuses fonctionnalités côté serveur pour le dessin, les polices, l'impression, etc. Donc les fonctions de XDrawFoo, tout sur les polices, XPrint, GCs, les colormaps, tout cela est plus ou moins obsolète. Le dessin est généralement effectué côté client avec des bibliothèques telles que Cairo ou Skia. Les trucs sur les fenêtres et les pixmaps et la façon dont X fonctionne dans ces vieux livres seraient tout de même précis.
Quelques bons conseils généraux X si vous êtes déconner avec WM:
vous devez répondre à des événements plutôt que d'obtenir l'état. Par exemple, considérez toujours votre taille comme étant la dernière taille pour laquelle vous avez obtenu un ConfigureNotify; n'appelle pas XGetGeometry ou quelque chose pour obtenir ta taille. Obtenir l'état a deux problèmes: il tue la performance (blocage pour un aller-retour = mort de performance) et introduit des conditions de course. Dans un MM, vous avez affaire à des fenêtres d'autres applications, et elles peuvent être détruites à tout moment, ce qui entraînera une erreur si vous touchez cette fenêtre. donc toute fonction que vous appelez sur une fenêtre peut échouer.
ne jamais utiliser CurrentTime, utilisez toujours un horodatage réel, ou vous allez créer des bugs de l'état de la course Freaky qui va vous rendre fou
Il y a beaucoup plus de conseils que je suppose, mais ce sont trois pour vous aider commencé à éviter les erreurs courantes ;-)
X est une technologie assez ancienne. Le développement d'une interface graphique UNIX/Linux moderne se produit dans QT ou GTK + (ou dans plusieurs autres boîtes à outils) Ne perdez pas votre temps à programmer dans Xlib. Passez au moins une journée dessus et apprenez GTK ou Qt (qui sont implémentés en utilisant Xlib) –