Articles of xlib

X11中“Invalidate Rect”/“WM_PAINT”的等效

我将一些代码从Windows移植到XLib。 在Windows代码中,我可以通过调用InvalidateRect强制重绘,然后处理相应的WM_PAINT消息。 但是,我很难find如何在X11 / XLib中做到这一点。 我看到有一个Expose消息,但不知道这是否是一回事。 如果重要的话,我需要这样做来强制窗口以一定的帧速率渲染一个基于OpenGL的程序。

linux,C ++,xft:如何使用它?

我尝试使用Xft, 教程 ,让他们调用一个教程,看起来像写在朝鲜北方的营地…我也发现了这个。 所以让我尝试一步一步来做: // g++ XftTest.cc -lX11 -lXft `pkg-config –cflags freetype2` #include<unistd.h> #include<X11/Xlib.h> #include<X11/Xutil.h> #include<X11/Xft/Xft.h> int main() { Display *display; XftFont *font; XftDraw *xftdraw; XRenderColor xrcolor; XftColor xftcolor; display = XOpenDisplay(0); Window XP = XCreateSimpleWindow(display,DefaultRootWindow(display),0,0,360,90,0,0,0); XMapWindow(display,XP); font = NULL; /* added 6/16 */ //font = XftFontOpenName(display,0,"NorthKorea-50"); // how to check if this is good […]

使用Python gtk3在X上进行全局键绑定

我正在寻找一些Python xlib全局键绑定的例子,它可以和gtk3一起工作,就像在http://www.siafoo.net/snippet/239上为gtk2所做的那样。 这里非常类似的代码: from Xlib.display import Display from Xlib import X import gtk.gdk import threading import gobject class GlobalKeyBinding (gobject.GObject, threading.Thread): __gsignals__ = { 'activate': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()), } def __init__ (self): gobject.GObject.__init__ (self) threading.Thread.__init__ (self) self.setDaemon (True) self.keymap = gtk.gdk.keymap_get_default () self.display = Display () self.screen = self.display.screen () self.root = self.screen.root self.map_modifiers () […]

在没有OpenGL的X11的QT上显示图像的最快方法是什么?

我需要在QT小部件中显示原始图像。 我在framebuffer上运行X11,所以OpenGL不可用。 图像和帧缓冲区都是相同的格式–RGB565,但如果需要的话,我可以将其更改为任何其他格式。 我不需要混合或缩放。 我只是需要显示像素。 我使用QPainter :: drawImage,但它将QImage转换为QPixmap,这种转换似乎是非常缓慢的。 也是Xrender的支持,我认为不需要额外的开销来支持Xrender中的混合,而我并不需要它 有没有更好的办法? 如果在QT中不可用,我可以使用Xlib或任何其他库或协议。 我可以修改驱动程序,X服务器或其他任何东西。

截图X11

使用Xlib库,用什么函数来截取X11桌面? 我宁愿一个比获取单个像素更高效的方法。 谢谢。

我如何优雅地退出X11事件循环?

我发现几乎每个教程都告诉我为我的事件循环执行此操作: XEvent event; while (true) { XNextEvent(display, &event); switch (event.type) { case Expose: printf("Expose\n"); break; default: break; } } 但是,单击Xclosures程序将导致此消息。 XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" after 10 requests (10 known processed) with 0 events remaining. 这些例子表明使用无限循环对我来说确实很奇怪。 这听起来不自然,我的其他X11程序不这样做。 所以我search了一下。 我发现如何捕捉窗口closures事件。 Atom wmDeleteMessage = XInternAtom(mDisplay, "WM_DELETE_WINDOW", False); XSetWMProtocols(display, window, &wmDeleteMessage, […]

如何用xlib创build一个游戏循环

我正在尝试创build一个xlib窗口的游戏循环,但是我无法正确地绘制窗口。 现在我正在用XCreateSimpleWindow(…)创build一个窗口,并使用for循环来逐个绘制所有像素。 (这些像素的颜色是从一个大的整数数组中读取的,现在我已经把所有的像素设置为蓝色)。现在的实际游戏循环如下: void loop() { while (true) { // Clear the window (the background color is set to white) XClearWindow(dsp, win); // Loop through all pixels of the 800*600 window for (int j = 0; j < 600; j++) { for (int i = 0; i < 800; i++) { // Read the color […]

如何通过Xlib在启animation面中绘制一个string

这里是我的代码,我不能跳出while(!done)函数 使用XFlush(d)可以显示窗体缓冲区,并且不会在XCloseDisplay(d)之前消失, 我想要画这样的string g ++ -o youname youcppname -lX11 #include <X11/Xlib.h> #include <X11/Xatom.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main(void) { Display *d; Window w; XEvent e; const char *msg = "Hello, World!"; int s; bool done = false; /* open connection with the server */ d = XOpenDisplay(NULL); if (d == […]

Xlib这是如何(删除窗口装饰)工作?

以下代码如何删除窗口边框? //note the struct is declared elsewhere, is here just for clarity. //code is from [http://tonyobryan.com/index.php?article=9][1] typedef struct Hints { unsigned long flags; unsigned long functions; unsigned long decorations; long inputMode; unsigned long status; } Hints; //code to remove decoration Hints hints; Atom property; hints.flags = 2; hints.decorations = 0; property = XInternAtom(display, "_MOTIF_WM_HINTS", true); […]

Linux上的无边界窗口

他们是一个标准的方式来使一个特定的窗口无边界在Linux上? 我相信窗口边框是由窗口pipe理器绘制的,所以可能只是需要使用特定的窗口pipe理器(这样会发现,我只需要知道哪一个)…我希望是所有的窗口pipe理者可能会遵循一些标准,使我可以通过编程来实现这一点…