哪里有一些好的 Xlib 编程指南?

2024-03-02

我现在对 Xlib 编程有点困惑。几周前我开始使用 dwm(一个轻量级窗口管理器),我想找一些 Xlib 编程书籍或在线资源来自定义 dwm。

然而,在网上搜索后,我没有看到太多关于 Xlib 的新文章?亚马逊上最新的X窗口系统编程指南是1994年的!? Xlib没有新文章是因为旧书已经足够了,还是因为有一些我不知道的新技术?或者,也许我没有正确的关键字在网络上搜索。如果是这样,有人可以指出我正确的地方吗?


据我所知,没有任何最新的书籍。您实际上只需要阅读一堆规范和源代码。幸运的是它不是that复杂的。

我想说,阅读 gtk+/gdk/x11(GTK 的 X 后端)的源代码以及您最喜欢的几个 WM 的源代码将会大有帮助。 ICCCM 和 EMWH 规范至关重要。

自旧指南以来,X 编程的一个巨大变化是,没有人喜欢再使用许多服务器端工具来进行绘图、字体、打印等。所以 XDrawFoo 功能,关于字体、XPrint、GC、颜色图的所有内容,所有这些或多或少都已经过时了。现在绘图通常是在客户端完成的,例如 Cairo 或 Skia 等库。

不过,那些旧书中关于窗口和像素图以及 X 工作的基本方式的内容仍然是准确的。

如果你正在使用 WM,一些好的一般 X 建议:

  • 您需要响应事件而不是获取状态。例如,始终将您的尺寸视为您最后一次获得配置通知的尺寸;不要调用 XGetGeometry 或其他方法来获取您的尺寸。获取状态有两个问题:它会降低性能(往返阻塞 = 性能死亡),并且会引入竞争条件。

  • 在 WM 中,您正在处理其他应用程序的窗口,它们可以随时被销毁,如果您触摸该窗口,这将导致错误。因此您在窗口上调用的任何函数都可能会失败。

  • 永远不要使用 CurrentTime,总是使用真实的时间戳,否则你会产生奇怪的竞争条件错误,让你发疯

我想还有很多技巧,但这三个技巧可以帮助您开始避免常见错误;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪里有一些好的 Xlib 编程指南? 的相关文章

  • Xlib:XGetWindowAttributes 始终返回 1x1?

    我想要当前聚焦窗口的宽度和高度 窗口的选择就像一个魅力 而高度和宽度是always返回 1 include
  • XFetchName 始终返回 0

    我试图编写一个 C 代码来获取 Linux 系统中活动窗口的标题 但函数 XFetchName 总是返回零 我也尝试过 XGetWMName 相同的结果 但是使用 xprop 我可以看到 WM NAME 属性中有一个字符串 谁能告诉我我的代
  • 使用 Python xlib 在活动 X 窗口发生更改时获取通知

    我想监视运行 X 的 Linux 系统上哪个窗口处于活动状态 以及该活动窗口何时调整大小或移动 我可以监视活动窗口 它位于 NET ACTIVE WINDOW根窗口上的属性 我可以注册PropertyNotify根窗口上的事件以发现该属性何
  • 使用 python xlib 全局捕获、忽略和发送按键事件,识别虚假输入

    我想在普通键盘上实现按键和弦 我想我使用 python xlib 为此 程序必须全局吞下所有关键事件 然后才允许它们通过 我当前的测试只是抓住 1 键 如果按下此键 它将调用一个处理程序 该处理程序通过 xtest fake input 将
  • 指针运动。为什么数字这么高?为什么它以块而不是恒定流的形式打印信息?

    你好 我正在尝试编写一个程序 需要报告每个鼠标运动的位置 我已经打电话给XSelectInput 函数与PointerMotionMask面具 一切似乎都正常 但打印后的数字不会在每次移动后出现 它们以块的形式出现 并且也以块的形式出现ev
  • _NET_WM_ICON 的图片格式

    环境 Ubuntu 16 04 在我的应用程序中 我通过调用获取应用程序的图标XGetWindowProperty with NET WM ICON atom unsigned char data XGetWindowProperty da
  • 监听键盘事件而不捕获它们?

    我正在编写一个命令行应用程序 它侦听 X Windows 中的 Control 键释放事件 并在检测到这些事件时向另一个进程发出警报 作为 GNU Linux 的新手 我宁愿避免摸索 GCC 因此我正在寻找基于脚本的解决方案 由于我对 Py
  • 检测 X11 根窗口中的修改键释放

    总体目标就像 Windows 的 Alt Tab 所以我将使用这些键进行解释 我想 按 Alt gt 按 Tab gt 弹出窗口出现 gt 按住 Alt 的任何时候按 Tab gt 释放 Alt gt 弹出窗口消失 我无法检测到最终的 Al
  • 将 QWidget 嵌入 X11 窗口

    我想将两个 QWidget 嵌入到使用 XLib 创建的窗口中 我写了这段代码 Assume all the necessary headers included int main int argc char argv QApplicati
  • Python xlib 更改光标

    如何使用 Xlib 在 python 应用程序中设置根窗口 或任何其他窗口 的光标 我有一个实例display and window 根窗口 使用 C 绑定 我可以用X定义光标 https tronche com gui x xlib wi
  • 如何使用 xlib 和 glx 创建具有透明背景的支持 OpenGL 的窗口

    我想创建一个具有透明背景的窗口 然后使用 OpenGL 在其上渲染一些内容 我不想使用捕捉窗口后面的任何内容然后将其绘制为背景的技巧 我想要真正的透明度 我正在运行合成管理器 我没有使用任何 GUI 库 GTK QT 只是原始的 xlib
  • XCloseDisplay 返回什么?

    我从各种文档中可以看到XCloseDisplay返回一个整数 我怀疑这是一个错误代码 我应该用这个值做什么 是错误代码吗 如果是这样我该如何处理该错误 我查看了源代码 lib X11 ClDisplay c It says return 0
  • 从 XGrabKeyboard 中排除一些键

    考虑一个应用程序 需要在聚焦时抓住键盘 以便捕获所有窗口管理器命令 Alt F4 等 进行处理 现在 这有一个缺点 即当键盘被抓住时 用户无法通过键盘切换到另一个应用程序或虚拟桌面 我想要一个用户定义的组合键白名单 例如 用于切换虚拟桌面的
  • 使用 Xlib 捕获鼠标

    我想编写一个简单的 Xlib 程序来改变鼠标行为 举个例子 反转垂直移动 我在捕获事件时遇到问题 我想要代码 捕获控制器位置的变化 我向上移动鼠标 MotionEvent 计算新的光标位置 new x difference x 设置新的光标
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • 有什么有效的方法可以将 XImage 数据转换为像素图(例如 RGB 四边形数组)?

    我正在尝试使用 XGetImage 捕获图像 一切都很好 但我需要将数据发送到需要 RGB 四边形数组的模块 对图像中的每个像素调用 XGetPixel 非常慢 在 i5 上 1440x900 分辨率为 0 5 秒 我在xlib中查找了XG
  • Xlib ARGB 窗口图标

    我有一个ARGB图像数据 我希望将我的窗口图标设置为该数据 经过几个小时的搜索后 我仍然处于起点 手头一无所有 我知道我需要为图像数据创建一个像素图和 可能是 另一个用于掩码的像素图 并使用提示来提示窗口管理器 但是 我不知道如何设置 32
  • 如何在Windows上安装Xlib(eclipse、c语言)

    好的 我需要使用它进行图形编程 GUI cs 349 uwaterloo 第一次作业 我在谷歌搜索结果中看到随机的 Xlib h 和 Xutil h 文件 但它没有在哪里说明我如何从某个网站安装或下载 Xlib 我什至尝试将 Xlib h
  • 解析 Rust FFI 中的联合结构

    我在解析 c union 结构 XEvent 时遇到问题 我正在 Rust 中试验 Xlib 和 X Record Extension 我生成 ffi 绑定Rust 绑定根 https github com crabtw rust bind
  • 使用 xlib 在屏幕顶部绘图

    我想在屏幕上的所有窗口顶部绘制一些图元 我在 C 中找到了一些代码并尝试将其移植以使用 python 的 xlib from Xlib display import Display from Xlib import X from Xlib

随机推荐

  • 什么时候会发生下溢?

    我陷入了计算的情况1 77e 308 10触发下溢异常 但计算1 777e 308 10才不是 这很奇怪 因为 当浮点的真实结果发生下溢 操作的幅度小于 即接近于零 可表示为普通浮点数的最小值 目标数据类型 来自算术下溢 维基百科 换句话说
  • 三.js透明物体遮挡

    在 Three js 场景中 我希望有一个不可见的对象 但仍然遮挡场景中的其他对象 就好像它是可见的一样 这可以通过 Three js 库实现吗 这是一个例子 Suppose I have a three js scene that con
  • 在elasticsearch实例上打开开放的GCE防火墙以进行外部连接

    我刚刚使用 Click to Deploy 在 GCE 中创建了一个 elasticsearch 集群 但我只能使用隧道来访问它 就我而言 这不是一个选择 因为我不想向其他开发人员授予 gcloud 访问权限 我想为elasticsearc
  • 访问生成 T-SQL 中的 ROW_NUMBER() 等结果的查询

    MS Access 中有 ROW NUMBER 函数吗 如果有 请让我知道它的任何语法 因为我被困在这里 我尝试过论坛 但我得到了 sql server 语法 以下是我的查询 select ROW NUMBER OVER ORDER BY
  • OnClickListener 不适用于 GridView 中的第一项

    我在创建基于 GridView 的日历时遇到问题 这是网格 这应该是一个填充了事件的日历 因此我让我的适配器实现 OnClickListener 并为日历中的每个按钮设置该侦听器 它适用于每个按钮EXCEPT第一个 在本例中为 30 当我单
  • Java Web 应用程序“过期会话的事件监听器”

    有没有办法在运行Java代码之后HttpServletRequest Session已到期 如果会话过期 我需要进行数据库调用 回调和监听器将是有用的 javax servlet http HttpSessionListener The 雅
  • 包含修订历史记录的 CouchDB 视图

    我对 CouchDB 很陌生 已经缺少 SQL 了 无论如何 我需要创建一个视图来发出文档的一些属性以及所有修订 ID 像这样的东西 function doc if doc type template emit doc owner id d
  • VS Xaml 设计器错误

    我的 WPF 应用程序中的 Xaml 文件出现错误 我无法在 Visual Studio 设计器或 Blend 中看到我的控件 但是 该应用程序可以完美编译并运行 在 Blend 中 它说存在无效的 Xaml 并且该错误根本没有任何意义 但
  • 尝试将本地页面加载到 JavaFX webEngine 中

    我的 JavaFX 应用程序的选项卡上有一个 webView 组件 我正在尝试将本地存储的 HTML 页面加载到 WebView browser new WebView WebEngine webEngine browser getEngi
  • 监听附加端口 Microsoft Azure Nodejs

    我正在端口 process env PORT 1337 Microsoft Azure 上的默认端口 上运行 Nodejs 应用程序 Azure Web App 我还需要监听 websocket 的附加端口 在我本地 我使用的是 8000
  • 如何禁用 DateTimePicker 控件上的某些日期?

    如何禁用选定的日期DateTimePicker这样用户就无法选择它们 我知道这在 Web 窗体中是可能的 但在 Windows 窗体中我无法执行此操作 我怎样才能实现这个目标 您执行此操作的难易程度取决于您想要限制的日期 例如 如果您只想指
  • 如何从 Android 电话簿中选择联系号码到我的应用程序中?

    全部 我想从我的应用程序数据库中的android电话簿中获取号码 我已经用下面的代码尝试过 但这里正在获取人名 而不是我想要电话簿中的号码并希望将其存储在我的数据库中 如何实现这一目标 任何人都可以指导我 Override public v
  • 如何存储通用引用

    我需要在类中存储通用引用 我确信引用的值将比类的寿命更长 有这样做的规范方法吗 这是我想出的一个最小的例子 它似乎有效 但我不确定我是否做对了 template
  • 实现按住连续事件触发的优雅方式?

    我经常需要通过按住按钮来触发一系列事件 想一个 增加字段的按钮 点击它应该将其增加 1 但点击并按住应该每秒增加 1 直到释放按钮 另一个示例是在音频播放器类型应用程序中按住后退或前进按钮时的擦洗功能 我通常采用以下策略 On touchD
  • 如何将带有键值对的列表转换为字典

    我想迭代这个列表 name test1 email email protected cdn cgi l email protection role test description test name test2 email email p
  • 嵌入式 Derby/Java DB 中的自动增量错误

    我正在开发一个在嵌入式模式下使用 Apache Derby 数据库的会计程序 我有一个包含两列的表 Branch CREATE TABLE Branch idBranch INT NOT NULL PRIMARY KEY GENERATED
  • 如何在Android中截断TextView,然后添加省略号

    我读过这里的一些其他线程也有类似的担忧 但他们的答案似乎都不适合我 无法在 Android 上使用省略号 https stackoverflow com questions 1698881 cant get ellipsis to work
  • 如何创建 ASP.NET 网站的移动版本?

    我有一个使用asp创建的网站 我想让手机可以访问它 这样用户就可以通过他 她的手机使用它 我对 XML 或 NET 没有任何了解 我怎样才能做到这一点 ASP NET 移动网页 https learn microsoft com en us
  • 如何在 VSTS 部署期间从 Azure Web App 删除文件

    我有一个 Azure Web 应用程序 我将一些数据存储在它的持久存储中 通过我的 VSTS 发布定义 我想删除一个填充了数据的文件夹 该文件夹位于D home site MyFolder 有没有办法可以在部署期间以编程方式从 VSTS 发
  • 哪里有一些好的 Xlib 编程指南?

    我现在对 Xlib 编程有点困惑 几周前我开始使用 dwm 一个轻量级窗口管理器 我想找一些 Xlib 编程书籍或在线资源来自定义 dwm 然而 在网上搜索后 我没有看到太多关于 Xlib 的新文章 亚马逊上最新的X窗口系统编程指南是199