Unify configs so we can get rid of all those branches per machine. Also Wayland changes for Violet
This commit is contained in:
		
							parent
							
								
									5a0041e7d5
								
							
						
					
					
						commit
						6dd362247e
					
				
					 10 changed files with 274 additions and 105 deletions
				
			
		| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
import socket
 | 
			
		||||
import importlib
 | 
			
		||||
from libqtile.log_utils import logger
 | 
			
		||||
 | 
			
		||||
def load_config_class():
 | 
			
		||||
    # Try to import host-specific configuration first
 | 
			
		||||
    hostname = socket.gethostname().lower()
 | 
			
		||||
    if hostname:
 | 
			
		||||
        try:
 | 
			
		||||
            host_module = importlib.import_module(f"kuro.config.{hostname}")
 | 
			
		||||
            return getattr(host_module, "Config")
 | 
			
		||||
        except ImportError:
 | 
			
		||||
            pass
 | 
			
		||||
    logger.warning(f"No host-specific configuration available for {hostname}. Loading general config...")
 | 
			
		||||
 | 
			
		||||
    # If no config yet, load general Kuro Config object
 | 
			
		||||
    try:
 | 
			
		||||
        conf_module = importlib.import_module("kuro.config")
 | 
			
		||||
        return getattr(conf_module, "Config")
 | 
			
		||||
    except ImportError as e:
 | 
			
		||||
        pass
 | 
			
		||||
    logger.error("Could not load Kuro Config. Trying to load BaseConfig. Error: {}".format(e))
 | 
			
		||||
 | 
			
		||||
    # If no config yet, load fallback BaseConfig
 | 
			
		||||
    try:
 | 
			
		||||
        base_module = importlib.import_module("kuro.base")
 | 
			
		||||
        return getattr(base_module, "BaseConfig")
 | 
			
		||||
    except ImportError as e:
 | 
			
		||||
        pass
 | 
			
		||||
    return None
 | 
			
		||||
| 
						 | 
				
			
			@ -649,62 +649,70 @@ class NetworkInfoWidget(DualPaneTextboxBase):
 | 
			
		|||
 | 
			
		||||
    def _update_values(self):
 | 
			
		||||
        # Wifi
 | 
			
		||||
        try:
 | 
			
		||||
            essid, quality = get_status(self.wireless_interface)
 | 
			
		||||
            status = iwlib.get_iwconfig(self.wireless_interface)
 | 
			
		||||
            self.wireless_ips = netifaces.ifaddresses(self.wireless_interface)
 | 
			
		||||
            disconnected = essid is None
 | 
			
		||||
            percent = math.ceil(((quality or 0) / 70) * 100)
 | 
			
		||||
            self.wireless_quality = quality
 | 
			
		||||
            self.wireless_signal = percent
 | 
			
		||||
            self.wireless_name = essid
 | 
			
		||||
            self.wireless_connected = not disconnected
 | 
			
		||||
            self.wireless_accesspoint = status.get('Access Point', b'Unknown').decode()
 | 
			
		||||
            self.wireless_frequency = status.get('Frequency', b'Unknown').decode()
 | 
			
		||||
            self.wireless_ipv4 = self.wireless_ips.get(netifaces.AF_INET, [{'addr': ""}])[0]['addr']
 | 
			
		||||
            self.wireless_ipv6 = self.wireless_ips.get(netifaces.AF_INET6, [{'addr': ""}])[0]['addr']
 | 
			
		||||
            self.wireless_mac = self.wireless_ips.get(netifaces.AF_LINK, [{'addr': ""}])[0]['addr']
 | 
			
		||||
        except EnvironmentError:
 | 
			
		||||
            pass
 | 
			
		||||
        if self.wireless_interface:
 | 
			
		||||
            try:
 | 
			
		||||
                essid, quality = get_status(self.wireless_interface)
 | 
			
		||||
                status = iwlib.get_iwconfig(self.wireless_interface)
 | 
			
		||||
                self.wireless_ips = netifaces.ifaddresses(self.wireless_interface)
 | 
			
		||||
                disconnected = essid is None
 | 
			
		||||
                percent = math.ceil(((quality or 0) / 70) * 100)
 | 
			
		||||
                self.wireless_quality = quality
 | 
			
		||||
                self.wireless_signal = percent
 | 
			
		||||
                self.wireless_name = essid
 | 
			
		||||
                self.wireless_connected = not disconnected
 | 
			
		||||
                self.wireless_accesspoint = status.get('Access Point', b'Unknown').decode()
 | 
			
		||||
                self.wireless_frequency = status.get('Frequency', b'Unknown').decode()
 | 
			
		||||
                self.wireless_ipv4 = self.wireless_ips.get(netifaces.AF_INET, [{'addr': ""}])[0]['addr']
 | 
			
		||||
                self.wireless_ipv6 = self.wireless_ips.get(netifaces.AF_INET6, [{'addr': ""}])[0]['addr']
 | 
			
		||||
                self.wireless_mac = self.wireless_ips.get(netifaces.AF_LINK, [{'addr': ""}])[0]['addr']
 | 
			
		||||
            except EnvironmentError:
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
        # Wired
 | 
			
		||||
        try:
 | 
			
		||||
            self.wired_ips = netifaces.ifaddresses(self.wired_interface)
 | 
			
		||||
            self.wired_ipv4 = self.wired_ips.get(netifaces.AF_INET, [{'addr': ""}])[0]['addr']
 | 
			
		||||
            self.wired_ipv6 = self.wired_ips.get(netifaces.AF_INET6, [{'addr': ""}])[0]['addr']
 | 
			
		||||
            self.wired_mac = self.wired_ips.get(netifaces.AF_LINK, [{'addr': ""}])[0]['addr']
 | 
			
		||||
            command = ["ip", "link", "show", "{}".format(self.wired_interface)]
 | 
			
		||||
        if self.wired_interface:
 | 
			
		||||
            try:
 | 
			
		||||
                eth_status = call_process(command)
 | 
			
		||||
            except subprocess.CalledProcessError as e:
 | 
			
		||||
                logger.error(f"Error while calling {command} - {e}")
 | 
			
		||||
                return
 | 
			
		||||
            m = self.wired_up_regex.search(eth_status)
 | 
			
		||||
            if m:
 | 
			
		||||
                 self.wired_connected = "UP" in m.group(1)
 | 
			
		||||
            else:
 | 
			
		||||
                self.wired_connected = False
 | 
			
		||||
                self.wired_ips = netifaces.ifaddresses(self.wired_interface)
 | 
			
		||||
                self.wired_ipv4 = self.wired_ips.get(netifaces.AF_INET, [{'addr': ""}])[0]['addr']
 | 
			
		||||
                self.wired_ipv6 = self.wired_ips.get(netifaces.AF_INET6, [{'addr': ""}])[0]['addr']
 | 
			
		||||
                self.wired_mac = self.wired_ips.get(netifaces.AF_LINK, [{'addr': ""}])[0]['addr']
 | 
			
		||||
                command = ["ip", "link", "show", "{}".format(self.wired_interface)]
 | 
			
		||||
                try:
 | 
			
		||||
                    eth_status = call_process(command)
 | 
			
		||||
                except subprocess.CalledProcessError as e:
 | 
			
		||||
                    logger.error(f"Error while calling {command} - {e}")
 | 
			
		||||
                    return
 | 
			
		||||
                m = self.wired_up_regex.search(eth_status)
 | 
			
		||||
                if m:
 | 
			
		||||
                     self.wired_connected = "UP" in m.group(1)
 | 
			
		||||
                else:
 | 
			
		||||
                    self.wired_connected = False
 | 
			
		||||
 | 
			
		||||
        except (EnvironmentError, ValueError):
 | 
			
		||||
            pass
 | 
			
		||||
            except (EnvironmentError, ValueError):
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
    def update(self):
 | 
			
		||||
        self._update_values()
 | 
			
		||||
        self.draw()
 | 
			
		||||
 | 
			
		||||
    def draw(self):
 | 
			
		||||
        if self.wireless_connected:
 | 
			
		||||
            strength = ""
 | 
			
		||||
            if self.wireless_signal < 66:
 | 
			
		||||
                strength = ""
 | 
			
		||||
            if self.wireless_signal < 33:
 | 
			
		||||
                strength = ""
 | 
			
		||||
            self.text_left = strength
 | 
			
		||||
        if self.wireless_interface:
 | 
			
		||||
            if self.wireless_connected:
 | 
			
		||||
                strength = ""
 | 
			
		||||
                if self.wireless_signal < 66:
 | 
			
		||||
                    strength = ""
 | 
			
		||||
                if self.wireless_signal < 33:
 | 
			
		||||
                    strength = ""
 | 
			
		||||
                self.text_left = strength
 | 
			
		||||
            else:
 | 
			
		||||
                self.text_left = ""
 | 
			
		||||
        else:
 | 
			
		||||
            self.text_left = ""
 | 
			
		||||
            self.text_left = ""
 | 
			
		||||
 | 
			
		||||
        if self.wired_connected:
 | 
			
		||||
            self.text_right = ""
 | 
			
		||||
        if self.wired_interface:
 | 
			
		||||
            if self.wired_connected:
 | 
			
		||||
                self.text_right = ""
 | 
			
		||||
            else:
 | 
			
		||||
                self.text_right = ""
 | 
			
		||||
        else:
 | 
			
		||||
            self.text_right = ""
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue