mirror of https://github.com/aristocratos/bpytop
Added additional crash fixes for graph and swap toggles
parent
c4a9c2bb6f
commit
f0a941ae6b
113
bpytop.py
113
bpytop.py
|
@ -1922,70 +1922,71 @@ class MemBox(Box):
|
||||||
|
|
||||||
if Collector.collect_interrupt: return
|
if Collector.collect_interrupt: return
|
||||||
Draw.buffer("mem_misc", out_misc, only_save=True)
|
Draw.buffer("mem_misc", out_misc, only_save=True)
|
||||||
|
try:
|
||||||
|
#* Mem
|
||||||
|
cx = 1; cy = 1
|
||||||
|
|
||||||
#* Mem
|
out += f'{Mv.to(y, x+1)}{THEME.title}{Fx.b}Total:{mem.string["total"]:>{cls.mem_width - 9}}{Fx.ub}{THEME.main_fg}'
|
||||||
cx = 1; cy = 1
|
if cls.graph_height > 0:
|
||||||
|
gli = f'{Mv.l(2)}{THEME.mem_box(Symbol.title_right)}{THEME.div_line}{Symbol.h_line * (cls.mem_width - 1)}{"" if CONFIG.show_disks else THEME.mem_box}{Symbol.title_left}{Mv.l(cls.mem_width - 1)}{THEME.title}'
|
||||||
|
if cls.graph_height >= 2:
|
||||||
|
gbg = f'{Mv.l(1)}'
|
||||||
|
gmv = f'{Mv.l(cls.mem_width - 2)}{Mv.u(cls.graph_height - 1)}'
|
||||||
|
|
||||||
out += f'{Mv.to(y, x+1)}{THEME.title}{Fx.b}Total:{mem.string["total"]:>{cls.mem_width - 9}}{Fx.ub}{THEME.main_fg}'
|
big_mem: bool = True if cls.mem_width > 21 else False
|
||||||
if cls.graph_height > 0:
|
for name in cls.mem_names:
|
||||||
gli = f'{Mv.l(2)}{THEME.mem_box(Symbol.title_right)}{THEME.div_line}{Symbol.h_line * (cls.mem_width - 1)}{"" if CONFIG.show_disks else THEME.mem_box}{Symbol.title_left}{Mv.l(cls.mem_width - 1)}{THEME.title}'
|
|
||||||
if cls.graph_height >= 2:
|
|
||||||
gbg = f'{Mv.l(1)}'
|
|
||||||
gmv = f'{Mv.l(cls.mem_width - 2)}{Mv.u(cls.graph_height - 1)}'
|
|
||||||
|
|
||||||
big_mem: bool = True if cls.mem_width > 21 else False
|
|
||||||
for name in cls.mem_names:
|
|
||||||
if Collector.collect_interrupt: return
|
|
||||||
if cls.mem_size > 2:
|
|
||||||
out += (f'{Mv.to(y+cy, x+cx)}{gli}{name.capitalize()[:None if big_mem else 5]+":":<{1 if big_mem else 6.6}}{Mv.to(y+cy, x+cx + cls.mem_width - 3 - (len(mem.string[name])))}{Fx.trans(mem.string[name])}'
|
|
||||||
f'{Mv.to(y+cy+1, x+cx)}{gbg}{Meters.mem[name](None if cls.resized else mem.percent[name])}{gmv}{str(mem.percent[name])+"%":>4}')
|
|
||||||
cy += 2 if not cls.graph_height else cls.graph_height + 1
|
|
||||||
else:
|
|
||||||
out += f'{Mv.to(y+cy, x+cx)}{name.capitalize():{5.5 if cls.mem_size > 1 else 1.1}} {gbg}{Meters.mem[name](None if cls.resized else mem.percent[name])}{mem.string[name][:None if cls.mem_size > 1 else -2]:>{9 if cls.mem_size > 1 else 7}}'
|
|
||||||
cy += 1 if not cls.graph_height else cls.graph_height
|
|
||||||
#* Swap
|
|
||||||
if cls.swap_on and CONFIG.show_swap and not CONFIG.swap_disk and mem.swap_string:
|
|
||||||
if h - cy > 5:
|
|
||||||
if cls.graph_height > 0: out += f'{Mv.to(y+cy, x+cx)}{gli}'
|
|
||||||
cy += 1
|
|
||||||
|
|
||||||
out += f'{Mv.to(y+cy, x+cx)}{THEME.title}{Fx.b}Swap:{mem.swap_string["total"]:>{cls.mem_width - 8}}{Fx.ub}{THEME.main_fg}'
|
|
||||||
cy += 1
|
|
||||||
for name in cls.swap_names:
|
|
||||||
if Collector.collect_interrupt: return
|
if Collector.collect_interrupt: return
|
||||||
if cls.mem_size > 2:
|
if cls.mem_size > 2:
|
||||||
out += (f'{Mv.to(y+cy, x+cx)}{gli}{name.capitalize()[:None if big_mem else 5]+":":<{1 if big_mem else 6.6}}{Mv.to(y+cy, x+cx + cls.mem_width - 3 - (len(mem.swap_string[name])))}{Fx.trans(mem.swap_string[name])}'
|
out += (f'{Mv.to(y+cy, x+cx)}{gli}{name.capitalize()[:None if big_mem else 5]+":":<{1 if big_mem else 6.6}}{Mv.to(y+cy, x+cx + cls.mem_width - 3 - (len(mem.string[name])))}{Fx.trans(mem.string[name])}'
|
||||||
f'{Mv.to(y+cy+1, x+cx)}{gbg}{Meters.swap[name](None if cls.resized else mem.swap_percent[name])}{gmv}{str(mem.swap_percent[name])+"%":>4}')
|
f'{Mv.to(y+cy+1, x+cx)}{gbg}{Meters.mem[name](None if cls.resized else mem.percent[name])}{gmv}{str(mem.percent[name])+"%":>4}')
|
||||||
cy += 2 if not cls.graph_height else cls.graph_height + 1
|
cy += 2 if not cls.graph_height else cls.graph_height + 1
|
||||||
else:
|
else:
|
||||||
out += f'{Mv.to(y+cy, x+cx)}{name.capitalize():{5.5 if cls.mem_size > 1 else 1.1}} {gbg}{Meters.swap[name](None if cls.resized else mem.swap_percent[name])}{mem.swap_string[name][:None if cls.mem_size > 1 else -2]:>{9 if cls.mem_size > 1 else 7}}'; cy += 1 if not cls.graph_height else cls.graph_height
|
out += f'{Mv.to(y+cy, x+cx)}{name.capitalize():{5.5 if cls.mem_size > 1 else 1.1}} {gbg}{Meters.mem[name](None if cls.resized else mem.percent[name])}{mem.string[name][:None if cls.mem_size > 1 else -2]:>{9 if cls.mem_size > 1 else 7}}'
|
||||||
|
cy += 1 if not cls.graph_height else cls.graph_height
|
||||||
if cls.graph_height > 0 and not cy == h: out += f'{Mv.to(y+cy, x+cx)}{gli}'
|
#* Swap
|
||||||
|
if cls.swap_on and CONFIG.show_swap and not CONFIG.swap_disk and mem.swap_string:
|
||||||
#* Disks
|
if h - cy > 5:
|
||||||
if CONFIG.show_disks and mem.disks:
|
if cls.graph_height > 0: out += f'{Mv.to(y+cy, x+cx)}{gli}'
|
||||||
cx = x + cls.mem_width - 1; cy = 0
|
|
||||||
big_disk: bool = True if cls.disks_width >= 25 else False
|
|
||||||
gli = f'{Mv.l(2)}{THEME.div_line}{Symbol.title_right}{Symbol.h_line * cls.disks_width}{THEME.mem_box}{Symbol.title_left}{Mv.l(cls.disks_width - 1)}'
|
|
||||||
for name, item in mem.disks.items():
|
|
||||||
if Collector.collect_interrupt: return
|
|
||||||
if not name in Meters.disks_used:
|
|
||||||
continue
|
|
||||||
if cy > h - 2: break
|
|
||||||
out += Fx.trans(f'{Mv.to(y+cy, x+cx)}{gli}{THEME.title}{Fx.b}{item["name"]:{cls.disks_width - 2}.12}{Mv.to(y+cy, x + cx + cls.disks_width - 11)}{item["total"][:None if big_disk else -2]:>9}')
|
|
||||||
out += f'{Mv.to(y+cy, x + cx + (cls.disks_width // 2) - (len(item["io"]) // 2) - 2)}{Fx.ub}{THEME.main_fg}{item["io"]}{Fx.ub}{THEME.main_fg}{Mv.to(y+cy+1, x+cx)}'
|
|
||||||
out += f'Used:{str(item["used_percent"]) + "%":>4} ' if big_disk else "U "
|
|
||||||
out += f'{Meters.disks_used[name]}{item["used"][:None if big_disk else -2]:>{9 if big_disk else 7}}'
|
|
||||||
cy += 2
|
|
||||||
|
|
||||||
if len(mem.disks) * 3 <= h + 1:
|
|
||||||
if cy > h - 1: break
|
|
||||||
out += Mv.to(y+cy, x+cx)
|
|
||||||
out += f'Free:{str(item["free_percent"]) + "%":>4} ' if big_disk else f'{"F "}'
|
|
||||||
out += f'{Meters.disks_free[name]}{item["free"][:None if big_disk else -2]:>{9 if big_disk else 7}}'
|
|
||||||
cy += 1
|
cy += 1
|
||||||
if len(mem.disks) * 4 <= h + 1: cy += 1
|
|
||||||
|
|
||||||
|
out += f'{Mv.to(y+cy, x+cx)}{THEME.title}{Fx.b}Swap:{mem.swap_string["total"]:>{cls.mem_width - 8}}{Fx.ub}{THEME.main_fg}'
|
||||||
|
cy += 1
|
||||||
|
for name in cls.swap_names:
|
||||||
|
if Collector.collect_interrupt: return
|
||||||
|
if cls.mem_size > 2:
|
||||||
|
out += (f'{Mv.to(y+cy, x+cx)}{gli}{name.capitalize()[:None if big_mem else 5]+":":<{1 if big_mem else 6.6}}{Mv.to(y+cy, x+cx + cls.mem_width - 3 - (len(mem.swap_string[name])))}{Fx.trans(mem.swap_string[name])}'
|
||||||
|
f'{Mv.to(y+cy+1, x+cx)}{gbg}{Meters.swap[name](None if cls.resized else mem.swap_percent[name])}{gmv}{str(mem.swap_percent[name])+"%":>4}')
|
||||||
|
cy += 2 if not cls.graph_height else cls.graph_height + 1
|
||||||
|
else:
|
||||||
|
out += f'{Mv.to(y+cy, x+cx)}{name.capitalize():{5.5 if cls.mem_size > 1 else 1.1}} {gbg}{Meters.swap[name](None if cls.resized else mem.swap_percent[name])}{mem.swap_string[name][:None if cls.mem_size > 1 else -2]:>{9 if cls.mem_size > 1 else 7}}'; cy += 1 if not cls.graph_height else cls.graph_height
|
||||||
|
|
||||||
|
if cls.graph_height > 0 and not cy == h: out += f'{Mv.to(y+cy, x+cx)}{gli}'
|
||||||
|
|
||||||
|
#* Disks
|
||||||
|
if CONFIG.show_disks and mem.disks:
|
||||||
|
cx = x + cls.mem_width - 1; cy = 0
|
||||||
|
big_disk: bool = True if cls.disks_width >= 25 else False
|
||||||
|
gli = f'{Mv.l(2)}{THEME.div_line}{Symbol.title_right}{Symbol.h_line * cls.disks_width}{THEME.mem_box}{Symbol.title_left}{Mv.l(cls.disks_width - 1)}'
|
||||||
|
for name, item in mem.disks.items():
|
||||||
|
if Collector.collect_interrupt: return
|
||||||
|
if not name in Meters.disks_used:
|
||||||
|
continue
|
||||||
|
if cy > h - 2: break
|
||||||
|
out += Fx.trans(f'{Mv.to(y+cy, x+cx)}{gli}{THEME.title}{Fx.b}{item["name"]:{cls.disks_width - 2}.12}{Mv.to(y+cy, x + cx + cls.disks_width - 11)}{item["total"][:None if big_disk else -2]:>9}')
|
||||||
|
out += f'{Mv.to(y+cy, x + cx + (cls.disks_width // 2) - (len(item["io"]) // 2) - 2)}{Fx.ub}{THEME.main_fg}{item["io"]}{Fx.ub}{THEME.main_fg}{Mv.to(y+cy+1, x+cx)}'
|
||||||
|
out += f'Used:{str(item["used_percent"]) + "%":>4} ' if big_disk else "U "
|
||||||
|
out += f'{Meters.disks_used[name]}{item["used"][:None if big_disk else -2]:>{9 if big_disk else 7}}'
|
||||||
|
cy += 2
|
||||||
|
|
||||||
|
if len(mem.disks) * 3 <= h + 1:
|
||||||
|
if cy > h - 1: break
|
||||||
|
out += Mv.to(y+cy, x+cx)
|
||||||
|
out += f'Free:{str(item["free_percent"]) + "%":>4} ' if big_disk else f'{"F "}'
|
||||||
|
out += f'{Meters.disks_free[name]}{item["free"][:None if big_disk else -2]:>{9 if big_disk else 7}}'
|
||||||
|
cy += 1
|
||||||
|
if len(mem.disks) * 4 <= h + 1: cy += 1
|
||||||
|
except (KeyError, TypeError):
|
||||||
|
return
|
||||||
Draw.buffer(cls.buffer, f'{out_misc}{out}{Term.fg}', only_save=Menu.active)
|
Draw.buffer(cls.buffer, f'{out_misc}{out}{Term.fg}', only_save=Menu.active)
|
||||||
cls.resized = cls.redraw = False
|
cls.resized = cls.redraw = False
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue