Common API
These calls are shared between async and blocking API.
D-Bus connections calls
- async sdbus.request_default_bus_name_async(new_name, allow_replacement, replace_existing, queue)
Acquire a name on the default bus async.
- Parameters:
new_name (str) – the name to acquire. Must be a valid D-Bus service name.
new_name – the name to acquire. Must be a valid D-Bus service name.
allow_replacement (bool) – If name was acquired allow other peers to take away the name.
replace_existing (bool) – If current name owner allows, take away the name.
queue (bool) – Queue up for name acquisition.
SdBusRequestNameInQueueError
will be raised when successfully placed in queue.Ownership change signal
should be monitored get notified when the name was acquired.
- Raises:
Name request exceptions and other D-Bus exceptions.
- sdbus.request_default_bus_name(new_name, allow_replacement, replace_existing, queue)
Acquire a name on the default bus.
- Parameters:
new_name (str) – the name to acquire. Must be a valid D-Bus service name.
allow_replacement (bool) – If name was acquired allow other peers to take away the name.
replace_existing (bool) – If current name owner allows, take away the name.
queue (bool) – Queue up for name acquisition.
SdBusRequestNameInQueueError
will be raised when successfully placed in queue.Ownership change signal
should be monitored get notified when the name was acquired.
- Raises:
Name request exceptions and other D-Bus exceptions.
- sdbus.set_default_bus(new_default)
Sets default bus.
Should be called before you create any objects that might use default bus.
Default bus can be replaced but the change will only affect newly created objects.
- Parameters:
new_default (SdBus) – The bus object to set default to.
- sdbus.get_default_bus(new_default)
Gets default bus.
- Returns:
default bus
- Return type:
SdBus
- sdbus.sd_bus_open_user()
Opens a new user session bus connection.
- Returns:
session bus
- Return type:
SdBus
- sdbus.sd_bus_open_system()
Opens a new system bus connection.
- Returns:
system bus
- Return type:
SdBus
- sdbus.sd_bus_open_system_remote(host)
Opens a new system bus connection on a remote host through SSH. Host can be prefixed with
username@
and followed by:port
and/machine_name
as insystemd-nspawn
container name.- Parameters:
host (str) – Host name to connect.
- Returns:
Remote system bus
- Return type:
SdBus
- sdbus.sd_bus_open_system_machine(machine)
Opens a new system bus connection in a systemd-nspawn container. Machine name can be prefixed with
username@
. Special machine name.host
indicates local system.- Parameters:
machine (str) – Machine (container) name.
- Returns:
Remote system bus
- Return type:
SdBus
- sdbus.sd_bus_open_user_machine(machine)
Opens a new user session bus connection in a systemd-nspawn container. Opens root user bus session or can be prefixed with
username@
for a specific user.- Parameters:
machine (str) – Machine (container) name.
- Returns:
Remote system bus
- Return type:
SdBus
Helper functions
- sdbus.encode_object_path(prefix, external)
Encode that arbitrary string as a valid object path prefixed with prefix.
- Parameters:
prefix (str) – Prefix path. Must be a valid object path.
external (str) – Arbitrary string to identify object.
- Returns:
valid object path
- Return type:
str
Example on how systemd encodes unit names on D-Bus:
from sdbus import encode_object_path # System uses /org/freedesktop/systemd1/unit as prefix of all units # dbus.service is a name of D-Bus unit but dot . is not a valid object path s = encode_object_path('/org/freedesktop/systemd1/unit', 'dbus.service') print(s) # Prints: /org/freedesktop/systemd1/unit/dbus_2eservice
- sdbus.decode_object_path(prefix, full_path)
Decode object name that was encoded with
encode_object_path()
.- Parameters:
prefix (str) – Prefix path. Must be a valid object path.
full_path (str) – Full path to be decoded.
- Returns:
Arbitrary name
- Return type:
str
Example decoding systemd unit name:
from sdbus import decode_object_path s = decode_object_path( '/org/freedesktop/systemd1/unit', '/org/freedesktop/systemd1/unit/dbus_2eservice' ) print(s) # Prints: dbus.service
Flags
Flags are int
values that should be ORed to combine.
Example, DbusDeprecatedFlag
plus DbusHiddenFlag
: DbusDeprecatedFlag | DbusHiddenFlag
- sdbus.DbusDeprecatedFlag: int
Mark this method or property as deprecated in introspection data.
- sdbus.DbusHiddenFlag: int
Method or property will not show up in introspection data.
- sdbus.DbusUnprivilegedFlag: int
Mark this method or property as unprivileged. This means anyone can call it. Only works for system bus as user session bus is fully trusted by default.
- sdbus.DbusNoReplyFlag: int
This method does not have a reply message. It instantly returns and does not have any errors.
- sdbus.DbusPropertyConstFlag: int
Mark that this property does not change during object life time.
- sdbus.DbusPropertyEmitsChangeFlag: int
This property emits signal when it changes.
- sdbus.DbusPropertyEmitsInvalidationFlag: int
This property emits signal when it invalidates. (means the value changed but does not include new value in the signal)
- sdbus.DbusPropertyExplicitFlag: int
This property is too heavy to calculate so its not included in GetAll method call.
- sdbus.DbusSensitiveFlag: int
Data in messages in sensitive and will be scrubbed from memory after message is red.