Какое окно имеет текущий фокус?

Я хотел бы знать (программно), какое окно имеет текущий фокус. Существует ли независимый от оконного менеджера способ обнаружения этого?

В противном случае, как определить, какое окно имеет фокус в Compiz или Metacity?

5
задан 10 October 2011 в 21:08

6 ответов

Еще одна вещь, которую вы можете использовать: xdotool:

xdotool getwindowfocus

вернет идентификатор окна сфокусированного окна и:

xdotool getwindowfocus getwindowname

скажет вам свое имя.

0
ответ дан 10 October 2011 в 21:08

Если вы довольны небольшим программированием на X11, то вам нужна спецификация EWMH , в частности _NET_ACTIVE_WINDOW .

0
ответ дан 10 October 2011 в 21:08

попробуйте использовать библиотеку wnck, а затем используйте этот код:

import wnck
import gtk

while True:
if __name__ == '__main__':
    screen = wnck.screen_get_default()
    screen.force_update()
    while True:
        while gtk.events_pending():
            gtk.main_iteration()
        #time.sleep(0.5)
        print screen.get_active_window().get_name()
0
ответ дан 10 October 2011 в 21:08

То, что вы хотите, это libwnck (если вы просто заинтересованы в окнах) или libbamf (если вы заинтересованы в окнах и приложениях, которым они принадлежат). ]

0
ответ дан 10 October 2011 в 21:08

Из информации xtool:

getactivewindow
   Output the current active window. This command is often more
   reliable than getwindowfocus. The result is saved to the window
   stack. See "WINDOW STACK" for more details.

Это то, что я использую для получения названия. (Я на 10.04)

xwininfo -id "$(xdotool getactivewindow)" |sed -n \
  "2s/^xwininfo: Window id: \(0x[[:xdigit:]]\+\) \x22\(.*\)\x22$/\2/p"
0
ответ дан 10 October 2011 в 21:08

Хорошо, если вы можете пинговать что-то обратно в оболочку:

xdpyinfo | grep focus

Должно работать.

Редактировать: Для более чистого вывода попробуйте следующее:

xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2
0
ответ дан 10 October 2011 в 21:08

Другие вопросы по тегам:

Похожие вопросы: