dotfiles/config/powerline-shell/segments/battery.py

38 lines
1.4 KiB
Python
Raw Normal View History

2021-04-20 11:12:35 +00:00
from ..utils import BasicSegment, warn
import os
class Segment(BasicSegment):
def add_to_powerline(self):
# See discussion in https://github.com/banga/powerline-shell/pull/204
# regarding the directory where battery info is saved
if os.path.exists("/sys/class/power_supply/BAT0"):
dir_ = "/sys/class/power_supply/BAT0"
elif os.path.exists("/sys/class/power_supply/BAT1"):
dir_ = "/sys/class/power_supply/BAT1"
else:
warn("battery directory could not be found")
return
with open(os.path.join(dir_, "capacity")) as f:
cap = int(f.read().strip())
with open(os.path.join(dir_, "status")) as f:
status = f.read().strip()
if status == "Full":
if self.powerline.segment_conf("battery", "always_show_percentage", False):
pwr_fmt = u" {cap:d}% \U0001F50C "
else:
pwr_fmt = u" \U0001F50C "
elif status == "Charging":
pwr_fmt = u" {cap:d}% \u26A1 "
else:
pwr_fmt = " {cap:d}% "
if cap < self.powerline.segment_conf("battery", "low_threshold", 20):
bg = self.powerline.theme.BATTERY_LOW_BG
fg = self.powerline.theme.BATTERY_LOW_FG
else:
bg = self.powerline.theme.BATTERY_NORMAL_BG
fg = self.powerline.theme.BATTERY_NORMAL_FG
self.powerline.append(pwr_fmt.format(cap=cap), fg, bg)