Forum Programmation.autre Programmation Xlib

Posté par  .
Étiquettes : aucune
0
17
juin
2005
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  . Évalué à 2.

    Bah, des resource sur la Xlib, ce n'est pas ce qui manque. Cela dit, le manuel dont tu fais mention, ne me parait pas super complet et encore moins didactique. Pour un autre un peu plus complet il y a http://www.hezt.net/~larson/frekko/Xlib/contents.html(...)

    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  . Évalué à 1.

      Les mots-clés magiques pour google sont : "SUPER-UX Xlib Programming Manual" (sans le SUPER-UX, il y a pas mal de bruit)

      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  . Évalué à 3.

    Tu tapes "Xlib" dans Google et tu tombes sur ça :

    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  . Évalué à 3.

      Moi je fais partie des rares personnes à bien aimer la XLib


      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  . Évalué à 2.

        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.


        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  . Évalué à 3.

        Tellement fort d'ailleurs que xorg envisage de simplifier voire virer complètement tout ce beau foutoir.


        La lib XCB peut-être ?
        Perso j'aime bien la Xlib.

        http://freedesktop.org/Software/xcb(...)
    • [^] # Re: XLib

      Posté par  . Évalué à 2.

      Merci pour le lien et tes explications a propos des atoms

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.