From 72deb9f09d0d866273e42b2b18ac06425c86799d Mon Sep 17 00:00:00 2001 From: Alessandro Ghedini Date: Thu, 4 Sep 2014 13:31:53 +0200 Subject: [PATCH] dbus: add support for systemd user instances --- dbus/dbus.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/dbus/dbus.go b/dbus/dbus.go index 9bdc80c7..14c8acec 100644 --- a/dbus/dbus.go +++ b/dbus/dbus.go @@ -84,7 +84,7 @@ type Conn struct { func New() (*Conn, error) { c := new(Conn) - if err := c.initConnection(); err != nil { + if err := c.initConnection(dbus.SystemBusPrivate); err != nil { return nil, err } @@ -92,9 +92,22 @@ func New() (*Conn, error) { return c, nil } -func (c *Conn) initConnection() error { +// NewUserConnection() establishes a connection to the session bus and +// authenticates. This can be used to connect to systemd user instances. +func NewUserConnection() (*Conn, error) { + c := new(Conn) + + if err := c.initConnection(dbus.SessionBusPrivate); err != nil { + return nil, err + } + + c.initJobs() + return c, nil +} + +func (c *Conn) initConnection(createBus func()(*dbus.Conn, error)) error { var err error - c.sysconn, err = dbus.SystemBusPrivate() + c.sysconn, err = createBus() if err != nil { return err }