Je voudrais savoir (par programme) quelle fenêtre a le focus actuel. Existe-t-il un moyen indépendant de gérer les fenêtres pour découvrir cela?
Sinon, comment déterminer quelle fenêtre est active dans Compiz ou Metacity?
essayez d'utiliser la bibliothèque wnck puis utilisez ce code:
import wnck
import gtk
while True:
if __== '__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()
Si vous êtes content de faire un peu de programmation X11, alors le spécification EWMH correspond exactement à ce que vous recherchez, plus précisément _ NET_ACTIVE_WINDOW .
Une autre chose que vous pouvez utiliser est xdotool:
xdotool getwindowfocus
renverrait l'ID de fenêtre de la fenêtre focalisée, et:
xdotool getwindowfocus getwindowname
vous dirait son nom.
Eh bien, si vous pouvez envoyer une requête ping à Shell:
xdpyinfo | grep focus
Devrait marcher.
Edit: Pour une sortie légèrement plus propre, essayez ceci:
xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2
De 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.
C'est ce que j'utilise pour obtenir le titre. (Je un sur 10.04)
xwininfo -id "$(xdotool getactivewindow)" |sed -n \
"2s/^xwininfo: Window id: \(0x[[:xdigit:]]\+\) \x22\(.*\)\x22$/\2/p"