62得票3回答
Xlib和Firefox的行为表现

我正在尝试创建一个小的窗口管理器(只是为了好玩),但是在处理由Firefox创建的窗口时出现问题(其他应用程序正常运行)。 问题在于,启动Firefox并添加我的装饰后,它似乎工作正常,但是如果我尝试单击菜单按钮,(子)窗口不会出现。 看起来发生的情况是,在单击后,会触发一个具有以下值的C...

60得票11回答
如何高效确定一个多边形是凸多边形、非凸多边形还是复杂多边形?

来自XFillPolygon的手册描述: 如果shape为Complex,路径可能会自相交。请注意,路径中连续重合点不被视为自相交。 如果shape为Convex,对于多边形内的每对点,连接它们的线段不会与路径相交。如果客户端已知,请指定Convex以提高性能。如果您为非凸多...

47得票2回答
如何优雅地退出X11事件循环?

我发现几乎每个教程都建议我这样做来处理事件循环:XEvent event; while (true) { XNextEvent(display, &event); switch (event.type) { case Expose: ...

42得票8回答
为什么XGrabKey会生成额外的focus-out和focus-in事件?

有没有人知道一个 xlib 函数可以在不失去原始焦点的情况下捕获按键事件?如何消除它? (或者说“如何使用 XGrabKey() 而不生成抓取式焦点丢失”?) (或者说“如何在系统级别消除 NotifyGrab 和 NotifyUngrab 焦点事件?”) XGrabKey 会在按键被按...

35得票3回答
使用X11/Xlib实现全局热键

我的目标是编写一个能在后台休眠,但可以通过某些“热键”由用户激活的程序。通过查阅Xlib手册和Xlib O'Reilly手册,我了解到正确的方法是使用XGrabKey。然而,我的理解过程是错误的,因为一个简单的概念验证并没有起作用。 我的理解是,如果我调用XGrabKey并将根窗口作为gra...

34得票4回答
如何停止Xlib的XNextEvent阻塞

在Windows环境下,GUI线程通常使用GetMessage等待消息,在另一个线程使用PostMessage将消息放入队列后,GUI线程将返回GetMessage(退出阻塞)。 有人能告诉我,在XWindows下使用XNextEvent等待事件时,如何在另一个线程中“唤醒”GUI线程?是否...

31得票3回答
如何使用xlib正确地截屏?

我正在尝试捕捉屏幕图像用于录屏。因此,我需要一个快速的解决方案,不能依赖于像import或xwd这样的shell程序。 这是我迄今为止编写的代码,但它失败了,并给我一个垃圾图像,似乎只显示了几个图像片段,颜色奇怪地混在一起。 你们有什么想法我做错了什么吗?#include <X1...

25得票5回答
我需要做什么才能与xlib进行链接?

我正在使用GCC,我需要添加哪些开关以链接到Xlib?在搜索后,我只找到了-lX11,但是这给了我一个ld: library not found for -lX11的错误。 我正在使用Mac(10.6),但不想使用任何特定于Mac的东西。

24得票1回答
减少与X一起工作时的输入延迟

最近我看了一些关于输入延迟的文章: https://danluu.com/term-latency/ https://pavelfatin.com/typing-with-pleasure/ 我一直在努力改善我的小型文本编辑器的用户体验。我曾经使用SDL来池化输入并创建窗口,但决定将其删...

20得票1回答
如何在Xlib应用程序中等待VSYNC?

我正在使用 XWindow Drawable、Pixmap 和 XRender 在屏幕上绘制东西。有时会出现闪烁。有没有一种方法可以等待 VBLANK?我已经在 Google 上搜索了很多次,感觉像在森林中寻找硬币。 这里没有涉及到 OpenGL。它是 Linux (Ubuntu)。 我可以...