# dbus/connect
Connect to a D-Bus bus and complete the SASL auth + `HELLO` handshake
synchronously, so the connection is ready for calls, subscriptions, and
exports immediately.
## Syntax
[dbus/connect ?opts]
## Parameters
- `$opts` — optional map:
- `:addr` — bus address string (e.g. `"unix:path=/run/user/1000/bus"`)
- `:system` — `true` selects `unix:path=/run/dbus/system_bus_socket`
Defaults to the session bus: `$DBUS_SESSION_BUS_ADDRESS`, else
`$XDG_RUNTIME_DIR/bus`, else `/run/user/<uid>/bus`. `:system true` overrides
`:addr`.
## Examples
set conn [dbus/connect] # session bus set sys [dbus/connect %{ :system true }] # system bus set priv [dbus/connect %{ :addr "unix:path=/tmp/testbus" }]
## Returns
A `dbus_conn` native resource, or `%Err{:message}` on a bad address, a
missing daemon (`"bus daemon not running"`), or a failed handshake. The
resource is closed by `dbus/disconnect` or the GC finalizer.
## See Also
`dbus/call`, `dbus/subscribe`, `dbus/export`, `dbus/info`