fixed unset session bus address issue
authorKonstantin Stepanov <kstep@p-nut.info>
Wed, 15 Dec 2010 05:28:17 +0000 (07:28 +0200)
committerKonstantin Stepanov <kstep@p-nut.info>
Wed, 15 Dec 2010 05:33:09 +0000 (07:33 +0200)
dbuscron/bus.py

index 8ab3cf0..7d7f5b8 100644 (file)
@@ -1,5 +1,6 @@
+from __future__ import with_statement
 
-import dbus
+import dbus, os
 
 from dbuscron.logger import Logger
 log = Logger(__name__)
@@ -41,9 +42,20 @@ class DbusBus(object):
         return cls.__bus
 
     def __init__(self):
+        self.get_session_bus_address()
         from dbus.mainloop.glib import DBusGMainLoop
         DBusGMainLoop(set_as_default=True)
 
+    def get_session_bus_address(self):
+        try:
+            return os.environ['DBUS_SESSION_BUS_ADDRESS']
+        except KeyError:
+            with open('/tmp/session_bus_address.user', 'rb') as f:
+                session_bus_address = f.readline().strip().split('=', 1).pop().strip("'\"")
+                os.environ['DBUS_SESSION_BUS_ADDRESS'] = session_bus_address
+                log('session bus address aquired', session_bus_address)
+                return session_bus_address
+
     @property
     def system(self):
         if not self.__system_bus: