mirror of
https://github.com/dcarrillo/dotfiles.git
synced 2024-11-20 07:31:12 +00:00
44 lines
1.5 KiB
Python
Executable File
44 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import subprocess
|
|
|
|
colors = {
|
|
'us': '#FDD835', # us, user : time running un-niced user processes
|
|
'sy': '#23A8F1', # sy, system : time running kernel processes
|
|
'ni': '#FFFFFF', # ni, nice : time running niced user processes
|
|
'wa': '#E53935', # wa, IO-wait : time waiting for I/O completion
|
|
'hi': '#66CDAA', # hi : time spent servicing hardware interrupts
|
|
'si': '#7FFFD4', # si : time spent servicing software interrupts
|
|
'st': '#7B2B4E', # st : time stolen from this vm by the hypervisor
|
|
'id': '#555555'
|
|
}
|
|
|
|
|
|
def show_cpu_usage():
|
|
new_env = dict(os.environ)
|
|
new_env['LANG'] = 'en_US.UTF-8' # ensure that the decimal separator is a point
|
|
top = subprocess.run(["top", "-bn1"], capture_output=True, env=new_env)
|
|
|
|
raw_cpu_usages = top.stdout.decode("utf-8").split('\n')[2]
|
|
cpu_usage = str.replace(raw_cpu_usages, '%Cpu(s):', '')
|
|
|
|
bar = ''
|
|
global_count = 0
|
|
for usage in cpu_usage.split(','):
|
|
value, key = str.lstrip(usage).split(' ')
|
|
count = round(float(value) / 10)
|
|
if count > 0 and key != 'id':
|
|
global_count += count
|
|
bar += '%{F' + colors[key] + '}' + '_' * count + '%{F-}'
|
|
|
|
padding = ''
|
|
if global_count < 10:
|
|
padding = '%{F' + colors['id'] + '}' + '_' * (10 - global_count) + '%{F-}'
|
|
|
|
print("%{A1:$TERMINAL_CMD 'top -o %CPU' &:}%{T5}" + bar + padding + "%{T-}%{A}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
show_cpu_usage()
|