一尘不染

如何找出要使用的D-Bus绑定

linux

我正在尝试在所有Linux上检测屏保是否正在运行或屏幕是否被锁定。

人们推荐dbus。因此,现在我尝试使用x11或C API或某种可用的dbus自动检测,然后使用它。像qdubs,gdbus等?

谢谢


阅读 202

收藏
2020-06-03

共1个答案

一尘不染

您已经注意到,有各种可用的D-Bus绑定。正如Ignacio所说,您可以使用它们中的任何一个,因为它们都使用相同的协议-
但是某些绑定比某些绑定更适合某些情况。

推荐的高级绑定:

  • GDBus是基于GLib / GObject的高级绑定。如果您要基于GNOME技术或GLib编写服务或应用程序,则适合使用。它是用C语言编写的,但是使用gobject-introspection可以为其他语言提供绑定(在各种功能级别上)。
  • QtDBus是基于Qt的高级绑定。如果您要基于Qt编写服务或应用程序,则适合使用。它是用C ++编写的。

推荐的低级绑定:

  • sd-bus是一个较低级别的绑定,几乎没有依赖项。如果您正在编写系统服务或系统应用程序,并且未使用GLib或Qt,则是合适的。用C写的。

推荐的绑定:

  • libdbus是官方D-Bus实现随附的较低级别的绑定。它已经很老了,自编写以来,设计D-Bus API的最佳实践已得到改进。建议你 使用libdbus。正如文档所述:“如果您直接使用此低级API,则可能会有些麻烦。” 使用起来很尴尬。用C写的。
  • dbus-glib是与官方D-Bus实施相关的高级绑定。像libdbus一样,它已经很老了,自那时以来,最佳实践一直在发展。建议你 使用的dbus-油腔滑调,并使用GDBus代替。使用起来很尴尬。用C写的。

可以使用其他语言的各种绑定,但是我不确定它们的相对优点(如果有人要编辑此答案以涵盖这些优点,那将是很好的)。

2020-06-03