aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/i3blocks/.local/bin/i3blocks-cpu
blob: ddb1d6807bffc0cc9fb37149576d2848f8f7b06f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python3

import os
import json

ICON = "\U000f0ee0"  # 󰻠
BLACK = f"#{os.environ.get("BASE16_COLOR_00_HEX")}"
RED = f"#{os.environ.get("BASE16_COLOR_08_HEX")}"
YELLOW = f"#{os.environ.get("BASE16_COLOR_0A_HEX")}"
AQUA = f"#{os.environ.get("BASE16_COLOR_0C_HEX")}"


def main():
    off = json.loads(os.environ.get("values", json.dumps([0 for i in range(10)])))

    with open("/proc/stat", "r") as f:
        val = [int(x) for x in f.readline().strip().split(" ")[2:]]

    if elapsed := sum(val + off):
        usage = sum(val[0:3] + val[5:] + off[0:3] + off[5:]) / elapsed
    else:
        usage = 0

    output = {
        "full_text": " {} {:.0%} ".format(ICON, usage),
        "values": [-x for x in val],
    }
    if usage > 0.9:
        output["color"] = BLACK
        output["background"] = RED
    elif usage > 0.6:
        output["color"] = BLACK
        output["background"] = YELLOW
    elif usage > 0.3:
        output["color"] = BLACK
        output["background"] = AQUA

    print(json.dumps(output, ensure_ascii=False), flush=True)


if __name__ == "__main__":
    main()