nettui 0.2.0

Unified TUI for Wi-Fi and Ethernet
Documentation
#[derive(Debug, Clone)]
pub struct WifiNetwork {
    pub ssid: String,
    pub security: String,
    pub signal: String,
    pub connected: bool,
    pub hidden: Option<bool>,
    pub autoconnect: Option<bool>,
    pub available: bool,
}

#[derive(Debug, Clone)]
pub struct WifiDeviceInfo {
    pub iface: String,
    pub mode: String,
    pub powered: String,
    pub state: String,
    pub scanning: String,
    pub frequency: String,
    pub security: String,
}

#[derive(Debug, Clone)]
pub struct WifiState {
    pub ifaces: Vec<String>,
    pub station_iface: Option<String>,
    pub access_point_iface: Option<String>,
    pub connected_ssid: Option<String>,
    pub access_point_ssid: Option<String>,
    pub access_point_clients: Vec<String>,
    pub known_networks: Vec<WifiNetwork>,
    pub unavailable_known_networks: Vec<WifiNetwork>,
    pub new_networks: Vec<WifiNetwork>,
    pub hidden_networks: Vec<WifiNetwork>,
    pub device: Option<WifiDeviceInfo>,
}

impl WifiState {
    pub fn empty() -> Self {
        Self {
            ifaces: Vec::new(),
            station_iface: None,
            access_point_iface: None,
            connected_ssid: None,
            access_point_ssid: None,
            access_point_clients: Vec::new(),
            known_networks: Vec::new(),
            unavailable_known_networks: Vec::new(),
            new_networks: Vec::new(),
            hidden_networks: Vec::new(),
            device: None,
        }
    }

    pub fn has_adapter(&self) -> bool {
        !self.ifaces.is_empty()
    }

    pub fn is_active(&self) -> bool {
        self.connected_ssid.is_some()
    }
}