[Newm] New method showing computer’s connectivity
This commit is contained in:
parent
e5a2527f81
commit
6fffa0177b
@ -279,6 +279,53 @@ def get_bluetooth_devices() -> str:
|
|||||||
return f" {counter}"
|
return f" {counter}"
|
||||||
|
|
||||||
|
|
||||||
|
def get_wifi_name(iface) -> str:
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
service_name = "org.freedesktop.NetworkManager"
|
||||||
|
proxy = bus.get_object(service_name, "/org/freedesktop/NetworkManager/Settings")
|
||||||
|
|
||||||
|
# Get the device object path based on interface name
|
||||||
|
proxy = bus.get_object(service_name, "/org/freedesktop/NetworkManager")
|
||||||
|
nm = dbus.Interface(proxy, "org.freedesktop.NetworkManager")
|
||||||
|
devpath = nm.GetDeviceByIpIface(iface)
|
||||||
|
|
||||||
|
# Get a proxy to the wifi device and get the active access point's object path
|
||||||
|
proxy = bus.get_object(service_name, devpath)
|
||||||
|
props = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
|
||||||
|
active_ap_path = props.Get(
|
||||||
|
"org.freedesktop.NetworkManager.Device.Wireless", "ActiveAccessPoint"
|
||||||
|
)
|
||||||
|
if active_ap_path == "/":
|
||||||
|
return ""
|
||||||
|
|
||||||
|
# Get the active access point's SSID and BSSID
|
||||||
|
ap_proxy = bus.get_object(service_name, active_ap_path)
|
||||||
|
ap_props = dbus.Interface(ap_proxy, "org.freedesktop.DBus.Properties")
|
||||||
|
raw_ssid = ap_props.Get("org.freedesktop.NetworkManager.AccessPoint", "Ssid")
|
||||||
|
ssid = b"".join([bytes([v]) for v in raw_ssid]).decode("utf-8")
|
||||||
|
return ssid
|
||||||
|
|
||||||
|
|
||||||
|
def get_local_address(wifi_iface, eth_iface) -> str:
|
||||||
|
if_addrs = psutil.net_if_addrs()
|
||||||
|
wifi = if_addrs.get(wifi_iface)
|
||||||
|
eth = if_addrs.get(eth_iface)
|
||||||
|
wifi_addr = wifi[0].address if wifi else ""
|
||||||
|
eth_addr = eth[0].address if eth else ""
|
||||||
|
wifi_addr = wifi_addr if not ":" in wifi_addr else ""
|
||||||
|
eth_addr = eth_addr if not ":" in eth_addr else ""
|
||||||
|
return wifi_addr or eth_addr
|
||||||
|
|
||||||
|
|
||||||
|
def get_network() -> str:
|
||||||
|
wifi_interface = "wlp8s0"
|
||||||
|
eth_interface = "enp9s0f1"
|
||||||
|
network_name = get_wifi_name(wifi_interface)
|
||||||
|
network_name = f" {network_name}" if network_name else " eth"
|
||||||
|
addr = get_local_address(wifi_interface, eth_interface)
|
||||||
|
return f"{network_name} ({addr})" if addr else "睊 disconnected"
|
||||||
|
|
||||||
|
|
||||||
def get_currently_playing():
|
def get_currently_playing():
|
||||||
bus = dbus.SessionBus()
|
bus = dbus.SessionBus()
|
||||||
service_name = "org.mpris.MediaPlayer2.playerctld"
|
service_name = "org.mpris.MediaPlayer2.playerctld"
|
||||||
|
Loading…
Reference in New Issue
Block a user