web-dev-qa-db-ja.com

どのウィンドウに現在フォーカスがありますか?

どのウィンドウが現在フォーカスされているかを(プログラムで)知りたいのですが。それを発見するウィンドウマネージャーに依存しない方法はありますか?

それ以外の場合、CompizまたはMetacityでどのウィンドウにフォーカスがあるかをどのように判断しますか?

5
Erigami

あなたが望むのは libwnck (ウィンドウだけに興味がある場合)または libbamf (ウィンドウとウィンドウを所有するアプリケーションに興味がある場合)です。

5
Michael Terry

wnck libを使用してから、次のコードを使用してください。

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

ちょっとしたX11プログラミングをして満足しているなら、 EWMH仕様 があなたが望んでいることです-具体的には _ NET_ACTIVE_WINDOW

3
RAOF

もう1つ使用できるのは、 xdotool: です

xdotool getwindowfocus

フォーカスされたウィンドウのウィンドウIDを返します。

xdotool getwindowfocus getwindowname

その名前を教えてくれます。

2
frabjous

何かをシェルにpingできる場合:

xdpyinfo | grep focus

動作するはずです。

編集:出力を少しきれいにするには、これを試してください:

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

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.

これは、タイトルを取得するために使用するものです。 (私は10.04で)

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