Source code for i3pystatus.load
from i3pystatus import IntervalModule
try:
from os import cpu_count
except ImportError:
from multiprocessing import cpu_count
[docs]class Load(IntervalModule):
"""
Shows system load
.. rubric:: Available formatters
* `{avg1}` — the load average of the last minute
* `{avg5}` — the load average of the last five minutes
* `{avg15}` — the load average of the last fifteen minutes
* `{tasks}` — the number of tasks (e.g. 1/285, which indiciates that one out of 285 total tasks is runnable)
"""
format = "{avg1} {avg5}"
settings = (
"format",
("color", "The text color"),
("critical_limit", "Limit above which the load is considered critical, defaults to amount of cores."),
("critical_color", "The critical color"),
)
file = "/proc/loadavg"
color = "#ffffff"
critical_limit = cpu_count()
critical_color = "#ff0000"
def run(self):
with open(self.file, "r") as f:
avg1, avg5, avg15, tasks, lastpid = f.read().split(" ", 5)
urgent = float(avg1) > self.critical_limit
self.output = {
"full_text": self.format.format(avg1=avg1, avg5=avg5, avg15=avg15, tasks=tasks),
"urgent": urgent,
"color": self.critical_color if urgent else self.color,
}