Qual janela tem foco atual?

5

Gostaria de saber (programaticamente) qual janela tem o foco atual. Existe uma maneira independente de descobrir o que é o gerenciador de janelas?

Caso contrário, como alguém pode determinar qual janela tem foco no Compiz ou no Metacity?

    
por Erigami 10.02.2011 / 15:31

6 respostas

5

O que você quer é libwnck (se você estiver interessado apenas em janelas) ou libbamf (se você estiver interessado em janelas e aplicativos que os possuam).

    
por Michael Terry 11.02.2011 / 13:47
3

Se você está feliz em fazer uma pequena programação em X11, então a especificação EWMH é o que você procura - especificamente _NET_ACTIVE_WINDOW .

    
por RAOF 11.02.2011 / 00:05
2

tente usar o wnck lib e use este código:

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()
    
por akazuko 15.06.2014 / 14:14
2

Outra coisa que você pode usar é o xdotool:

xdotool getwindowfocus

retornaria o ID da janela da janela focada e:

xdotool getwindowfocus getwindowname

diria seu nome.

    
por frabjous 10.02.2011 / 16:28
1

Bem, se você puder fazer ping de volta para o shell:

xdpyinfo | grep focus

Deve funcionar.

Editar: para uma saída ligeiramente mais limpa, tente isto:

xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2
    
por Oli 10.02.2011 / 15:40
1

Do info 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.

Isto é o que eu uso para obter o título. (Eu em 10.04)

xwininfo -id "$(xdotool getactivewindow)" |sed -n \
  "2s/^xwininfo: Window id: \(0x[[:xdigit:]]\+\) \x22\(.*\)\x22$//p"
    
por Peter.O 11.02.2011 / 14:22