import dbus bus = dbus.SystemBus() hal_manager_obj = bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/Manager") hal_manager = dbus.Interface(hal_manager_obj, "org.freedesktop.Hal.Manager") #device_names = hal_manager.GetAllDevices() ac = hal_manager.FindDeviceByCapability("ac_adapter") #all_devices = hal_manager.GetAllDevices() #for n in device_names: print n #obj = bus.get_object("org.freedesktop.Hal", u'/org/freedesktop/Hal/devices/acpi_AC') #obj.GetAllProperties() name = ac[0] device_dbus_obj = bus.get_object("org.freedesktop.Hal" ,ac[0]) properties = device_dbus_obj.GetAllProperties(dbus_interface="org.freedesktop.Hal.Device") try: parent_name = properties["info.parent"] except KeyError: # no parent, must be parent of virtual_root parent_name = "/" except TypeError: print "Error: no properties for device %s"%name #continue print properties['ac_adapter.present'] #for p in properties: # print p, " :: ", properties[p] if properties['ac_adapter.present']: print "plugged in" else: print "unplugged"