4 releases (2 breaking)
0.4.0 | Oct 21, 2024 |
---|---|
0.3.1 | May 9, 2024 |
0.3.0 | May 1, 2024 |
0.2.0 | Jun 29, 2023 |
#559 in Network programming
64KB
1.5K
SLoC
busd
A D-Bus bus (broker) implementation in Rust. Since it's pure Rust, it's much easier to build for multiple platforms (Linux, Mac and Windows being the primary targets) than other D-Bus brokers.
Status
Alpha. It's not ready for production use yet. Only the essentials are in place.
Installation & Use
Currently, we can only offer installation from source:
cargo install -f busd
Running a session instance is super easy:
busd --print-address
--print-address
will print the address of the bus to stdout. You can then use that address to
connect to the bus:
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus,guid=d0af79a44c000ce7985797ba649dbc05"
busctl --user introspect org.freedesktop.DBus /org/freedesktop/DBus
busctl --user list
Since auto-starting of services is not yet implemented, you'll have to start services manually:
# Probably not the best example since the service just exits after a call to it.
/usr/libexec/dleyna-renderer-service &
busctl call --user com.intel.dleyna-renderer /com/intel/dLeynaRenderer com.intel.dLeynaRenderer.Manager GetRenderers
The plan
Full compatibility with the D-Bus specification
Implement all features that manadated and recommended by the specification.
Additional Header Fields
While the D-Bus spec does not allow custom header fields in messages, busd
will still support a
few additional on-demand (only) fields, that are useful for certain applications. One example is
addition of peer credentials on every message, which can avoid round-trips on the bus.
License
Dependencies
~15–28MB
~413K SLoC