如果屏幕保护程序正在运行或屏幕被锁定,我正试图检测所有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,但我不确定它们的相对优点(如果有人想编辑这个答案来涵盖那些,那就太棒了).