mirror of
https://github.com/Mastermindzh/dotfiles.git
synced 2024-11-25 08:13:34 +01:00
103 lines
3.1 KiB
Plaintext
103 lines
3.1 KiB
Plaintext
|
#!/usr/bin/env python3
|
||
|
#
|
||
|
# Copyright (C) 2016 James Murphy
|
||
|
# Licensed under the GPL version 2 only
|
||
|
#
|
||
|
# A battery indicator blocklet script for i3blocks
|
||
|
|
||
|
import re
|
||
|
from subprocess import check_output
|
||
|
|
||
|
status = check_output(['acpi'], universal_newlines=True)
|
||
|
|
||
|
if not status:
|
||
|
# stands for no battery found
|
||
|
fulltext = "<span color='red'><span font='FontAwesome'>\uf00d \uf240</span></span>"
|
||
|
percentleft = 100
|
||
|
else:
|
||
|
# if there is more than one battery in one laptop, the percentage left is
|
||
|
# available for each battery separately, although state and remaining
|
||
|
# time for overall block is shown in the status of the first battery
|
||
|
batteries = status.split("\n")
|
||
|
state_batteries=[]
|
||
|
commasplitstatus_batteries=[]
|
||
|
percentleft_batteries=[]
|
||
|
time = ""
|
||
|
for battery in batteries:
|
||
|
if battery!='':
|
||
|
state_batteries.append(battery.split(": ")[1].split(", ")[0])
|
||
|
commasplitstatus = battery.split(", ")
|
||
|
if not time:
|
||
|
time = commasplitstatus[-1].strip()
|
||
|
# check if it matches a time
|
||
|
time = re.match(r"(\d+):(\d+)", time)
|
||
|
if time:
|
||
|
time = ":".join(time.groups())
|
||
|
timeleft = " ({})".format(time)
|
||
|
else:
|
||
|
timeleft = ""
|
||
|
|
||
|
p = int(commasplitstatus[1].rstrip("%\n"))
|
||
|
if p>0:
|
||
|
percentleft_batteries.append(p)
|
||
|
commasplitstatus_batteries.append(commasplitstatus)
|
||
|
state = state_batteries[0]
|
||
|
commasplitstatus = commasplitstatus_batteries[0]
|
||
|
if percentleft_batteries:
|
||
|
percentleft = int(sum(percentleft_batteries)/len(percentleft_batteries))
|
||
|
else:
|
||
|
percentleft = 0
|
||
|
|
||
|
# stands for charging
|
||
|
FA_LIGHTNING = "<span color='yellow'><span font='FontAwesome'>\uf0e7</span></span>"
|
||
|
|
||
|
# stands for plugged in
|
||
|
FA_PLUG = "<span font='FontAwesome'>\uf1e6</span>"
|
||
|
|
||
|
# stands for using battery
|
||
|
FA_BATTERY = "<span font='FontAwesome'>\uf240</span>"
|
||
|
|
||
|
# stands for unknown status of battery
|
||
|
FA_QUESTION = "<span font='FontAwesome'>\uf128</span>"
|
||
|
|
||
|
|
||
|
if state == "Discharging":
|
||
|
fulltext = FA_BATTERY + " "
|
||
|
elif state == "Full":
|
||
|
fulltext = FA_PLUG + " "
|
||
|
timeleft = ""
|
||
|
elif state == "Unknown":
|
||
|
fulltext = FA_QUESTION + " " + FA_BATTERY + " "
|
||
|
timeleft = ""
|
||
|
else:
|
||
|
fulltext = FA_LIGHTNING + " " + FA_PLUG + " "
|
||
|
|
||
|
def color(percent):
|
||
|
if percent < 10:
|
||
|
# exit code 33 will turn background red
|
||
|
return "#FFFFFF"
|
||
|
if percent < 20:
|
||
|
return "#FF3300"
|
||
|
if percent < 30:
|
||
|
return "#FF6600"
|
||
|
if percent < 40:
|
||
|
return "#FF9900"
|
||
|
if percent < 50:
|
||
|
return "#FFCC00"
|
||
|
if percent < 60:
|
||
|
return "#FFFF00"
|
||
|
if percent < 70:
|
||
|
return "#FFFF33"
|
||
|
if percent < 80:
|
||
|
return "#FFFF66"
|
||
|
return "#FFFFFF"
|
||
|
|
||
|
form = '<span>{}%</span>'
|
||
|
fulltext += form.format(percentleft)
|
||
|
fulltext += timeleft
|
||
|
|
||
|
print(fulltext)
|
||
|
print(fulltext)
|
||
|
if percentleft < 10:
|
||
|
exit(33)
|