如何确定使用哪种D-Bus绑定

如果屏幕保护程序正在运行或屏幕被锁定,我正试图检测所有Linux.

人们推荐dbus.所以现在我试图用x11或C API自动检测什么样的dbus可用,然后使用它.像qdubs,gdbus等?

谢谢

解决方法:

正如您所注意到的,有各种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-glib,而是使用GDBus.使用起来很尴尬.它是用C语言写的.

有各种各样的bindings for other languages available,但我不确定它们的相对优点(如果有人想编辑这个答案来涵盖那些,那就太棒了).

上一篇:linux – 如何使用wmctrl在窗口外移动窗口


下一篇:帮助Conky与LXDE和PCManFM合作