it-swarm.com.de

Welches Fenster hat aktuell den Fokus?

Ich möchte (programmgesteuert) wissen, welches Fenster den aktuellen Fokus hat. Gibt es einen Window-Manager-unabhängigen Weg, das herauszufinden?

Wie kann man sonst bestimmen, welches Fenster in Compiz oder Metacity den Fokus hat?

5
Erigami

Was Sie wollen, ist libwnck (wenn Sie nur an Windows interessiert sind) oder libbamf (wenn Sie an Windows und den Anwendungen interessiert sind, die diese besitzen).

5
Michael Terry

versuche es mit der wnck lib und benutze dann diesen 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()
3
akazuko

Wenn Sie gerne ein wenig X11-Programmierung machen, ist die EWMH-Spezifikation genau das, wonach Sie suchen _ NET_ACTIVE_WINDOW .

3
RAOF

Sie können auch xdotool: verwenden

xdotool getwindowfocus

würde die Fenster-ID des fokussierten Fensters zurückgeben und:

xdotool getwindowfocus getwindowname

würde dir seinen Namen sagen.

2
frabjous

Wenn Sie etwas an die Shell zurückschicken können:

xdpyinfo | grep focus

Sollte arbeiten.

Bearbeiten: Für eine etwas sauberere Ausgabe versuchen Sie Folgendes:

xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2
1
Oli

Aus 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.

Dies ist, was ich benutze, um den Titel zu bekommen. (Ich bin am 10.04.)

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