Partage
  • Partager sur Facebook
  • Partager sur Twitter

Xlib

Comment se connecter à un Xserver avec XOpenDisplay

    3 septembre 2020 à 7:10:35

    Bonjour à tous, 

    je me suis lancé la Xlib il y a quelques semaines pour un projet avec un ami. Je sais que cela est très bas niveau et que presque plus personne n’utilise Xlib directement mais nous avions besoin du max de performance ainsi que cette envie de comprendre le dessous des majeurs bibliothèques graphique en c. Assez surpris de voir que la Xlib n’est pas si compliqué que ça d’ailleurs!

    Revenons au sujet, avec XOpenDisplay il y a possibilité de changer le $DISPLAY sur lequel le Xserver envoie les infos graphiques. XOpenDisplay(NULL ou :0) pas de soucis puisque c’est le display local (celui de mon pc). Hors dès que je veux utiliser une autre addresse, impossible. Mon display struct que me renvoie la fonction est null ce qui veut dire que cela n’a pas fonctionné. Et malgrès des 10ène d’heures de recherche et de test je n’ai rien trouvé qui m’explique en détail comment utiliser le XOpenDisplay pour me connecter à un autre display...

    Tous utilise une connection ssh puis execute le programme sur l´hôte distant pour faire afficher le resultat sur leur écran. Ce qui n’est pas ce que je veux vraiment. Je veux que le programme s’execute mais que l’info graphique soit envoyée ailleurs avec XOpenDisplay. D’autant plus que en faisant cela on récupère les infos souris, clavier et écran de la personne à distance et ces infos sont directement traités par l’application, chose différente avec le ssh.

    Bref, si quelqu’un est connaisseur et a compris ma question, ses explications sont la bienvenue.

    Merci d’avance

    • Partager sur Facebook
    • Partager sur Twitter
      3 septembre 2020 à 8:53:39

      pour dire pourquoi ca ne marche pas, Il faudrait voir

      • Le code
      • La manière exacte de l'utiliser (avec quel display ?)

      Pour utiliser un autre display, la manière habituelle est d'utiliser l'option -d, ou d'affecter la variable d'environnement DISPLAY, ce que fait ssh -X.

      -
      Edité par michelbillaud 3 septembre 2020 à 8:57:19

      • Partager sur Facebook
      • Partager sur Twitter
        3 septembre 2020 à 9:07:03

        En effet c'est très bas niveau mais surtout c'est totalement obsolète. On utilise plutôt xcb à la place et même maintenant il est préférable de se tourner vers wayland car X.Org est voué à disparaitre (pas aujourd'hui ni demain, mais un jour).
        • Partager sur Facebook
        • Partager sur Twitter

        git is great because Linus did it, mercurial is better because he didn't.

          3 septembre 2020 à 19:06:31

          Qt, Xt et gtk, qui sont d’énormes librairies très réputées et utilisées, sont basées sur Xlib donc pourquoi cela la rendrait obsolète ? Et puis son ancienneté et le fait qu’elle soit toujours existante montre qu’elle doit être fiable si je ne me trompe pas! Un peu comme php qui reste leader parce que, même si plus complexe que les petits nouveaux, son ancienneté fait qu’il a plus d’expérience et de sécurité.

          J’ai dévouvert Xlib en m’interessant au Xserver. J’ai une petite bibliothèque 2d très minimaliste mais qui me suffit, j’aurai besoin de l’experience et de l’aide de quelqu’un pour pouvoir établir une connection à partir du XOpenDisplay(char* display) sans avoir recours au ssh. Donc je n’ai pas vraiment de code à montrer car tout se résume à cette fonction dont toute la doc présente sur internet ne m’aide guère. Car il est bien écrit noir sur blanc que cela et fait pour se connecter à travers un Xserver (pour le display) mais tous le monde utilise un ssh pour éxecuter à distance un programme... ce qui fait de cette utilisation plus du remote qu’autre chose. Loin de ce que je veux et de ce que laisse entrevoir les documentations les pous complètes de la Xlib...

          • Partager sur Facebook
          • Partager sur Twitter
            4 septembre 2020 à 0:14:27

            Ce qui est obsolete, c'est l'idee de se servir directement de la xlib pour développer des applications "normales", alors qu'il y a des bibliothèques plus commodes, qui font donc gagner du temps.
            • Partager sur Facebook
            • Partager sur Twitter
              4 septembre 2020 à 6:12:23

              Mais je ne veux pas gagné forcement de temps 😅 je veux refaire par moi-même ce qui existe déjà, repartir de la base pour comprendre et mieux apprivoiser les choses! C’est un état d’esprit . La xlib est largement abordable en plus.
              • Partager sur Facebook
              • Partager sur Twitter
                7 septembre 2020 à 9:02:07

                > For low-level X development, XCB, the X C Bindings provide a clean low-level protocol binding. Its older cousin Xlib (or libX11), is not recommended for new development, but is still very widely used. Xt is a similarly deprecated library for building toolkits. Documentation for Xlib and Xt is available.

                De la doc officielle.

                Et pour répondre à ta question, oui Gtk et autres utilisent Xlib parce que c'est ce qui existait à cette époque. Gtk et Qt ont aussi un support Wayland et l'utiliseront si le bureau en cours tourne sur Wayland aussi.

                Par contre, parler de la bibliothèque X11 et dire que c'est abordable c'est plutôt cocasse. C'est même pour ça que les développeurs X.Org eux même ont décidé d'abandonner le bateau et de repartir sur le tout nouveau protocole Wayland tellement X est mal foutu.

                Donc oui, Xlib en soit c'est abordable tellement c'est minimaliste. On en reparlera quand tu auras regardé les 111 millions de modules annexes (pour gérer la police, images, écrans, voir ici pour te donner un aperçu). Ah et ton application je ne pourrais probablement pas l'utiliser sur ma machine, ayant que des écrans hidpi (ce que Xlib ne gère pas).

                Développer une application en Xlib en 2020 c'est comme démarrer un nouveau projet pour Windows 95.

                • Partager sur Facebook
                • Partager sur Twitter

                git is great because Linus did it, mercurial is better because he didn't.

                Xlib

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown