如何将 X11 应用程序附加到 Dbus
如何让X11应用程序监听DBus信号。 应该启动监听 Dbus 信号的 gmainloop,以及 X11 应用程序的 XEvent 循环。 那么有没有一种优雅的方法来做到这一点呢?或者我必须在另一个线程中运行 gmainloop 吗?
问候, 莱文
How to make X11 application to listen to DBus signal.
That to listen to Dbus signal gmainloop should be launched, and for X11 app XEvent loop.
So is there an elegant way to do this ? Or do I have to run gmainloop in another thread.
Regards,
Levon
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
难道您不应该能够获取 X 事件循环的文件描述符吗?然后您应该能够将其添加到 gobject 主循环中。
据我所见,
ConnectionNumber(xdpy)
将给出文件描述符,然后您可以将其添加到源中,您可以将其与
g_source_add_poll()
。Shouldn't you be able to get a file descriptor for the X event loop? Then you should be able to add it to the gobject mainloop.
From what I can see,
ConnectionNumber(xdpy)
will give the filedescriptor, which you can then add to a source, which you can use with
g_source_add_poll()
.如果你想阻塞两个或更多的东西(比如 X 和 dbus),你需要一个主循环。
您可以使用 GLib 的主循环或 libev 或其他库。
以下是将 Xlib 与 GLib 主循环结合使用的两个示例:
If you want to block on two or more things (say X and dbus) you need a main loop.
You could use GLib's main loop or libev or other libraries.
Here are two examples of using Xlib with GLib's main loop: