2011-02-08 23 views
4

有什麼辦法可以獲得當前打開的所有窗口的列表,並查看Python的頂部(即活動?)窗口是什麼?瞭解Python中Gnome/Linux/Ubuntu上的哪個窗口處於活動狀態?

這是在Ubuntu Linux上使用Gnome。

wnck看起來可能會這樣做,但它很缺乏文檔。

+3

[C文檔](http://library.gnome.org/devel/libwnck/stable/)或[Perl文檔](http://gtk2-perl.sourceforge.net/ doc/pod/Gnome2/Wnck/index.html)可能是你需要的。 Python並沒有很大的不同。 – 2011-02-08 16:57:55

+0

請參見[使用Python獲取活動窗口](http://stackoverflow.com/a/36419702/562769) – 2016-04-05 07:31:49

回答

8
import wnck 
screen = wnck.screen_get_default() 
window_list = screen.get_windows() 
active_window = screen.get_active_window() 

另請參閱Get active window title in X和WnckScreen的文檔中。其他questions containing wnck有有用的代碼示例。

+2

請注意,即使該窗口不再處於活動狀態,在重複查詢時也會始終返回相同的窗口。爲了更新狀態,你必須清除Gtk事件隊列並在調用`get_active_window`前明確調用`force_update`。看一下這個要點:https://gist.github.com/adewes/6960581 – ThePhysicist 2013-10-13 10:19:18

10

下面是使用現代GObject的反省庫,而不是現在已經過時PyGTK的方法喬希李貼出相同的代碼:

from gi.repository import Gtk, Wnck 

Gtk.init([]) # necessary if not using a Gtk.main() loop 
screen = Wnck.Screen.get_default() 
screen.force_update() # recommended per Wnck documentation 

window_list = screen.get_windows() 
active_window = screen.get_active_window() 

至於文檔,檢查出Libwnck Reference Manual。它不是專門針對python的,但使用GObject Introspection的關鍵在於在所有語言中使用相同的API,這要歸功於gir綁定。

此外,Ubuntu的同時附帶了wnck及其相應gir結合開箱即用,但如果你需要安裝它們:

sudo apt-get install libwnck-3-* gir1.2-wnck-3.0 

這也將安裝libwnck-3-dev,這是沒有必要的,但將安裝有用可以使用的文檔DevHelp

相關問題