Bonjour,
Ca fait un petit moment que je cherche un tutoriel un peu plus étoffé qu'un simple "hello world!" pour apprendre à maîtriser les arcanes de la Xlib. Au bout de quelques "hello world!" on devient un peu frustré, surtout quand on voit la masse de fonctions accessibles par la Xlib. De plus les différents concepts se cachant derrière ces fonctions ne sont pas ou très peu détaillés.
un exemple de tutoriel qui aide à démarrer mais qui me laisse sur ma faim: http://tronche.com/gui/x/xlib-tutorial/(...)
sinon il y a aussi le bouquin: http://tronche.com/gui/x/xlib/(...)
mais, à l'inverse du tutoriel, je trouve qu'il n'est pas assez didactique.
dans aucun cas je n'ai, par exemple, pu avoir une explication claire de ce que sont les Atoms.
Il reste bien le Xlib programming Manual de O'Reilly, mais il commence à se faire vieux: est-il toujours d'actualité ?
Je fais donc appel à votre expérience pour m'orienter vers une documentation qui répondrait à mes attentes, si possible en ligne, sinon un bon bouquin.
merci
# Xlib
Posté par pierthi . Évalué à 2.
Bon, ça reste bas niveau, il faut s'accrocher (pour la partie XIM [Chapitre 13], je te conseille d'éloigner tout objet contendant de ta machine, on sait jamais ... ;-).
Les mots-clés magiques pour google sont : "SUPER-UX Xlib Programming Manual" (sans le SUPER-UX, il y a pas mal de bruit).
Sinon, tu as l'intention de reprogrammer QT ou GTK ? Parce que sinon, vaut mieux se tourner vers un de ces toolkits, tant la programmation Xlib est pénible.
[^] # Re: Xlib
Posté par Anonyme . Évalué à 1.
Merci, j'ai recupere une version pdf de celui la hier soir, mais je n'ai pas encore eu le temps de m'y attarder
Sinon, tu as l'intention de reprogrammer QT ou GTK ? Parce que sinon, vaut mieux se tourner vers un de ces toolkits, tant la programmation Xlib est pénible.
non, je voudrais faire une petite dockapp pour WMaker ou AfterStep, et en regardant les sources des dockapps existantes, je ne compte plus le nombre de fois ou j'ai vu des commentaires indiquant que l'auteur avait fait un copier coller d'une autre source, qu'il ne compremait comment ca marchait, mais que ca marchait ....
Et puis, me lancer dans un window manager me plairait bien aussi donc il faut bien acquerir les bases
# XLib
Posté par Obsidian . Évalué à 3.
http://www.google.fr/search?hl=fr&q=XLib&btnG=Recherche+Goo(...)
Et si tu restreins aux pages francophones, tu trouves beaucoup de trucs aussi sympas. Pendant un temps, j'ai beaucoup trainé sur http://www.u-picardie.fr/~ferment/xwindow/(...) .
D'autre part, toutes les fonctions de la XLib ou presque sont documentées dans les man pages. Moi je fais un
nm -D /usr/X11R6/lib/libX11.so | grep " T X" | less
histoire de n'en louper aucune.
Quant aux atoms, il s'agit du dictionnaire de la XLib. Un atom est une chaîne de caractères associée à un numéro unique. Cela sert à nommer des ressources. C'est un concept que l'on utilise souvent en bases de données. Il y a une liste générale par serveur X. Donc du coté du compilateur du client, un Atom c'est simplement un entier non signé.
Donc du coup, chaque fois que tu veux te référer à une propriété particulière, tu résouds d'abord son nom complet en son numéro, puis tu utilises celui-ci pour toutes tes requêtes. Cela évite d'avoir soit un nom de fonction différent pour chaque entité, soit une tripotée de #DEFINE écrits en dur dans la X-lib.
Exemple : Tu veux changer le titre d'une fenêtre. Facile :
XStoreName (dpy,win,"Mon nouveau titre");
Où dpy est la connexion vers le serveur X et win le handler de la fenêtre dont tu veux changer le titre. Il existe un certain nombre de fonctions "raccourcis" de ce type pour les opérations les plus triviales. Cependant, le titre d'une fenêtre n'est qu'une des nombreuses propriétés de celles-ci. D'ailleurs, la man page de XStoreName est intitulée « set or read a window’s WM_NAME property ». Cela veut dire qu'il existe une fonction pour gérer toutes les propriétés de manière universelle.
Tu utilises donc XInternAtom (dpy,win,"WM_NAME") pour récupérer une fois pour toutes l'atome qui correspond, et tu changes la valeur de cette propriété (en l'occurence le titre) avec XChangeProperty ().
Tu peux en outre utiliser la commande « xlsatoms » pour lister tous les atomes déjà déclarés. Attention, cette base ne sert toutefois qu'à associer le nom complet d'une ressource à son identifiant, mais en AUCUN CAS à stocker des données.
Moi je fais partie des rares personnes à bien aimer la XLib, qui n'est pas aussi pénible qu'on veut bien le croire, une fois que l'on a bien saisi l'esprit. Il y a juste beaucoup de déclarations à faire en tête du programme, mais le reste se fait relativement aisément ensuite. Je trouve qu'elle est excellente pour apprendre le fonctionnement d'une interface graphique (bien plus que la C.API de Windows par exemple), et notament parce qu'elle introduit un modèle et un environnement objet qui ne s'appuie pas du tout sur le langage.
[^] # Re: XLib
Posté par pierthi . Évalué à 3.
Mouarf, toi, tu n'as jamais du approcher les X Input Method, les X Output Method, les X Output Context et les X Input Context. C'est ce qui permet par exemple de gérer la saisie des touches composites, comme les accents latins (et non, les keysyms seuls ne suffisent pas) ou les caractères chinois et co. Ok, c'est complet, mais niveau masturbation intellectuelle, ils ont fait très très fort. Tellement fort d'ailleurs que xorg envisage de simplifier voire virer complètement tout ce beau foutoir. Il me semble que c'était Keith Packard lui même qui avait sorti un article au vitriol de ce coté obscur de la Xlib. Argh, retrouve plus le lien ...
À part ça, c'est vrai que la Xlib contient pas mal de concept intéressant. J'ai vraiment bien aimé l'architecture objet de Xt (infiniment mieux foutu que celui de GTK). Mais ça reste très bas niveau, et quand tu veux faire les choses de manière vraiment portable (saisie de chaines, dessin sur du TrueColor, PseudoColor, Palette, Monochrome, chargement d'images, UTF-8, XFT, etc, etc ...), les lignes de codes croissent exponentiellement.
[^] # Re: XLib
Posté par Obsidian . Évalué à 2.
Comme tu le dis, c'est une bibiothèque de bas niveau. Donc évidement, les possibilités sont vastes et le code qu'il faut produire derrière est à sa mesure. Ce qui nous amène très vite à vouloir encapsuler tout cela dans un toolkit quelquonque. Mais justement, je la trouve suffisament élégante et versatile pour permettre à de nombreux produits de faire leur apparition.
C'est un peu comme coder en assembleur. Le X-Lib exclusif devient un peu spartiate dès lors que l'on a l'ambition de coder de grandes applications, mais cette lib n'est pas forcément difficile en elle-même. Juste longue ! :-)
[^] # Re: XLib
Posté par neil . Évalué à 3.
La lib XCB peut-être ?
Perso j'aime bien la Xlib.
http://freedesktop.org/Software/xcb(...)
[^] # Re: XLib
Posté par Anonyme . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.