44 lines
1.8 KiB
QML
44 lines
1.8 KiB
QML
pragma Singleton
|
|
import Quickshell
|
|
import Quickshell.Networking
|
|
|
|
Singleton {
|
|
id: root
|
|
property bool wifiEnabled: Networking.wifiEnabled
|
|
readonly property list<NetworkDevice> devices: Networking.devices.values
|
|
property WifiDevice wifiDev: devices.find(dev => dev.type === DeviceType.Wifi) ?? null
|
|
property WiredDevice wiredDev: devices.find(dev => dev.type === DeviceType.Wired) ?? null
|
|
property list<WifiNetwork> wifiNetworks: wifiDev?.networks.values ?? []
|
|
property WifiNetwork connectedNet: wifiNetworks.find(net => net.connected) ?? null
|
|
function getWiredIcon() {
|
|
if (wiredDev?.hasLink ?? false) {
|
|
if (wiredDev.connected ?? false) {
|
|
return "network-wired";
|
|
} else
|
|
return "network-wired-unavailable";
|
|
} else
|
|
return "network-wired-unavailable";
|
|
}
|
|
function getWifiIcon() {
|
|
Networking.checkConnectivity();
|
|
let state = wifiDev?.state ?? ConnectionState.Unknown;
|
|
if (state === ConnectionState.Disconnected || state === ConnectionState.Unknown)
|
|
return "network-wireless-disconnected";
|
|
if (state === ConnectionState.Connecting || state === ConnectionState.Disconnecting)
|
|
return "network-wireless-acquiring";
|
|
|
|
if (wifiDev?.connected ?? false) {
|
|
let strength = connectedNet?.signalStrength ?? 0.0;
|
|
if (strength <= 0.2)
|
|
return "network-wireless-signal-none";
|
|
if (strength <= 0.40)
|
|
return "network-wireless-signal-weak";
|
|
if (strength <= 0.60)
|
|
return "network-wireless-signal-ok";
|
|
if (strength <= 0.80)
|
|
return "network-wireless-signal-good";
|
|
if (strength > 0.80)
|
|
return "network-wireless-signal-excellect";
|
|
}
|
|
}
|
|
}
|