2010-07-13 29 views
1

Comment puis-je obtenir des informations de fenêtre précises sous Linux? Je sais que je peux utiliser wmctrl pour obtenir la taille d'une fenêtre, mais la taille réelle de la fenêtre peut varier en raison des décorations de fenêtre. J'ai besoin des informations et des méthodes suivantes:Comment obtenir des informations de fenêtre précises (dimensions, etc.) sous Linux (X)?

  • dimensions de la fenêtre précise
  • espace précis disponible à l'écran (à l'exception des panneaux tels que gnome-panel)
  • la possibilité de définir une fenêtre à une certaine taille, y compris les décorations

Quelle serait la meilleure façon de procéder? Je suis intéressé à travailler avec Python donc quelque chose avec un module python serait préférable.

Merci d'avance!

+0

Quelle bibliothèque fenêtrage utilisent? – Mark

+0

Je ne sais pas exactement ce que vous demandez, @Mark. J'utilise Ubuntu 10.04 avec l'environnement de bureau Gnome et Metacity comme gestionnaire de fenêtres. – mellort

+0

Je pense que Mark supposait que vous faisiez cela dans le programme qui crée la fenêtre. Voulez-vous que ce soit un outil que vous exécutez séparément du propriétaire de la fenêtre? Je pense que vous pouvez avoir plus de chance sur Superuser (http://superuser.com/). – nmichaels

Répondre

1

La meilleure façon est d'utiliser X11/xlib directement (Documentation: http://tronche.com/gui/x/xlib/)

À partir de la racine, vous pouvez marcher à travers un arbre via XQueryTree() et obtenir la fenêtre Attributs via XGetWindowAttributes()/XGetGeometry() .

Ok, ceci est une bibliothèque C, mais il y a aussi un port Python: http://python-xlib.sourceforge.net/?page=documentation

+0

Comment X11 connaîtrait-il la taille des décorations de fenêtres? – mellort

+0

Parce que les fenêtres sont organisées dans un arbre, et si vous soustrayez la taille d'une fenêtre enfant de sa fenêtre parent, vous obtenez la taille des décorations. Souvent, des choses comme des boutons dans la décoration sont aussi X11-Windows. 'Fenêtre racine (votre bureau) - Fenêtre de haut niveau (fenêtre avec déco) - Fenêtres enfants (peut faire partie de la zone de décoration ou de contenu, etc.) - Boutons etc Cette approche ne fonctionne pas toujours, par exemple Quand Compiz est allumé, Compiz peint la décoration de la fenêtre en contournant X11 (mais je ne suis pas sûr sur ce point) – nob

+0

Mais vous pouvez essayer un programme facile de test de vidage et comprendre dans quelle partie de la fenêtre hiérarchie vous intéresse. Vous pouvez même saisir son contenu via XGetImage(). – nob