Cómo averiguar qué enlace D-Bus usar

3 minutos de lectura

Como averiguar que enlace D Bus usar
Noitidart

Estoy tratando de detectar en todo Linux si el protector de pantalla se está ejecutando o si la pantalla está bloqueada.

La gente recomendó dbus. Así que ahora estoy tratando de detectar automáticamente con x11 o API C o algo así qué tipo de dbus está disponible, luego uso eso. ¿Como qdubs, gdbus, etc.?

Gracias

Como habrás notado, hay varios enlaces D-Bus disponibles. Como dice Ignacio, puedes usar cualquiera de ellos, ya que todos hablan el mismo protocolo, pero algunos enlaces son más apropiados para algunas situaciones que para otras.

Enlaces de alto nivel recomendados:

  • GDBus es un enlace de alto nivel basado en GLib/GObject. Es apropiado usarlo si está escribiendo un servicio o una aplicación basada en tecnologías GNOME o GLib. Está escrito en C, pero los enlaces están disponibles (en varios niveles de funcionalidad) para otros lenguajes que usan gobject-introspection.
  • QtDBus es un enlace de alto nivel basado en Qt. Es apropiado usarlo si está escribiendo un servicio o una aplicación basada en Qt. Está escrito en C++.

Enlaces de bajo nivel recomendados:

  • sd-autobús es un enlace de nivel inferior con muy pocas dependencias. Es apropiado si está escribiendo un servicio de sistema o una aplicación de sistema y no está usando GLib o Qt. Está escrito en C.

No fijaciones recomendadas:

  • libdbus es un enlace de nivel inferior que viene con la implementación oficial de D-Bus. Es antiguo y la mejor práctica en el diseño de API de D-Bus ha mejorado desde que se escribió. Se recomienda que hagas no usar libdbus. Como dice la documentación: “Si usa esta API de bajo nivel directamente, se está registrando para sufrir algunos problemas”. Es incómodo de usar. Está escrito en C.
  • dbus-glib es un enlace de alto nivel que se afilió a la implementación oficial de D-Bus. Al igual que libdbus, es antiguo y las mejores prácticas se han movido desde entonces. Se recomienda que hagas no use dbus-glib y use GDBus en su lugar. Es incómodo de usar. Está escrito en C.

Hay varios encuadernaciones para otros idiomas disponiblespero no estoy seguro de sus méritos relativos (si alguien quiere editar esta respuesta para cubrirlos, sería genial).

  • Muchas gracias por una respuesta tan detallada. Este es el detalle que realmente conecta los puntos para mí con la respuesta de Igancio. ¡Gracias!

    – Noitidart

    23 de junio de 2017 a las 4:03

No necesita detectar qué enlaces para D-Bus están en uso. Como todos hablan de la misma manera a la misma cosa, solo necesita usar tu enlace para hablar con el bus de mensajes e interactuar con cualquier otro cliente de D-Bus.

  • ¡¡Muchas gracias!! ¿Cómo saber si debo hacer qdubs o gdubs? Ver este chico aquí publicó un problema: askubuntu.com/questions/505681/… estaba usando qdbus y luego alguien publicó diciéndole que usara gdbus, lo que solucionó el problema

    – Noitidart

    3 de enero de 2015 a las 3:25

  • Si no. Todos hablan de la misma manera a la misma cosa. No sé por qué funcionó para él con uno y no con el otro, pero eso es una pista falsa de todos modos.

    – Ignacio Vázquez-Abrams

    3 de enero de 2015 a las 3:29


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad