2010-07-16 11 views
6

Je suis un peu confus sur la programmation Xlib maintenant. J'ai commencé à utiliser dwm (un gestionnaire de fenêtres léger) il y a quelques semaines, et j'aimerais récupérer des livres de programmation Xlib ou des ressources en ligne pour personnaliser le dwm.Où sont les bons guides de programmation Xlib?

Cependant, après avoir fait des recherches sur le Web, je ne vois pas beaucoup de nouveaux articles parlant de Xlib? Le nouveau guide de programmation pour le système X Window sur Amazon est en 1994 !? Il n'y a pas de nouveaux articles de Xlib parce que le vieux livre est suffisant, ou parce qu'il y a une nouvelle technologie que je ne connais pas? Ou, peut-être que je n'avais pas le bon mot-clé pour effectuer une recherche sur le Web. Si c'est le cas, est-ce que quelqu'un peut me diriger vers le bon endroit?

+4

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

Répondre

14

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