Erigami Asked: 2011-02-11 06:31:01 +0800 CST2011-02-11 06:31:01 +0800 CST 2011-02-11 06:31:01 +0800 CST 哪个窗口具有当前焦点? 772 我想知道(以编程方式)哪个窗口具有当前焦点。是否有一种独立于窗口管理器的方式来发现它? 否则,如何确定 Compiz 或 Metacity 中哪个窗口具有焦点? python 6 个回答 Voted Best Answer Michael Terry 2011-02-12T04:47:55+08:002011-02-12T04:47:55+08:00 您想要的是libwnck(如果您只对 windows 感兴趣)或libbamf(如果您对 windows 和拥有它们的应用程序感兴趣)。 frabjous 2011-02-11T07:28:58+08:002011-02-11T07:28:58+08:00 您可以使用的另一件事是xdotool: xdotool getwindowfocus 将返回焦点窗口的窗口 ID,并且: xdotool getwindowfocus getwindowname 会告诉你它的名字。 akazuko 2014-06-16T04:14:05+08:002014-06-16T04:14:05+08:00 尝试使用 wnck lib,然后使用以下代码: 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() RAOF 2011-02-11T15:05:18+08:002011-02-11T15:05:18+08:00 如果您乐于进行一点 X11 编程,那么EWMH 规范就是您所追求的——特别是_NET_ACTIVE_WINDOW。 Oli 2011-02-11T06:40:26+08:002011-02-11T06:40:26+08:00 好吧,如果您可以将某些内容ping回shell: xdpyinfo | grep focus 应该管用。 编辑:为了更清晰的输出,试试这个: xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2 Peter.O 2011-02-12T05:22:53+08:002011-02-12T05:22:53+08:00 来自信息 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"
您想要的是libwnck(如果您只对 windows 感兴趣)或libbamf(如果您对 windows 和拥有它们的应用程序感兴趣)。
您可以使用的另一件事是xdotool:
xdotool getwindowfocus
将返回焦点窗口的窗口 ID,并且:
xdotool getwindowfocus getwindowname
会告诉你它的名字。
尝试使用 wnck lib,然后使用以下代码:
如果您乐于进行一点 X11 编程,那么EWMH 规范就是您所追求的——特别是_NET_ACTIVE_WINDOW。
好吧,如果您可以将某些内容ping回shell:
应该管用。
编辑:为了更清晰的输出,试试这个:
来自信息 xtool:
这就是我用来获取标题的方法。(我在 10.04)