Как я могу xprop или xwininfo Gnome-Do?
Мне нужно увидеть свойства X всплывающего окна Gnome-Do в отношении этого вопроса, который я задавал ранее. Проблема в том, что как только окно Gnome-Do теряет фокус, оно закрывается, поэтому я не могу изменить фокус на терминал для запуска xprop, Ответ, который я продолжаю видеть в Интернете:
sleep 5; xprop
Затем откройте окно Gnome-Do и дождитесь xprop начать. Это кажется умным, но просто не работает:
$ спать 5; xprop xprop: error: не могу схватить мышь.
То же самое касается xwininfo:
$ спать 5; xwininfo
xwininfo: пожалуйста, выберите окно, о котором вы
хотел бы получить информацию, нажав на
мышь в этом окне.
xwininfo: ошибка: не удается схватить мышь. Я тоже пробовал бегать xprop с использованием Mod+R ярлык в Awesome WM, но пока открыто окно Gnome-Do, ярлык не работает. Он просто вводит г в поле поиска.
У меня больше нет идей. Как мне это сделать?
2 ответа
Если вы запустите скрипт ниже, он будет записывать в течение 10 секунд (или в любое другое установленное время) вывод xprop Команда на переднем окне (запуск xprop -root команда). Впоследствии он записывает вывод по истечении времени в файл: outfile.txt
Если вы убедитесь, что сохранили Gnome-Do окно активно, пока скрипт не завершится, вы можете быть уверены, что последняя запись соответствует Gnome-Do окно.
Использовать его
- Просто скопируйте приведенный ниже скрипт в пустой файл, установите в разделе заголовка желаемый путь к выходному файлу (
outfile =, используйте абсолютный путь). Сохранить какrecord_xprop.py Запустите скрипт командой:
python3 /path/to/record_xprop.pyПозвони
Gnome-Doокно (или любое другое приложение, из которого вам нужны данные).- По истечении этого времени ваш выходной файл будет в пять раз больше отображать
xprop -rootкоманда, разделенная пунктирной линией.
Заметка
Если вам нужно больше времени, просто измените "5" в строке:
while t < 5:
в любое другое значение, которое вам нужно
Сценарий
#!/usr/bin/env python3
import subprocess
import time
outfile = "/home/jacob/Bureaublad/outfile.txt"
data = []; t = 0
while t < 5:
data.append(subprocess.check_output(["/bin/bash", "-c", "xprop -root"]).decode("utf-8"))
time.sleep(2)
t = t + 1
with open(outfile, "wt") as out:
for rec in data:
out.write(rec+"\n"+"-"*20+"\n\n")
редактировать
Если это не работает по какой-либо причине (по-видимому, окно не является передним, как признано xprop), мы могли бы сделать то же самое с wmctrl -l команда (заменить xprop -root от wmctrl -l в сценарии), чтобы сначала идентифицировать окно по его имени.
Как только это будет сделано, мы можем запустить снова xpropс -name опция, чтобы получить необходимую информацию: xprop -name <windowname>
Для обеих команд вы можете запустить sleep или, если вам нужно больше времени, снова запустите скрипт.
Джейкоб получил это в комментариях!
С использованием sleep 1; wmctrl -l Команда, затем открыв Gnome-Do, я получил этот вывод:
0x00e000b9 0 бонус-дебиан До
Который показывает название окна Gnome-Do. Тогда я мог бы использовать имя, чтобы идентифицировать окно для xprop:
sleep 1; xprop -name "Do"
Который дал мне вывод, который я был после:
$ сон 1; xprop -имя "До"
WM_STATE (WM_STATE):
состояние окна: снято
окно иконки: 0x0
GDK_TIMESTAMP_PROP(GDK_TIMESTAMP_PROP) = 0x61
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 14680093
_XEMBED_INFO(_XEMBED_INFO) = 0x1, 0x1
_NET_WM_USER_TIME_WINDOW(WINDOW): идентификатор окна # 0xe00004
WM_CLIENT_LEADER(WINDOW): идентификатор окна # 0xe00001
_NET_WM_PID(CARDINAL) = 6708
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "бонус-дебиан"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
программа указала минимальный размер: 19 на 19
гравитация окна: Северо-Запад
WM_PROTOCOLS(ATOM): протоколы WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "Делать", "Делать"
WM_ICON_NAME (STRING) = "Делать"
_NET_WM_ICON_NAME(UTF8_STRING) = "Делать"
WM_NAME (STRING) = "Делать"
_NET_WM_NAME(UTF8_STRING) = "Делать"