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
|
||||
Draw.buffer("mem_misc", out_misc, only_save=True)
|
||||
try:
|
||||
#* Mem
|
||||
cx = 1; cy = 1
|
||||
|
||||
#* Mem
|
||||
cx = 1; cy = 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}'
|
||||
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}'
|
||||
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)}'
|
||||
|
||||
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:
|
||||
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.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}')
|
||||
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.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}}'
|
||||
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
|
||||
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)
|
||||
cls.resized = cls.redraw = False
|
||||
|
||||
|
|
Loading…
Reference in New Issue