我想在屏幕上的特定像素处绘制简单的图元(类似于这个问题).为了做到这一点,我使用窗口管理器的叠加窗口绘制所有窗口的顶部.我可以看到我正在绘制的形状和鼠标事件通过,但我没有看到例如窗口移动位于叠加窗口下方(除非我杀死我的应用程序).我是Xlib编程的新手,sry可能会问一个简单的问题.
#include <assert.h>
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xfixes.h>
#include <X11/extensions/shape.h>
#include <cairo.h>
#include <cairo-xlib.h>
Display *d;
Window overlay;
Window root;
int width, height;
void
allow_input_passthrough (Window w)
{
XserverRegion region = XFixesCreateRegion (d, NULL, 0);
XFixesSetWindowShapeRegion (d, w, ShapeBounding, 0, 0, 0);
XFixesSetWindowShapeRegion (d, w, ShapeInput, 0, 0, region);
XFixesDestroyRegion (d, region);
}
void
prep_overlay (void)
{
overlay = XCompositeGetOverlayWindow (d, root);
allow_input_passthrough (overlay);
}
void draw(cairo_t *cr) {
int quarter_w = width / 4; …Run Code Online (Sandbox Code Playgroud) 我想做以下事情:创建一个全屏,始终在顶部pygtk窗口,其中webkit小部件显示一些html,但是有一个完全透明的框,以便下面的窗口可见.(这似乎是可能的:是否可以使用WebKit在清晰的背景上呈现Web内容?)
我想要的是(有时)将透明框中出现的所有鼠标事件传递到应用程序窗口下方的窗口,以便我可以正常地与它们进行交互.因此,不仅视觉上透明,而且对鼠标事件也是透明的.
从理论上讲,我想我可以通过pygtk Eventbox捕获我感兴趣的所有事件,使用wnck在我的正下方找到窗口,并使用python-xlib将此事件传递给它.
这似乎不是最优雅的解决方案; 有没有更好的办法?