Existe-t-il un outil similaire à WinSpy ++ pour Linux / X / GTK / QT?

8

Lorsque j'utilisais Windows, j'ai parfois fait bon usage de WinSpy ++ qui permettait de pointer vers une fenêtre ou un contrôle (un widget, un élément de fenêtre) pour voir les détails à ce sujet (y compris les valeurs des champs de la structure / classe décrivant cette instance particulière), lui envoyer des messages de gestionnaire de fenêtres, etc. L'une des tâches triviales habituelles pour laquelle je l'ai utilisé était de copier du texte à partir d'un widget non sélectionnable (comme une étiquette, qui ne permet pas de sélectionner et de copier du texte comme un champ de texte). Existe-t-il un outil analogue que je peux utiliser avec les applications GUI GNU / Linux?

Ivan
la source

Réponses:

7

Vous ne pouvez pas vous attendre à un mappage 1: 1 ici. Je ne connais pas WinSpy ++, mais il est probable que ce qu'il peut faire est réparti sur plusieurs outils différents, certaines de ses fonctionnalités n'ont tout simplement pas de sens sous X, et inversement, les outils X ont des fonctionnalités supplémentaires qui n'ont pas de sens sous Les fenêtres.

La distribution de base X11 est livrée avec un certain nombre d'outils simples . Les plus susceptibles d'être pertinentes ici sont:

  • xclients pour répertorier les programmes connectés à un écran
  • xprop pour afficher les propriétés de la fenêtre
  • xwininfo afficher des informations techniques sur une fenêtre (position, visuels,…)

Il existe également des outils pour manipuler les ressources X : appres, editres(pour les quelques applications qui la mettre en œuvre), listres, xrdb.

Deux utilitaires tiers qui sont souvent utiles pour obtenir des informations et agir sur les fenêtres sont wmctrl(effectuer des actions du gestionnaire de fenêtres à partir de la ligne de commande) et xdotool(envoyer des événements à une fenêtre).

Gilles 'SO- arrête d'être méchant'
la source
6

Ni le gestionnaire de fenêtres ni le serveur X ne connaissent les widgets / contrôles, il n'y a donc aucun moyen standard qu'un outil puisse interroger le système pour obtenir les détails des widgets d'une autre application. Une application envoie principalement au serveur X des choses comme des pixmaps, des opérations de dessin de polygones et des opérations de dessin de texte.

Cependant, il existe des outils qui peuvent s'attacher à un processus et inspecter les structures de données de sa boîte à outils de widget. Pour les applications qui utilisent GTK +, il y a Parasite . Un fork de Parasite est désormais inclus dans GTK + depuis la version 3.14.

Pour Qt, une recherche rapide révèle Qt Inspector , inspiré de KSpy, un outil caché dans les référentiels KDE.

Si vous avez besoin de savoir quel kit d'outils de widget une application utilise, vous pouvez répertorier les bibliothèques dont elle dépend en utilisant l'outil de ligne de commande ldd.

philippe
la source
3

En gros, pas vraiment.

Pour obtenir des informations sur une fenêtre, vous pouvez utiliser le

xwininfo

commander. Cependant, sans surprise, car X11 est différent de Windows, il n'imprime pas les mêmes informations. Je ne connais aucun moyen de copier du texte à partir de contrôles non sélectionnables, bien que ceux-ci soient peut-être moins courants que sous Windows.

Quant à l'envoi de messages du gestionnaire de fenêtres, je n'en suis pas sûr. Vous pourrez peut-être utiliser un outil basé sur l'extension XRECORD, par exemple Xnee . Cependant, je n'ai jamais essayé ça.

James Youngman
la source
pour copier du texte hors du contrôle / de la fenêtre non sélectionnable, je suppose que cela devrait faire partie de l'accessibilité (du programme / de la boîte à outils). (mais afaik, la norme à ce sujet est loin d'être mature.)
yuyichao