Journal gestion des fenêtres..

Posté par  .
Étiquettes : aucune
0
5
juin
2003
Voilà, je me pose quelques question en ce moment:
* comment un gestionnaire de fenêtres -fluxbox, kwm,windowmaker,...- fait pour gérer les fenêtres apparaissant. Je m'explique: si la fenêtre qui s'ouvre, est une fenêtre de l'interface du gestionnaire, ca je comprends, mais si la fenêtre est celle d'une application externe -xterm, xawtv, en fin tout application graphique- comment fait-il pour savoir qu'elle s'ouvre et pour l'intercepter afin de la gérer? lancer l'application pas de problème, mais une fois lancé ??? Est-ce que c'est un évenement de X qu'il faut intercepter, si oui leque let comment??
* Dans la même veine, une fois intercepter et ayant la capacité de la gérere, comment lui attribuer une barre en haut -habituellement avec le nom de l'application, bouton pour la fermer et la réduire au moins-?? Une fois cette "barre" en place, quand on veut l'a déplacer la fenêtre, comment faire pour déplacer la fenêtre? cela se fait tout seule en ayant la "barre" -à condition de coder dans les propriètés de la barre la possibilités de se déplacer, ou faut-il envoyer des ordres à l'application elle-même -et alors quoi et comment-???

Voilà j'essaye de comprendre afin de concevoir un mini mini gestionnaire de fenêtre, non pas pour révolutionner le monde des gestionnaires, mais comme un exercice de style, afin d'apprendre et comprendre...
  • # Re: gestion des fenêtres..

    Posté par  (site web personnel) . Évalué à 1.

    Et bien il va te faloir commencer par lire les docs Xlib & Co.
    parce que c loin d'etre simple tout ca.

    En resume quand une appli veut faire WM, il faut quelle s'enregistre en tant que
    WM, quelle indique a XFree quels sont les evenements dont elle a besoin (create_window, destroy_window, etc) et apres au boulot. :)
    • [^] # Re: gestion des fenêtres..

      Posté par  . Évalué à 1.

      et pour avoir le beurre et l'argent du beurre : y a une doc/tutoriaux/.... en francais sur les différents fonctions, leur implémentatiosn...
  • # Re: gestion des fenêtres..

    Posté par  (site web personnel) . Évalué à 1.

    Y a un gestionaire de fenetres tout en perl a peine a ses debuts : il y de bonnes bases, il est grossomodo fonctionel, et a un minuscule code source , donc c est un exemple ideal pour mater comment font certains ... http://perlwm.sourceforge.net/(...) hop j ai pas eu trop de mal a la retrouver :=)
  • # Lightweight Window Manager

    Posté par  . Évalué à 1.

    Dans le genre minimaliste, il y a LWM

    http://www.boognish.org.uk/enh/lwm/(...)

    avec juste 2646 lignes de code C, je pense que trouvers les mécanismes X
    essentiels devrait etre facile :)

    Si mes souvenirs sont bons, le principe de base pour etre un WM c'est:

    -Verifier qu'un autre WM ne tourne pas deja ;) Je crois qu'on utilise pour ça un "atome" special de la root window dans lequel un WM s'inscrit et que les autres doivent regarder avant de se lancer.
    - obtenir l'id de la root-window du display
    - Dire à X qu'on est intéressé par certains événements en rapport avec cette root-window, en particulier l'aparition de nouvelles fenetres (c-à-d les fenetres créees par les applications)
    - Se mettre en attente d'événement.
    - A reception d'un evenement "nouvelle fenetre", on l'inscrit dans sa base de fenetres à gérer.
    - Pour les décorations de fenetres, en general le WM va créer une nouvelle fenetre qui ne dessinera que les bordures et la barre de titre, puis demander à X de "reparenter" la fenetre de l'appli, c'est-à-dire la faire passer de fenetre fille de la root-window à fenetre fille de la fenetre du WM. A partir de là, le tout forme une seule entité, qui peut donc se déplacer en bloc. Le WM doit sans-doute aussi intercepter les commandes de redimmensionnement de l'appli pour redimensionner sa fenetre de décorations.
    - apres je ne sais pas trop comment le WM intercepte les evenement clavier/souris pour décider de ce qui l'interesse et ce qui doit etre transmis aux fenetres.


    En gros :)

Suivre le flux des commentaires

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