Я должен видеть X свойств всплывающего окна Gnome - Do, в отношении этого вопроса, который я задал ранее. Проблема состоит в том, что, как только окно Gnome - Do теряет фокус, это закрывается, таким образом, я не могу изменить фокус на терминал для выполнения xprop
. Ответ, который я продолжаю видеть в Интернете:
sleep 5; xprop
Затем откройте окно Gnome - Do и ожидайте xprop
запускаться. Это кажется умным, но просто не работает:
$ sleep 5; xprop xprop: error: Can't grab the mouse.
То же идет для xwininfo
:
$ sleep 5; xwininfo xwininfo: Please select the window about which you would like information by clicking the mouse in that window. xwininfo: error: Can't grab the mouse.
Я также попытался работать xprop
использование Mod+R
ярлык в Потрясающем WM, но в то время как окно Gnome - Do открыто, ярлык, не работает. Это просто вводит r в поле поиска.
У меня больше нет идей. Как я делаю это?
Если вы запустите приведенный ниже скрипт, он в течение 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 bonus-debian Do
Который показывает имя гнома. -До окна. Тогда я мог бы использовать имя, чтобы идентифицировать окно для xprop:
sleep 1; xprop -name "Do"
, которое дало мне вывод, который я получил после:
$ sleep 1; xprop -name "Do" WM_STATE(WM_STATE): window state: Withdrawn icon window: 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): window id # 0xe00004 WM_CLIENT_LEADER(WINDOW): window id # 0xe00001 _NET_WM_PID(CARDINAL) = 6708 WM_LOCALE_NAME(STRING) = "en_US.UTF-8" WM_CLIENT_MACHINE(STRING) = "bonus-debian" WM_NORMAL_HINTS(WM_SIZE_HINTS): program specified minimum size: 19 by 19 window gravity: NorthWest WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST WM_CLASS(STRING) = "Do", "Do" WM_ICON_NAME(STRING) = "Do" _NET_WM_ICON_NAME(UTF8_STRING) = "Do" WM_NAME(STRING) = "Do" _NET_WM_NAME(UTF8_STRING) = "Do"