【问题标题】:Where are some good Xlib programming guides?哪里有一些好的 Xlib 编程指南?
【发布时间】:2011-03-17 01:01:05
【问题描述】:

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

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

【问题讨论】:

  • X 是相当古老的技术。现代 UNIX/Linux GUI 开发发生在 QT 或 GTK+(或其他几个工具包)中 不要浪费时间在 Xlib 中编程。最多花一天时间,然后学习 GTK 或 Qt(使用 Xlib 实现)

标签: xlib


【解决方案1】:

据我所知,没有任何最新的书籍。你真的只需要阅读一堆规范和源代码。幸运的是,它并没有那么那么复杂。

我想说的是,阅读 gtk+/gdk/x11(GTK 的 X 后端)的源代码和您最喜欢的几个 WM 的源代码会大有帮助。 ICCCM 和 EMWH 规范是必不可少的。

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

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

如果您正在使用 WM,请提供一些很好的通用 X 建议:

  • 您需要响应事件而不是获取状态。例如,始终将您的尺寸视为您获得 ConfigureNotify 的最后尺寸;不要调用 XGetGeometry 或其他东西来获取您的尺寸。获取状态有两个问题:它会破坏性能(阻塞往返 = 性能死亡),它会引入竞争条件。

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

  • 永远不要使用 CurrentTime,始终使用真正的时间戳,否则你会创建怪异的竞争条件错误,让你发疯

我猜还有很多提示,但只有这三个可以帮助您开始避免常见错误 ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多