Source code for libqtile.widget.thermal_zone

from libqtile.log_utils import logger
from libqtile.widget import base


[docs]class ThermalZone(base.ThreadPoolText): """Thermal zone widget. This widget was made to read thermal zone files and transform values to human readable format. You can set zone parameter to any standard thermal zone file from /sys/class/thermal directory. """ orientations = base.ORIENTATION_HORIZONTAL defaults = [ ("update_interval", 2.0, "Update interval"), ("zone", "/sys/class/thermal/thermal_zone0/temp", "Thermal zone"), ("format", "{temp}°C", "Display format"), ("format_crit", "{temp}°C CRIT!", "Critical display format"), ("hidden", False, "Set True to only show if critical value reached"), ("fgcolor_crit", "ff0000", "Font color on critical values"), ("fgcolor_high", "ffaa00", "Font color on high values"), ("fgcolor_normal", "ffffff", "Font color on normal values"), ("crit", 70, "Critical temperature level"), ("high", 50, "High themperature level"), ] def __init__(self, **config): super().__init__("", **config) self.add_defaults(ThermalZone.defaults) def poll(self): try: with open(self.zone) as f: value = round(int(f.read().rstrip()) / 1000) except OSError: logger.exception("%s does not exist", self.zone) return "err!" variables = dict() variables["temp"] = str(value) output = self.format.format(**variables) if value < self.high: self.layout.colour = self.fgcolor_normal elif value < self.crit: self.layout.colour = self.fgcolor_high elif value >= self.crit: self.layout.colour = self.fgcolor_crit output = self.format_crit.format(**variables) if self.hidden and value < self.crit: output = "" return output