mirror of https://github.com/aristocratos/bpytop
Update network interface list automatically
parent
09e639cc04
commit
0201406edc
25
bpytop.py
25
bpytop.py
|
@ -3092,6 +3092,7 @@ class NetCollector(Collector):
|
||||||
def _get_nics(cls):
|
def _get_nics(cls):
|
||||||
'''Get a list of all network devices sorted by highest throughput'''
|
'''Get a list of all network devices sorted by highest throughput'''
|
||||||
cls.nic_i = 0
|
cls.nic_i = 0
|
||||||
|
cls.nics = []
|
||||||
cls.nic = ""
|
cls.nic = ""
|
||||||
try:
|
try:
|
||||||
io_all = psutil.net_io_counters(pernic=True)
|
io_all = psutil.net_io_counters(pernic=True)
|
||||||
|
@ -3110,10 +3111,15 @@ class NetCollector(Collector):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def switch(cls, key: str):
|
def switch(cls, key: str):
|
||||||
if len(cls.nics) < 2: return
|
if len(cls.nics) < 2 and cls.nic in cls.nics:
|
||||||
cls.nic_i += +1 if key == "n" else -1
|
return
|
||||||
if cls.nic_i >= len(cls.nics): cls.nic_i = 0
|
|
||||||
elif cls.nic_i < 0: cls.nic_i = len(cls.nics) - 1
|
if cls.nic_i == -1:
|
||||||
|
cls.nic_i = 0 if key == "n" else -1
|
||||||
|
else:
|
||||||
|
cls.nic_i += +1 if key == "n" else -1
|
||||||
|
|
||||||
|
cls.nic_i %= len(cls.nics)
|
||||||
cls.new_nic = cls.nics[cls.nic_i]
|
cls.new_nic = cls.nics[cls.nic_i]
|
||||||
cls.switched = True
|
cls.switched = True
|
||||||
Collector.collect(NetCollector, redraw=True)
|
Collector.collect(NetCollector, redraw=True)
|
||||||
|
@ -3124,11 +3130,20 @@ class NetCollector(Collector):
|
||||||
stat: Dict
|
stat: Dict
|
||||||
up_stat = psutil.net_if_stats()
|
up_stat = psutil.net_if_stats()
|
||||||
|
|
||||||
|
if sorted(cls.nics) != sorted(nic for nic in up_stat if up_stat[nic].isup):
|
||||||
|
old_nic = cls.nic
|
||||||
|
cls._get_nics()
|
||||||
|
cls.nic = old_nic
|
||||||
|
if cls.nic not in cls.nics:
|
||||||
|
cls.nic_i = -1
|
||||||
|
else:
|
||||||
|
cls.nic_i = cls.nics.index(cls.nic)
|
||||||
|
|
||||||
if cls.switched:
|
if cls.switched:
|
||||||
cls.nic = cls.new_nic
|
cls.nic = cls.new_nic
|
||||||
cls.switched = False
|
cls.switched = False
|
||||||
|
|
||||||
if not cls.nic or cls.nic not in up_stat or not up_stat[cls.nic].isup:
|
if not cls.nic or cls.nic not in up_stat:
|
||||||
cls._get_nics()
|
cls._get_nics()
|
||||||
if not cls.nic: return
|
if not cls.nic: return
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue