2012-01-28 3 views
5

다음과 같이하고 싶습니다 : 항상 일부 python 창 상단에 전체 화면을 만드십시오. 이는 완전히 투명하여 아래의 창을 볼 수 있습니다. (가능한 것 같습니다 : Is it possible to render web content over a clear background using WebKit?)pygtk 모든 X (마우스) 이벤트를 무시하는 상자가있는 창

투명 상자에서 발생하는 모든 마우스 이벤트를 내 응용 프로그램 창 아래의 창에 전달하여 정상적으로 상호 작용할 수 있도록하고 싶습니다. . 시각적으로 투명 할뿐만 아니라 마우스 이벤트에도 투명합니다.

이론적으로 나는 pygtk Eventbox로 관심있는 모든 이벤트를 잡아 내고, wnck로 직접 아래 창을 찾고, python-xlib로이 이벤트를 전달한다고 가정한다.

이것은 가장 우아한 해결책처럼 보이지 않습니다. 거기에 더 좋은 방법이 있습니까?

답변

5

이벤트 전달은 예상대로 작동하지 않습니다. 경쟁 조건이 많이 발생하고 일부 앱에서는 XSendEvent의 내용을 무시합니다.

입력 셰이프 마스크를 설정할 수 있습니다. http://www.x.org/releases/current/doc/xextproto/shape.html을보고 을 /usr/include/X11/extensions/Xfixes.h에서 보면 모양을 "종류"(여기서는 ShapeInput)로 지정할 수 있습니다. 같은

뭔가 :

XRectangle rect; 
XserverRegion region = XFixesCreateRegion(display, &rect, 1); 
XFixesSetWindowShapeRegion(display, window, ShapeInput, 0, 0, region); 
XFixesDestroyRegion(display, region); 

ShapeInput을 설정하는 기능 "은"당신이 X11 정말 엉터리 이전 버전에 대해 신경 경우 5-6 세, 당신이 묶였던 될 수있다.

+0

아, 고맙습니다. – Rumex

+0

또한 올바른 용어를 검색했을 때 비슷한 것을 보았습니다. http://stackoverflow.com/questions/4326534/x11-xlib-create-glasspane-window – Rumex