![GTK+ 或 GDK 是否提供直接进行 Xlib 或 Xlib-xcb 调用和/或接收 x 事件的方法?](https://linux22.com/image/128165/GTK%2B%20%E6%88%96%20GDK%20%E6%98%AF%E5%90%A6%E6%8F%90%E4%BE%9B%E7%9B%B4%E6%8E%A5%E8%BF%9B%E8%A1%8C%20Xlib%20%E6%88%96%20Xlib-xcb%20%E8%B0%83%E7%94%A8%E5%92%8C%2F%E6%88%96%E6%8E%A5%E6%94%B6%20x%20%E4%BA%8B%E4%BB%B6%E7%9A%84%E6%96%B9%E6%B3%95%EF%BC%9F.png)
目前,我使用 Xlib-xcb 和 GTK+ 编译和运行应用程序没有任何问题。但是我还没有找到一种方法将两者集成在一起使用。例如,能够将 xcb 像素图的区域复制到 GDK 或 GTK+ 像素图或窗口任何其他 GTK 或 GDK 对象是件好事。或者接收与 GTK 事件混合的 x 事件。目前,如果我想在同一应用程序中使用 GTK,我会使用单独的线程来使用 xcb_wait_for_event() 运行事件循环。 GTK+ 有办法提供定期的 x 事件吗?
目前,当我运行一个混合来自 Xlib-xcb 和 GTK+ 的调用的程序时,我在 Ubuntu 应用程序启动条中看到两个图标,这没关系,只是很烦人。我很确定这是因为我必须使用单独的 Display 变量(对于 Xlib)和 xcb_connection_t 变量(对于我的 xcb 调用)。窗口管理器必须假设有两个应用程序,分别使用 X11。
我只是一个业余爱好者,我这样做是为了好玩并自学。因此,即使“你为什么要这样做”或“这不是一个好主意”的回复是明智的,我仍然想这样做,并且不在乎这是不是一个坏主意。我玩得很开心!我想到了一些可以让我从一个领域获取图像数据到另一个领域的拼凑,但我希望发现 GTK+ 或 GDK 有一种方法可以让我直接调用 Xlib-xcb 并共享相同的数据连接,我一直无法找到。
由于它都是一个客户端应用程序,因此只有一个到 X11 服务器的连接是有意义的,对吗?
我可以毫无问题地获取事件,只要我不抓住指针、键盘等,GTK+ 端就可以正常工作。
是的,这听起来确实是个坏主意!我为什么要这样做?我不知道。好有趣。
顺便说一句,开罗可以使用像素图作为表面,或者创建一个在像素图中渲染的表面 - 我不确定技术术语。我使用 Cairo 进行文本通话,而不是使用 X Windows 文本通话。