我现在对 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(使用前将#替换为@)