2012-01-28 48 views
5

我想要做以下事情:創建一個全屏幕,始終在頂部pygtk窗口與webkit小部件顯示一些html,但與框這是完全透明的,以便下面的窗口可見。 (這似乎是可能的:Is it possible to render web content over a clear background using WebKit?pygtk窗口與忽略所有X(鼠標)事件(通過它們通過)的框

我想是(有時)將透明框中發生的所有鼠標事件傳遞到應用程序窗口下方的窗口,以便我可以正常地與它們交互。所以不僅僅是視覺透明,而且對鼠標事件也是透明的。

理論上,我想我可以用pygtk事件框捕捉所有感興趣的事件,用wnck在我的正下方找到窗口,然後用python-xlib將它傳遞給它。

這看起來不像是最優雅的解決方案;有沒有更好的辦法?

回答

5

轉發事件不會像你猜測的那樣正常工作;它創造了很多競賽條件,並且一些應用程序無論如何都會忽略來自​​的東西。

你可以做的是設置輸入形狀掩碼。請參閱http://www.x.org/releases/current/doc/xextproto/shape.html,然後在/usr/include/X11/extensions/Xfixes.h中查看XFixesSetWindowShapeRegion(),它允許您指定一個形狀「kind」(這裏您需要ShapeInput)。

喜歡的東西:

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

設置ShapeInput的能力是「唯一的」 5-6歲,所以如果你關心實在太蹩腳了舊版本的X11的,你可能會大清洗。

+0

啊,謝謝浩劫! – Rumex 2012-02-19 19:25:21

+0

此外,谷歌搜索正確的條款,我碰到類似的東西:http://stackoverflow.com/questions/4326534/x11-xlib-create-glasspane-window – Rumex 2012-02-19 19:31:17

相關問題