どのウィンドウが現在フォーカスされているかを(プログラムで)知りたいのですが。それを発見するウィンドウマネージャーに依存しない方法はありますか?
それ以外の場合、CompizまたはMetacityでどのウィンドウにフォーカスがあるかをどのように判断しますか?
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()
ちょっとしたX11プログラミングをして満足しているなら、 EWMH仕様 があなたが望んでいることです-具体的には _ NET_ACTIVE_WINDOW 。
もう1つ使用できるのは、 xdotool: です
xdotool getwindowfocus
フォーカスされたウィンドウのウィンドウIDを返します。
xdotool getwindowfocus getwindowname
その名前を教えてくれます。
何かをシェルにpingできる場合:
xdpyinfo | grep focus
動作するはずです。
編集:出力を少しきれいにするには、これを試してください:
xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2
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"