Question

Un de mes nouveaux projets d'accueil sera un simple gestionnaire de fenêtres, mais avant de commencer, je dois savoir certaines choses:

  • Quel est le meilleur langage pour le faire?
  • Où trouver des ressources à apprendre?
Était-ce utile?

La solution

Une décision importante est de savoir comment vous allez parler au serveur X. Vous pouvez utiliser les liaisons Xlib pour la langue de votre choix, ou vous pouvez utiliser le niveau supérieur. liaisons XCB . (Si vous êtes aliéné , vous pouvez ouvrir directement un socket sur le serveur X. .)

Pour savoir comment un gestionnaire de fenêtres doit se comporter, deux documents spécifient les conventions et les stratégies: EWMH et ICCCM 1 . En vous conformant à ces règles, votre gestionnaire de fenêtres se comportera bien sous GNOME, KDE, XFCE et dans tout autre environnement de bureau, même si le fait de les ignorer est certainement plus facile lors de votre premier essai.

Un gestionnaire de fenêtres ne doit pas forcément être une boule de C énorme et compliquée. Des gestionnaires de fenêtres performants ont été écrits dans des langages de haut niveau tels que Lisp, Haskell et Python, et même certains en C sont restés petits et lisibles. XMonad , écrit en Haskell, est resté inférieur à 1 000 lignes pendant un certain temps. StumpWM (Common Lisp) et DWM (C) sont tous les deux assez minimalistes. Vous pourrez peut-être lire leur code source pour trouver des idées pour concevoir un WM.

1 Elijah Newren a écrit:

  

N'y allez pas et ne lisez pas ces choses. Ils sont vraiment, vraiment ennuyeux. Si vous le faites, vous finirez probablement par rattraper votre sommeil plutôt que par le piratage de Metacity. ; -)

En y réfléchissant bien, la documentation de de Metacity est très utile indiquer comment il interagit avec Windows et quel type de propriétés étendues il prend en charge.

Autres conseils

le tinywm en C peut être utile pour commencer.

Bien qu'un autre langage et un autre ensemble de bibliothèques soient techniquement possibles, je pense que le meilleur choix de langage serait le C, ainsi que les bibliothèques Xlib ou XCB. La plupart des gestionnaires de fenêtres pour X utilisent cela, et il y a déjà beaucoup d'élan et de maturité pour ces bibliothèques particulières.

Certains documents d’intérêt:

  • Manuel de Xlib - doit être lu pour la programmation X de bas niveau.
  • ICCCM - conventions et interfaces pour la communication entre les applications X et le gestionnaire de fenêtres.
  • XCB - un remplacement du XIe siècle pour Xlib. C'est un niveau un peu inférieur, et prend moins de décisions pour vous que Xlib. D'après ce que je comprends, le résultat est potentiellement une meilleure performance en raison du potentiel plus grand d'asynchronisme, mais je dois avertir que je n'ai jamais travaillé avec.
  • Quel est le meilleur langage pour le faire?

    Celui avec lequel vous êtes le plus à l'aise. Il existe de nombreux exemples de gestionnaires de fenêtres performants dans de nombreuses langues. Qtile et xmonad sont de bons exemples, écrits respectivement en Python et en Haskell.

  • Où trouver des ressources à apprendre?

    J'irais voir certains des gestionnaires de fenêtres existants. Il y en a beaucoup, donc au moins certaines d'entre elles doivent avoir un code lisible. Voici la Liste complète des gestionnaires de fenêtres pour Unix .

Je sais que ce sujet est un peu vieux, mais je me demandais la même chose. Ce gestionnaire de fenêtres appelé i3 semble également être un bon moyen d'apprendre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top