Ver Fonte

screen battery info: show percentage and time till full when charging

Conflicts:
	screen/battery-rate
Fabian Peter Hammerle há 9 anos atrás
pai
commit
5e54b5ce17
2 ficheiros alterados com 51 adições e 0 exclusões
  1. 49 0
      battery-rate
  2. 2 0
      setup

+ 49 - 0
battery-rate

@@ -0,0 +1,49 @@
+#!/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
+
+    loop.run()
+
+if __name__ == "__main__":
+    sys.exit(main(sys.argv[1:]))

+ 2 - 0
setup

@@ -1,5 +1,7 @@
 #!/bin/bash
 
+pip install --user pydbus
+
 # relpath
 script_dir="$( dirname "${BASH_SOURCE[0]}" )"
 source ${script_dir}/../bash/functions