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