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).
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?
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 .
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()
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
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"