Как я могу 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) = "Делать"