2011-02-08 4 views
4

현재 열려있는 모든 창 목록을 가져 와서 어떤 창이 상단에 있는지 (즉, 활성화되어 있습니까?) 파이썬에서 볼 수있는 방법이 있습니까?Gnome/Linux/Python의 Ubuntu에서 어떤 창이 활성 상태인지 확인하십시오.

이것은 Gnome을 Ubuntu Linux에서 사용하고 있습니다.

wnck는 이렇게 할 수 있지만 문서가 부족합니다.

+3

[C 설명서] (http://library.gnome.org/devel/libwnck/stable/) 또는 [Perl 설명서] (http://gtk2-perl.sourceforge.net/)를 사용하여 읽을 수있는 설명서 doc/pod/Gnome2/Wnck/index.html)이 아마도 필요한 것일 것입니다. 파이썬은별로 다르지 않습니다. –

+0

[Python을 사용하여 활성 창 가져 오기] (http://stackoverflow.com/a/36419702/562769) –

답변

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에는 유용한 코드 샘플이 있습니다. Libwnck Reference Manual을 확인, 문서에 관해서는

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() 

:

+2

이 창은 더 이상 활성화되지 않아도 반복적으로 쿼리 할 때 항상 동일한 창을 반환합니다. 상태를 업데이트하려면 Gtk 이벤트 큐를 비우고'get_active_window'를 호출하기 전에'force_update'를 명시 적으로 호출해야합니다. 예를 들어이 요점을 살펴보십시오. https://gist.github.com/adewes/6960581 – ThePhysicist

10

여기에 대신 조쉬 리는 게시 된 지금은 사용되지 않는 PyGTK 방법의 현대 G 객체 반성 라이브러리를 사용하여 동일한 코드입니다. 파이썬에 국한된 것은 아니지만 GObject 인트로 스펙 션을 사용하는 요점은 gir 바인딩 덕분에 모든 언어에서 동일한 API를 사용한다는 것입니다. 또한

, 상자 밖으로 바인딩 모두 wnck 및 해당 gir 우분투 배송,하지만 당신이 그들을 설치해야하는 경우 :

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

이 또한 필요하지 않은, libwnck-3-dev를 설치하지만 유용한 설치합니다 DevHelp

+2

이것이 실제 최신 답변이라고 생각합니다. 감사. – jonS90

+0

@MestreLion Hm. 흥미 롭 군. 좋아, 내 코드가 문제인 것 같다. 내 칭찬을 삭제했습니다. 도와 주셔서 감사합니다! –

관련 문제