Articles of x11

Xlib:如何获得CAPS LOCK状态

如何检索使用Xlib CAPSlocking密钥信息,如果它是打开或closures?

使用xdotool来定位点击并应用适当的操作

我希望有一个xdotool检测,如果右键单击是在一个特定的窗口(我可以捕获窗口ID没有问题),然后运行相应的shell命令/function,如果点击所需的窗口.. 实际上这意味着我想要xdotool获得VLCvideo播放窗口的窗口ID,然后运行一个特定的命令,如果我右键单击该窗口。 我使用的是BASH 4.2.0(1) – 和Xdotool 2.20101012.3049 编辑:这是尽可能接近,但它不起作用: xdotool search –name "VLC" behave %@ mouse-click exec 'myscript' 但是,这些命令可以工作,但并不是我所需要的: xdotool search –name "VLC" behave %@ mouse-enter exec 'myscript' xdotool search –name "VLC" behave %@ mouse-leave exec 'myscript' 干杯..

X11转发影响Java Swing GUI下拉菜单 – 项目不可选,菜单立即崩溃

在Linux服务器上运行Java Swing应用程序,并通过X11转发将X显示回来。 Cygwin正在我的工作站上运行。 使用具有X11转发的PuTTY与服务器build立连接,然后使用ssh -XY。 应用程序启动得很好,但某些GUI元素(主要是下拉菜单)的行为不正确。 有些菜单在打开后立即closures(点击时闪烁打开/closures)。其他菜单不会使用鼠标select/加亮项目。 其他人会select不同的东西,而不是我的房子。 当调用指向时,应用程序在Windows或Linux上工作得很好。 问题似乎与通过X11查看有关。 是否有可能X11是吞咽一些graphics用户界面事件或不够快的重新绘画?

X11 GUI性能

我正在为Linux和Windows开发一个可移植的GUI工具包,并且遇到了一些性能问题。 在几个系统(因为我的上网本基于臭名昭着的英特尔GMA 3650)非常高的影响,安装的驱动程序。 但是,如果安装了后备VESA驱动程序,那么这个矛盾是什么?我的代码的性能远高于专用驱动程序的性能。 另一方面,与专有的驱动程序, 如预期的计算机的性能是非常好的。 硬件加速工作,高清video播放没有问题,这种方式只有我的代码是在这种奇怪的反向的方式受到影响。 我的代码使用像Xlib,Xft,pthreads等通用库 Windows端口(使用WinApi)运行速度很快,没有任何问题。 即使在葡萄酒。 作为另一个悖论,为Windows编译并在WINE中运行的相同程序的绘制速度比Linux编译程序快得多。 这可能是造成这种影响的原因,以及为了解决问题而在哪里挖掘。 源代码库由化石scmpipe理 一个testing例子是在trunk/freshlib/TestFreshLib.fpr (对于普通的FASM编译器freshlib/test_code0/TestLib.asm ) 这是便携式的例子,也可以编译Windows和Linux。 更新1:经过一些思考和代码探索,我有一个假设。 我使用两种不同的方法在窗口上绘制graphics: 使用XLib绘图function绘制线条和矩形。 使用Xft库来绘制文本。 我正在testing的控件使用双缓冲,其中图像缓冲区是服务器端的像素图。 但是IIRC,Xft在客户端绘制,然后将图像作为位图图像发送到X服务器,而XLib直接在服务器端绘制。 这两种方法之间是否存在某种冲突(以某种方式与硬件加速有关)会导致性能下降?

通过没有EWMH的X11获取WM名称?

我正在编写一个程序,需要在运行X11的Linux主机上检测正在运行的窗口pipe理器(例如,Compiz)的名称。 我目前正在依靠扩展窗口pipe理器提示规范,它允许我通过XGetWindowProperty查询_NET_SUPPORTING_WM_CHECK获得一个Window的ID,然后我可以查询(通过对XGetWindowProperty另一个调用)的_NET_WM_NAME属性: if ((disp = XOpenDisplay(NULL))) { if (!(XGetWindowProperty(disp, DefaultRootWindow(disp), XInternAtom(disp, "_NET_SUPPORTING_WM_CHECK", True), 0, 1024, False, XA_WINDOW, &actual_type, &actual_format, &nitems, &bytes, (unsigned char **) &wm_check_window))) { if (!(XGetWindowProperty(disp, *wm_check_window, XInternAtom(disp, "_NET_WM_NAME", True), 0, 1024, False, XInternAtom(disp, "UTF8_STRING", True), &actual_type, &actual_format, &nitems, &bytes, (unsigned char **) &wm_name))) { strncpy(str, (char *) wm_name, MAX_STRLEN); XFree(wm_name); } } […]

XKBSET鼠标键是越野车

所以我每次都使用相同的命令来运行鼠标键: xkbset ma 60 10 10 5 2然而,每当我敲击或者- ,鼠标键的开始都会出现毛刺。 毛病是:当我用鼠标移动我的鼠标,而不是stream利地移动,它开始跳下去。 例如,在我敲击/和-键之前,数字键盘平滑地移动鼠标一次只能移动几个像素。当我敲击这两个键中的任何一个时,鼠标指针开始移动100个像素。 更新 我现在注意到,当我打开我的通用访问屏幕时,当我点击两个button之一, 鼠标键开/关开关打开。 我觉得好像这是问题…有没有办法来防止这种情况?

xlib获取图标数据在窗口上绘制

对于我的程序,我需要其他程序图标,我已经保存在列表中: Window *windowlist(Display *display, unsigned long *length) { Atom prop = XInternAtom(display, "_NET_CLIENT_LIST", False); Atom type; int form; unsigned long remain; unsigned char *list; if(XGetWindowProperty(display, XDefaultRootWindow(display), prop, 0, 1024, False, XA_WINDOW, &type, &form, length, &remain, &list) != Success) { return 0; } return (Window*)list; } 我只能find使用Imlib2的解决scheme,但如果可能的话,我正在寻找一种更简单的方法。 基本上我只想在窗口上绘制这些图标。 Atom prop = XInternAtom(display, "_NET_WM_ICON", False); XGetWindowProperty(display, window, […]

X11窗口调整口吃

我在X11中创build一个openGL窗口,并使用glxswapbuffers进行双缓冲。 问题是:渲染看起来很好,但我得到的OpenGL内容弹跳和窗口边框在resize时口吃。 我尝试过滤ConfigureNotify事件,延迟它们,使用glXSwapInterval设置glXSwapIntervalclosures…没有任何工作。 这是我使用的代码 void Window::redraw() { // Called by any control which needs redrawing XEvent event; memset(&event, 0, sizeof(event)); event.type = Expose; event.xexpose.display = display; XSendEvent(display, window, False, ExposureMask, &event); } void Window::resize(int width, int height) { this->Width = width; this->Height = height; } bool Window::wndProc(XEvent *evt) { switch (evt->type) { case Expose: { […]

如何控制R / tcltk中的X11窗口分组

我正在使用tcltk和tcltk2软件包在R的GUI上工作。 我有很多的窗口,这是我的主顶层窗口的儿童称为base 。 我希望Windowspipe理器把所有的孩子都分组在小组领导者的基础上,以便得到启动器(Ubuntu的),alt-switcher显示我的GUI的一个图标化版本(每个子窗口的标记),而不是几个不同的图标窗口。 这是一个最小的例子。 关键的命令是tkwm.group但我无法获得一致的结果。 有时候它有效,有时不起作用。 我真的没有线索。 如果我不摧毁窗口和两次脚本源,我有点分组,但复制窗口,而不是我想要的。 任何帮助将被真正赞赏。 library(tcltk) base <- tktoplevel() tkwm.title(base,"Éccole!") base$env$tw <- tktoplevel(base) tkwm.group(base$env$tw)

(全屏)应用程序之上的Linux覆盖信息

我正在开发一个运行游戏的Linux平台。 在这个平台上,当一个游戏全屏运行时,我需要能够在某些硬件input上,例如一个开关的翻转,来冻结和禁止游戏的所有input,并在其上覆盖信息,如例如, 蒸汽游戏覆盖 。 我无法控制游戏的运行。 从search到的结果来看,覆盖OpenGL应用程序并不是一件容易的事情。 我能想到的唯一方法是以某种方式强制游戏进入无边框全屏窗口模式,然后渲染一个图层。 不知道这将是多么可行 有没有办法我能够做到这一点?