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):
 | 
			
		||||
		'''Get a list of all network devices sorted by highest throughput'''
 | 
			
		||||
		cls.nic_i = 0
 | 
			
		||||
		cls.nics = []
 | 
			
		||||
		cls.nic = ""
 | 
			
		||||
		try:
 | 
			
		||||
			io_all = psutil.net_io_counters(pernic=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -3110,10 +3111,15 @@ class NetCollector(Collector):
 | 
			
		|||
 | 
			
		||||
	@classmethod
 | 
			
		||||
	def switch(cls, key: str):
 | 
			
		||||
		if len(cls.nics) < 2: return
 | 
			
		||||
		cls.nic_i += +1 if key == "n" else -1
 | 
			
		||||
		if cls.nic_i >= len(cls.nics): cls.nic_i = 0
 | 
			
		||||
		elif cls.nic_i < 0: cls.nic_i = len(cls.nics) - 1
 | 
			
		||||
		if len(cls.nics) < 2 and cls.nic in cls.nics:
 | 
			
		||||
			return
 | 
			
		||||
 | 
			
		||||
		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.switched = True
 | 
			
		||||
		Collector.collect(NetCollector, redraw=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -3124,11 +3130,20 @@ class NetCollector(Collector):
 | 
			
		|||
		stat: Dict
 | 
			
		||||
		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:
 | 
			
		||||
			cls.nic = cls.new_nic
 | 
			
		||||
			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()
 | 
			
		||||
			if not cls.nic: return
 | 
			
		||||
		try:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue