From 6915e702cfb5b67ee6a5ba455ef9f8c929aeb19b Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 16 Oct 2018 13:35:38 -0400 Subject: [PATCH] Show fan level in i3status --- i3wrapper.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/i3wrapper.py b/i3wrapper.py index b9a79e8..b302039 100755 --- a/i3wrapper.py +++ b/i3wrapper.py @@ -48,11 +48,12 @@ def _backlight(dev_dir='/sys/class/backlight/intel_backlight'): THINKFAN_CONF = '/etc/thinkfan.conf' +ACPI_IBM_FAN = '/proc/acpi/ibm/fan' @_bit(7) -def _hwtemp(conf=THINKFAN_CONF): - if not os.path.exists(THINKFAN_CONF): +def _hwtemp(conf=THINKFAN_CONF, fan=ACPI_IBM_FAN): + if not os.path.exists(conf): return None, None temps = [] @@ -70,13 +71,23 @@ def _hwtemp(conf=THINKFAN_CONF): avg_temp = float(sum(temps)) / len(temps) / 1000.0 color = None + fan_level = 'unset' + try: + with open(fan) as fan_fp: + for line in fan_fp.readlines(): + if not line.startswith('level:\t\t'): + continue + fan_level = int(line.replace('level:\t\t', '')) + except (OSError, IOError) as exc: + sys.stderr.write(str(exc) + '\n') + if avg_temp > 75: color = '#ff0000' if avg_temp >= 50: color = '#ffaa00' if avg_temp <= 25: color = '#5599ff' - return 'T:{:.1f}°C'.format(avg_temp), color + return 'T:{:.1f}°C L:{}'.format(avg_temp, fan_level), color def _print_line(message):