DBus / d-feet

DBus ist ein Mechanismus zur Interprozesskommunikation (IPC) auf modernen Linux Desktops. Er erlaubt es Anwendungen, über eine einheitliche Schnittstelle (hier: über ein einheitliches Protokoll, das DBus Protokoll) Funktionalität (in Form von Objekten und Methoden) für andere Anwendungen bereitzustellen und diesen den Zugriff darauf zu ermöglichen.

Auf diese Weise könnten beispielsweise Audio/Video-Player die Kontrolle ihres Abspielverhaltens über eine einheitliche Schnittstelle (hier: ein einheitliches Set an Funktionen wie "play()", "pause()", "playPause()", "nextTrack()", "previousTrack()", ...) ermöglichen, sodass Busteilnehmer, die diese Funktionen aufrufen möchten (beispielsweise wenn der Benutzer eine bestimmte Tastenkombination drückt), nicht für jeden Player ein eigenes Interface lernen müssen, sondern mit einem Interface alle Player bedienen können, die sich daran halten.

DBus-Kommunikation (wie Funktionsaufrufe oder das Setzen von Eigenschaften von Objekten) findet über Nachrichten auf einem Nachrichten-Bus statt. Auf jedem PC sind meist mehrere Busse aktiv. Meistens gibt es einen systemweiten Nachrichten-Bus (System-Bus) sowie für jede grafische Benutzer-Session einen Session-Bus. Auf dem System-Bus sind Daemons und Server erreichbar, auf dem Session-Bus findet man übliche Programme wie Media-Player.

Bus-Teilnehmer können bei DBus spezielle generische Namen (vergleichbar zu Domains im Internet) registrieren, sodass sie unabhängig von ihrer Bus-ID immer über den gleichen Namen ansprechbar sind. Zu DBus gehören auch umfangreiche Introspection-Fähigkeiten, mit denen sich Busteilnehmer auf dem Bus umschauen können, welche Funktionalität andere Teilnehmer bereitstellen.

Diese Introspection-Funktionalität lässt sich mit dem Programm "d-feet" ausnutzen. Man kann sich damit auf dem Bus umschauen, welche Funktionen dort angeboten werden, Objekte inspizieren, Eigenschaften derer auslesen und Funktionen aufrufen. Installieren lässt sich "d-feet" einfach aus den Ubuntu Standard Repositories:

sudo apt-get install d-feet

Nach dem Start muss man den zu inspizierenden Bus öffnen und dessen Bus-Adresse eingeben. Den System-Bus findet man zumeist unter "unix:path=/var/run/dbus/system_bus_socket", die Adresse des Session-Bus findet man wie folgt heraus:

env | grep DBUS_SESSION_BUS_ADDRESS

Weitere Informationen zu DBus finden sich unter:

Tags: Linux