1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #!/usr/bin/env python
- import os
- import sys
- import pydbus
- import datetime
- from gi.repository import GLib
- def main(argv):
- loop = GLib.MainLoop()
- battery = pydbus.SystemBus().get(
- 'org.freedesktop.UPower',
- '/org/freedesktop/UPower/devices/battery_BAT0',
- )
- def battery_changed():
- """ screen backtick does not kill the backtick process whenever the screen terminates. """
- if os.getppid() == 1:
- loop.quit()
- """ 0: Unknown
- 1: Charging
- 2: Discharging
- 3: Empty
- 4: Fully charged
- 5: Pending charge
- 6: Pending discharge
- """
- if battery.State == 2:
- sys.stdout.write('%.1fW %s\n' % (
- battery.EnergyRate,
- (datetime.datetime.now() + datetime.timedelta(seconds = battery.TimeToEmpty)).strftime("%H:%M"),
- ))
- elif battery.State == 4:
- sys.stdout.write('full\n')
- else:
- sys.stdout.write('%d%% %s\n' % (
- battery.Percentage,
- (datetime.datetime.now() + datetime.timedelta(seconds = battery.TimeToFull)).strftime("%H:%M"),
- ))
- sys.stdout.flush()
- battery.onChanged = battery_changed
- battery.onPropertiesChanged = lambda interface, attr, l: battery_changed()
- loop.run()
- if __name__ == "__main__":
- sys.exit(main(sys.argv[1:]))
|