Am Mittwoch, 28. März 2012 schrieb Serghei Amelian:
On Wednesday 28 March 2012 19:43:54 Mag. Dr. Nikolaus Klepp wrote: [...]
kpowersave doesn't use acpid, but HAL. Check if your user have permissions to query hal, via dbus.
I can query hal, but how do I query hal via dbus?
With dbus-send, but I can't tell you exactly how to query it, I'm not familiar with hal api.
[...]
Ok, found a way. Looks like my user has access to hal via dbus:
$ python Python 2.7.3rc2 (default, Mar 21 2012, 16:14:45) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information.
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") batPath = hal_manager.FindDeviceByCapability("battery") bat = bus.get_object("org.freedesktop.Hal", batPath[0]) bat.GetAllProperties(dbus_interface="org.freedesktop.Hal.Device")
dbus.Dictionary({dbus.String(u'battery.reporting.technology'): dbus.String(u'Li-ion', variant_level=1), dbus.String(u'info.category'): dbus.String(u'battery', variant_level=1), dbus.String(u'info.parent'): dbus.String(u'/org/freedesktop/Hal/devices/computer', variant_level=1), dbus.String(u'battery.charge_level.last_full'): dbus.Int32(56160, variant_level=1), dbus.String(u'info.product'): dbus.String(u'92P1127', variant_level=1), dbus.String(u'battery.charge_level.current'): dbus.Int32(41210, variant_level=1), dbus.String(u'battery.rechargeable.is_charging'): dbus.Boolean(False, variant_level=1), dbus.String(u'linux.subsystem'): dbus.String(u'power_supply', variant_level=1), dbus.String(u'battery.voltage.unit'): dbus.String(u'mV', variant_level=1), dbus.String(u'battery.charge_level.rate'): dbus.Int32(0, variant_level=1), dbus.String(u'battery.type'): dbus.String(u'primary', variant_level=1), dbus.String(u'battery.charge_level.percentage'): dbus.Int32(73, variant_level=1), dbus.String(u'linux.sysfs_path'): dbus.String(u'/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0', variant_level=1), dbus.String(u'battery.charge_level.design'): dbus.Int32(56160, variant_level=1), dbus.String(u'battery.voltage.design'): dbus.Int32(10800, variant_level=1), dbus.String(u'battery.is_rechargeable'): dbus.Boolean(True, variant_level=1), dbus.String(u'battery.reporting.current'): dbus.Int32(41210, variant_level=1), dbus.String(u'info.subsystem'): dbus.String(u'power_supply', variant_level=1), dbus.String(u'battery.reporting.design'): dbus.Int32(56160, variant_level=1), dbus.String(u'linux.hotplug_type'): dbus.Int32(2, variant_level=1), dbus.String(u'battery.model'): dbus.String(u'92P1127', variant_level=1), dbus.String(u'battery.voltage.current'): dbus.Int32(11310, variant_level=1), dbus.String(u'battery.remaining_time'): dbus.Int32(6868, variant_level=1), dbus.String(u'battery.serial'): dbus.String(u'30552', variant_level=1), dbus.String(u'info.udi'): dbus.String(u'/org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0', variant_level=1), dbus.String(u'info.capabilities'): dbus.Array([dbus.String(u'battery')], signature=dbus.Signature('s'), variant_level=1), dbus.String(u'battery.technology'): dbus.String(u'lithium-ion', variant_level=1), dbus.String(u'battery.rechargeable.is_discharging'): dbus.Boolean(True, variant_level=1), dbus.String(u'battery.reporting.unit'): dbus.String(u'mWh', variant_level=1), dbus.String(u'battery.present'): dbus.Boolean(True, variant_level=1), dbus.String(u'battery.reporting.last_full'): dbus.Int32(56160, variant_level=1), dbus.String(u'battery.vendor'): dbus.String(u'SANYO', variant_level=1)}, signature=dbus.Signature('sv'))
So ... what to do next? I installed xfce4-power-manager as a workaround (which actually works), but that's not quite what I was looking for :-)
nik