Hello,

I understand this is a dev mailing list, but I’m not sure where to post this 
question otherwise.

I’m attempting to write an application that interacts with UDisks2 over  DBus 
with PyGObject. However, I’m finding that after instantiating the  proper 
Gio.DBusObjectManagerClient, I seem to be unable to get updates  on the 
ObjectManager’s state. Am I missing something? The only example  code that I 
could find that had similar functionality was in udiskie 
(https://github.com/coldfix/udiskie),  but that application uses Gio.DBusProxy 
directly. Is that the  recommended approach? My (non-working) proof of concept 
code pasted  below. It prints the initial set of objects reported by the  
‘org.freedesktop.UDisks2’ object manager, but does not print changes  (either 
via signal or polling) when disks are added or removed.

I am using the version of PyGObject that comes packaged with Ubuntu 16.04 LTS, 
3.20.0, along with the versions of DBus and Glib, etc that also come with the 
OS. (https://packages.ubuntu.com/xenial/python3-gi)

Thank you,
Hayden Lau

========================
from time import sleep
import gi
gi.require_version('Gio', '2.0')
from gi.repository import Gio

udisks2 = Gio.DBusObjectManagerClient.new_for_bus_sync(
    Gio.BusType.SYSTEM, 
    Gio.DBusObjectManagerClientFlags.NONE,
    'org.freedesktop.UDisks2',
    '/org/freedesktop/UDisks2',
    None,
    None,
    None
)

def new_obj_handler(obj):
    print('New Object: ', obj)

def new_iface_handler(obj):
    print('New Interface: ', obj)

def get_paths(objmgr):
    return [obj.get_object_path() for obj in objmgr.get_objects()]

udisks2.connect('interface-added', new_iface_handler)
udisks2.connect('object-added', new_obj_handler)

paths = []
while(True):
    if paths != get_paths(udisks2):
        paths = get_paths(udisks2)
        print(paths)
    sleep(1)
_______________________________________________
python-hackers-list mailing list
python-hackers-list@gnome.org
https://mail.gnome.org/mailman/listinfo/python-hackers-list

Reply via email to