quickshell/modules/Services/Network.qml
2026-08-28 16:41:19 +02:00

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";
}
}
}