40 lines
948 B
QML
40 lines
948 B
QML
import QtQuick
|
|
|
|
// polybar 'internal/network' (wlan / eth); shows the first physical interface of the given type
|
|
BarLabel {
|
|
id: network
|
|
|
|
required property string interfaceType // "wireless" | "wired"
|
|
|
|
text: ""
|
|
|
|
PollingCommand {
|
|
interval: 31000
|
|
command: ["sh", "-c", `
|
|
for path in /sys/class/net/*
|
|
do
|
|
[ -e "$path/device" ] || continue
|
|
[ -d "$path/wireless" ] && type=wireless || type=wired
|
|
[ "$type" = "${network.interfaceType}" ] || continue
|
|
|
|
ifname="$(basename "$path")"
|
|
ip="$(ip -4 -o addr show dev "$ifname" | awk '{print $4}' | cut -d/ -f1 | head -n1)"
|
|
echo "$ifname $ip"
|
|
break
|
|
done
|
|
`]
|
|
onOutput: output => {
|
|
const [ifname, ip] = output.trim().split(/\s+/)
|
|
if (!ifname) {
|
|
network.text = ""
|
|
} else if (ip) {
|
|
network.text = `${ifname}/${ip}`
|
|
network.color = Colors.secondary
|
|
} else {
|
|
network.text = `(${ifname}:⊘)`
|
|
network.color = Colors.disabled
|
|
}
|
|
}
|
|
}
|
|
}
|