8
votes

Obtenez la position de la fenêtre et la taille en python avec xlib

J'ai besoin de trouver la position de la fenêtre et la taille, mais je ne peux pas comprendre comment. Par exemple, si j'essaie:

#!/bin/bash
id=$1
wmiface framePosition $id
wmiface frameSize $id


1 commentaires

Grâce à la réponse de Andrey Sidorov j'ai résolu mon problème. Voici un script très simple qui démontre la solution: print_frame_gometry_of_all_windows.py .


3 Réponses :


3
votes

Vous utilisez probablement un gestionnaire de fenêtres reparent et à cause de cette fenêtre d'identification a zéro x et y. Vérifiez les coordonnées de la fenêtre mère (qui est le cadre du gestionnaire de fenêtres)


6 commentaires

J'utilise Kwin comme responsable de la fenêtre. Mais comment puis-je obtenir une fenêtre parent?


Avant de demander comment trouver la fenêtre des parents, j'ai googlé et vu cette page. Malheureusement, il s'agit d'environ C xlib (pas de Python XLib), de sorte que cela n'aide pas. Avez-vous une idée de la fenêtre parent avec Python?


parent = id.query_tree (). Parent


Merci beaucoup pour votre aide! La ligne suivante m'a permis d'obtenir une géométrie de cadre: "id.query_tree (). Parent.Quéry_tree (). Parent.get_gometry ()". WM Cadre est grand-parent de la fenêtre du client (au moins à Kwin).


Je suggère d'être une marche indépendante WM pour racine et calculer la relative x, y à chaque étape


Ok, merci encore. J'ai mis en œuvre votre suggestion. Pour rendre cette réponse plus utile aux autres, j'ai écrit un script très court comme exemple: print_frame_geometry_of_all_windows.py



2
votes

1 commentaires

Donc, cadre () ne fait que renvoyer l'ancêtre secondaire du client transmis? Je ne pense pas que cela accomplit la suggestion de marcher sur l'arbre à la racine et de calculer le x, y à chaque étape ...



0
votes

Voici ce que je suis venu avec cela semble bien fonctionner: xxx

exemple complet ici .


0 commentaires