46 votes

La construction d'un Gestionnaire de Fenêtre

Un de mes nouveaux projets à la maison sera un simple Gestionnaire de fenêtres, mais avant de commencer j'ai besoin de savoir certaines choses:

  • Qui est le meilleur langage pour faire cela?
  • Où trouver des ressources pour apprendre?

65voto

Josh Lee Points 53741

Une décision importante est de savoir comment vous allez parler à l'X server. Vous pouvez utiliser la Xlib liaisons pour la langue de votre choix, ou vous pouvez utiliser le niveau supérieur XCB liaisons. (Si vous êtes fou, vous pourriez ouvrir un socket vers le serveur X directement.)

Pour savoir comment un gestionnaire de fenêtre doivent se comporter, il y a deux documents qui spécifient les conventions et politiques: EWMH et ICCCM1. Se conformant à ces moyens de votre gestionnaire de fenêtre se comporte bien dans GNOME, KDE, XFCE, et tout autre environnement de bureau qui vient le long, même si ignorant est certainement plus facile sur votre premier essai.

Un gestionnaire de fenêtres n'a pas besoin d'être un énorme complexe de la balle de C - la Réussite des gestionnaires de fenêtres ont été écrits dans des langages de haut niveau comme Lisp, Haskell, et Python, et même certains en C sont restées petites et lisible. XMonad, écrit en Haskell, est resté au-dessous de 1000 lignes un certain temps. StumpWM (Common Lisp) et DWM (C) sont tous les deux assez minimaliste. Vous pourriez être en mesure de lire le code source pour obtenir un peu d'inspiration sur la façon de concevoir un WM.


1 Élie Newren a écrit:

NE PAS ALLER LIRE CES CHOSES. ILS SONT VRAIMENT, VRAIMENT ENNUYEUX. Si vous le faites, vous finirez probablement par vous rattraper sur votre sommeil au lieu de piratage sur Metacity. ;-)

Venez pour penser à elle, Metacityla documentation a un bon peu à dire sur la façon dont il interagit avec windows et ce genre de propriétés étendues, il prend en charge.

28voto

mtvee Points 869

le tinywm en C peut être utile pour le démarrage.

12voto

asveikau Points 16871

Tandis qu'une autre langue et un ensemble de bibliothèques sont techniquement possibles, je pense que le meilleur choix de la langue serait C, et la Xlib ou XCB bibliothèques. La plupart des gestionnaires de fenêtres pour X l'utiliser, et il y a déjà beaucoup d'élan ici et la maturité de ces bibliothèques.

Certains documents d'intérêt:

  • Xlib manuel - faut lire de bas niveau X de programmation.
  • ICCCM - conventions et des interfaces de communication entre les applications X et le gestionnaire de fenêtre.
  • XCB - du 21ème siècle, le remplacement de la Xlib. C'est un peu plus bas niveau, et rend de moins en moins de décisions pour vous que de la Xlib. De ce que je comprends, le résultat est potentiellement améliorer les performances, car ayant le plus de potentiel pour l'asynchronicité, mais je dois avertir que je n'ai jamais travaillé avec elle.

8voto

Mikael Auno Points 2699
  • Qui est le meilleur langage pour faire cela?

    Selon que vous êtes plus à l'aise avec. Il y a beaucoup d'exemples de réussite de gestionnaires de fenêtres dans de nombreuses langues différentes là-bas. Qtile et xmonad sont de bons exemples, écrite en Python et Haskell, respectivement.

  • Où trouver des ressources pour apprendre?

    Je vais regarder un peu de gestionnaires de fenêtres. Il y en a beaucoup, donc au moins certains d'entre eux ont d'avoir un code lisible. Voici la Liste Complète des Gestionnaires de fenêtres pour Unix.

7voto

Mindstormscreator Points 132

Je sais que ce sujet est un peu vieux, mais je me demandais la même chose. Ce gestionnaire de fenêtre appelé i3 semble être une bonne idée d'apprendre de trop.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X