Articles of xlib

xlib是否有一个活动的窗口事件?

我正在尝试编写一个程序来跟踪活动窗口使用Xlib时的变化。 我很难找出最好的方法来做到这一点。 这些是我的想法到目前为止: 每秒钟使用_NET_ACTIVE_WINDOW来获取活动窗口,如果它已经改变,然后运行事件的相关代码。 获取所有窗口的列表,并听取他们的重点事件。 我将不得不弄清楚如何保持最新的打开窗口列表。 他们是一个更简单/更好的方法? 我是用Xlib编程的新手。

将应用embedded到窗口中

FvwmButtons(fvwm窗口pipe理器的一个模块)具有Swallow函数,将应用程序的窗口embedded到面板中。 我必须用Motif和Xlib来做这样的事情。 我想embedded一个Xclock到我的应用程序。 我想我必须改变embedded式应用程序的窗口ID。 我怎样才能做到这一点?

Xlib:closures窗口总是会导致致命的IO错误?

我不知道为什么会发生这种情况,但是我在C ++中使用Xlib创build的任何窗口在尝试closures时都会向terminal输出一个错误,并使用Xbutton。 我可以没有错误地以编程方式closures它,它只是Xbutton。 错误如下: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" after 483 requests (483 known processed) with 0 events remaining. 请求数量每次都是不同的,但总是有0个事件。 为什么会这样呢? 原因似乎并不是我的代码,因为它不pipe是什么,也不向队列发送closures事件。 我试过拦截Atom WM_WINDOW_DELETE,并且在closures窗口时,它不会运行在期望的代码上。 编辑:添加事件循环代码。 while(XPending(display)) { XNextEvent(display, &event); pthread_mutex_unlock(&mutex); if(event.type == Expose) { XWindowAttributes getWindowAttributes; pthread_mutex_lock(&mutex); XGetWindowAttributes(display, window, &getWindowAttributes); if(state.currentState == STATE_NORMAL) { state.normX = getWindowAttributes.x; state.normY […]

如何使用GTK,XLib或类似的方式在另一个程序中embedded程序?

我试图做一个“简单”的程序,只是列出所有打开的程序,一旦你select一个,它会在你的窗口内打开它(就像你可以说的缩略图,但你也可以交互)。 有一件事,它只能是一种方法(我不能改变embedded的程序,例如添加一个“套接字”或“插件”)。 我希望能够embedded任何程序(如Opera,evince,JDownloader等)。 有没有人有任何想法,我怎么能做到这一点? 如果使用GTK无法完成,可以使用X还是类似的方法来完成? 怎么样?

C ++和Xlib – 中心窗口

我已经开始直接学习基于XLib的GUI应用程序编程,并且试图在屏幕上创build一个居中的窗口。 我不知道用来达到这个目的的常用技术。 我的代码(这是行不通的)是这样的(我使用CodeBlocks) #include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xos.h> #include <X11/Xatom.h> #include <X11/keysym.h> #include <GL/glew.h> #include <GL/freeglut.h> int screen; Display *display; XSetWindowAttributes window_attributes; Window mainwindow; XEvent events; int main(int argc, char** argv) { display = XOpenDisplay(NULL);screen = DefaultScreen(display); window_attributes.background_pixel = XWhitePixel(display, screen); window_attributes.border_pixel = XBlackPixel(display, screen); window_attributes.win_gravity = SouthWestGravity; mainwindow = […]

使用X11的Xcomposite扩展程序获取封面或不可见或最小化的窗口截图

我有下面的开始代码来获得X窗口的屏幕截图(窗口可以被覆盖,不可见或最小化)。 #include <stdlib.h> #include <stdio.h> #include <X11/Xlib.h> #include <X11/Xh> #include <X11/extensions/Xcomposite.h> #include <X11/extensions/Xrender.h> int main () { Display *display = XOpenDisplay (NULL); XID xid = 90177543; // xdotool search –name "World of Warcraft" | head -1 // Check if Composite extension is enabled int event_base_return; int error_base_return; if (XCompositeQueryExtension (display, &event_base_return, &error_base_return)) printf ("COMPOSITE IS […]

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服务器或其他任何东西。