Существует ли WinSpy ++ подобный инструмент для Linux / X / GTK / QT?

8

Когда я использовал Windows, я иногда использовал WinSpy ++, который позволял указывать на окно или элемент управления (виджет, элемент окна), чтобы увидеть подробности об этом (включая значения полей структуры / класса). описывая этот конкретный экземпляр), отправлять ему сообщения оконного менеджера и т. д. Одной из обычных тривиальных задач, для которых я использовал его, было копирование текста из невыбираемого виджета (например, метки, которая не позволяет выбирать и копировать текст из это как текстовое поле). Есть ли аналогичный инструмент, который я могу использовать с приложениями GUI GNU / Linux?

Иван
источник

Ответы:

7

Вы не можете ожидать здесь 1: 1. Я не знаю WinSpy ++, но вполне вероятно, что он может распространяться на несколько различных инструментов, некоторые его функции просто не имеют смысла в X, и наоборот, инструменты X имеют дополнительные функции, которые не имеют смысла в Окна.

Базовый дистрибутив X11 поставляется с рядом простых инструментов . Наиболее вероятные из них:

  • xclients перечислить программы, которые имеют связь с дисплеем
  • xprop отобразить свойства окна
  • xwininfo отображать техническую информацию об окне (положение, визуальные эффекты,…)

Есть также инструменты для манипулирования Х ресурсов : appres, editres(для тех немногих приложений , которые реализуют его) listres, xrdb.

Двумя сторонними утилитами, которые часто полезны для получения информации и работы с окнами, являются wmctrl(выполнение действий диспетчера окон из командной строки) и xdotool(отправка событий в окно).

Жиль "ТАК - перестань быть злым"
источник
6

Ни менеджер окон, ни X-сервер не знают о виджетах / элементах управления, поэтому не существует стандартного способа, которым инструмент мог бы запрашивать у системы сведения о виджетах другого приложения. Приложение в основном отправляет X-серверу такие вещи, как растровые изображения, операции рисования многоугольника и операции рисования текста.

Однако существуют инструменты, которые могут подключаться к процессу и проверять структуры данных его набора инструментов виджетов. Для приложений, использующих GTK +, есть Parasite . Вилка Паразита теперь включена в GTK + начиная с версии 3.14.

Для Qt быстрый поиск включает Qt Inspector , вдохновленный KSpy, инструментом, скрытым в репозиториях KDE.

Если вам нужно выяснить, какой набор инструментов для виджетов использует приложение, вы можете перечислить библиотеки, от которых это зависит, с помощью инструмента командной строки ldd.

Филипп
источник
3

В принципе, не совсем.

Чтобы получить информацию об окне, вы можете использовать

xwininfo

команда. Однако неудивительно, что, поскольку X11 отличается от Windows, он не печатает ту же информацию. Я не знаю ни одного способа скопировать текст из невыбираемых элементов управления, хотя, возможно, они могут быть менее распространенными, чем в Windows.

Что касается отправки сообщений оконного менеджера, я не уверен в этом. Возможно, вы сможете использовать инструмент, основанный на расширении XRECORD, например Xnee . Тем не менее, я никогда не пробовал это.

Джеймс Янгман
источник
я думаю, что для копирования текста из невыбираемого элемента управления / окна это должно быть частью доступности (программы / инструментария). (но afaik, стандарт на это далеко не зрелый.)
yuyichao