From: James Bunton Date: Wed, 12 Nov 2014 11:54:06 +0000 (+1100) Subject: Removed xfce4-genmon-script, rewrote in C and moved to jamesstuff X-Git-Url: https://code.delx.au/dotfiles/commitdiff_plain/51c707e1e8aa1d148affca4c8ceae17a6055d2c3 Removed xfce4-genmon-script, rewrote in C and moved to jamesstuff --- diff --git a/bin/xfce4-genmon-script b/bin/xfce4-genmon-script deleted file mode 100755 index d892bec..0000000 --- a/bin/xfce4-genmon-script +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env python3 - -import time -import subprocess -import sys - -def read_file(filename): - with open(filename) as f: - return f.read() - -def read_cpu_idle_jiffys(procstat): - line = procstat.split("\n")[0] - fields = line.split() - return int(fields[4]) - -def count_cpus(procstat): - count = -1 - for line in procstat.split("\n"): - if line.startswith("cpu"): - count += 1 - return count - -def read_cpu_percent(): - procstat = read_file("/proc/stat") - num_cpus = count_cpus(procstat) - - tstart = time.time() - idle_jiffy1 = read_cpu_idle_jiffys(procstat) - time.sleep(0.1) - idle_jiffy2 = read_cpu_idle_jiffys(read_file("/proc/stat")) - tend = time.time() - - duration = tend - tstart - idle_jiffys_per_second = (idle_jiffy2 - idle_jiffy1) / duration - - idle_jiffys_per_cpu_second = idle_jiffys_per_second / num_cpus - - # One jiffy is 10ms, so we can get the percentage very easily! - return 100 - idle_jiffys_per_cpu_second - -def read_mem_percent(): - meminfo = read_file("/proc/meminfo") - - d = {} - for line in meminfo.strip().split("\n"): - key, value = line.split()[:2] - d[key] = int(value) - - mem_total = d["MemTotal:"] - mem_free = d["MemAvailable:"] - mem_used = mem_total - mem_free - - return mem_used / mem_total * 100 - -def read_battery_percent(): - args = ["upower", "--show-info", "/org/freedesktop/UPower/devices/DisplayDevice"] - with subprocess.Popen(args, stdout=subprocess.PIPE) as process: - upower_data, _ = process.communicate() - if process.poll() != 0: - return - - for line in upower_data.decode("ascii").split("\n"): - line = line.strip() - if line.startswith("percentage:"): - percent_str = line.split()[1] - return int(percent_str.replace("%", "")) - -def write(s): - sys.stdout.write(s) - -def print_percent(name, units, value, color_map): - if value is None: - return - - value = round(value) - - for low, high, color in color_map: - if value >= low and value <= high: - break - else: - color = "black" - - write( - "%s %s%s " % - (name, color, value, units) - ) - -def main(): - write("") - - print_percent( - "cpu", "%", - read_cpu_percent(), - color_map=[(50, 100, "red"), (0, 5, "green")], - ) - - print_percent( - "mem", "%", - read_mem_percent(), - color_map=[(70, 100, "red")], - ) - - print_percent( - "batt", "%", - read_battery_percent(), - color_map=[(0, 25, "red")], - ) - - write("") - -if __name__ == "__main__": - main()