>>77619>So, das macht D-Bus im Großen und Ganzen.
Korrekt. Allerdings ging es mir mehr darum, welches Problem dadurch gelöst wird. Und da bin ich eben der Meinung, dass D-Bus überhaupt keine Probleme löst, sondern nur neue schafft.
>Die Alternative zu D-Bus ist, dass die Anwendungen einfach die Interprozess-Primitive des Betriebsystems benutzen
Exakt. Unix hat bereits Domänensockets und bringt damit alles mit, was man braucht. Einfach JSON über einen Domänensocket und fertig. Wozu diesen ganzen OOP-Müll mit XML-Interfacespezifikationen?
Das einzige, was man wirklich bräuchte, wäre eine Standardisierung. Dort
hätte D-Bus eventuell trotz der beschissenen Implementierung einen Mehrwert liefern können. Aber genau hire liefert D-Bus nicht. Beispiel: Ich hatte mal das Vergnügen, unter Linux den Bildschirmschoner/Lock-Screen/Standby-Modus zu steuern, also verhindern, dass er aktiviert wird oder ihn gezielt aktivieren. Geht leider nur per D-Bus. Das Problem ist aber, dass die Bildschirmschoner-Spezifikation von D-Bus so schlecht ist, dass jede Schreibtischumgebung (Gnome, KDE etc.) ihren eigenen Standard unter einer abweichenden Adresse implementiert, sodass man unterm Strich doch wieder vier verschiedene Implementierungen braucht. Man hat also nicht nur nichts gewonnen gegenüber handgedengelten Lösungen, sondern man hat auch noch diesen ganzen D-Bus-Ranz an der Backe.
Felix verwendet den Fensterverwalter i3. Eine der schönen Sachen bei i3 ist, dass man ihn einfach per
i3-msg
auf der Kommandozeile steuern kann. Z.B.
i3-msg exit
, um die aktuelle Sitzung zu beenden, oder
i3-msg restart
, um den Fensterverwalter neuzustarten nach Update oder Konfigurationsänderung. Intern sendet der einfach JSON (iirc) über einen Domänensocket. Und deshalb funktioniert es einfach. Immer. 100% zuverlässig. Hatte damit noch nie ein Problem. Wenn i3 D-Bus verwenden würde, dann würde es die Hälfte der Zeit nicht richtig funktionieren. Dann würde es irgendwo komische Hänger geben, Befehle kämen nicht an oder ein Prozess würde nicht starten, weil irgendeine Lib die falsche Version hat. Wenn man mehrere Sitzungen auf verschiedenen TTYs hat, dann gibt es bei D-Bus auch immer irgendwelche komischen Bugs. Mit i3 hat man niemals solche Probleme, einfach nur, weil es kein D-Bus verwendet. Leider sind systemd, Pulseaudio, GTK und Co. alle mit D-Bus infiziert.