|
@@ -57,49 +57,62 @@ def get_networks() -> list:
|
|
|
|
|
|
|
|
def get_available() -> list:
|
|
def get_available() -> list:
|
|
|
available_networks = get_networks()
|
|
available_networks = get_networks()
|
|
|
-
|
|
|
|
|
available_networks = sorted(available_networks, key=lambda x: (0 if x["active"] else 1, -x["signal"]))
|
|
available_networks = sorted(available_networks, key=lambda x: (0 if x["active"] else 1, -x["signal"]))
|
|
|
-
|
|
|
|
|
return available_networks
|
|
return available_networks
|
|
|
|
|
|
|
|
|
|
+def signal_to_bars(signal: int) -> str:
|
|
|
|
|
+ if signal > 83:
|
|
|
|
|
+ return "signal_wifi_4_bar"
|
|
|
|
|
+ if signal >= 66:
|
|
|
|
|
+ return "network_wifi"
|
|
|
|
|
+ elif signal >= 49:
|
|
|
|
|
+ return "network_wifi_3_bar"
|
|
|
|
|
+ elif signal >= 32:
|
|
|
|
|
+ return "network_wifi_2_bar"
|
|
|
|
|
+ elif signal >= 15:
|
|
|
|
|
+ return "network_wifi_1_bar"
|
|
|
|
|
+ else:
|
|
|
|
|
+ return "signal_wifi_0_bar"
|
|
|
|
|
+
|
|
|
def yuck() -> str:
|
|
def yuck() -> str:
|
|
|
available = get_available()
|
|
available = get_available()
|
|
|
- ret = r"""(box :orientation "v" :spacing 2"""
|
|
|
|
|
|
|
+ ret = r"""(box :orientation "v" :spacing 8"""
|
|
|
|
|
|
|
|
for connection in available:
|
|
for connection in available:
|
|
|
- icon = ""
|
|
|
|
|
- if connection["type"] == "802-11-wireless":
|
|
|
|
|
- icon = "w" # legg inn ikon etter signal strength
|
|
|
|
|
- elif connection["type"] == "802-3-ethernet":
|
|
|
|
|
- icon = "e"
|
|
|
|
|
- elif connection["type"] == "vpn":
|
|
|
|
|
- icon = "v"
|
|
|
|
|
- else:
|
|
|
|
|
- icon = "?"
|
|
|
|
|
-
|
|
|
|
|
|
|
+ signal_icon = signal_to_bars(connection["signal"])
|
|
|
safe_name = connection["name"].replace('"', r'\"')
|
|
safe_name = connection["name"].replace('"', r'\"')
|
|
|
-
|
|
|
|
|
- if connection["active"] == True:
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if connection["active"]:
|
|
|
ret += rf"""
|
|
ret += rf"""
|
|
|
(button
|
|
(button
|
|
|
- :class "active-wifi"
|
|
|
|
|
- :onclick "~/.config/eww/widgets/network/scripts/disconnect_wifi.sh"
|
|
|
|
|
|
|
+ :class "network-item active"
|
|
|
|
|
+ :onclick "~/.config/eww/widgets/network/scripts/disconnect_wifi.sh '{safe_name}'"
|
|
|
|
|
+ (box :orientation "h" :space-evenly false :spacing 16
|
|
|
|
|
+ (label :class "network-icon" :text "{signal_icon}")
|
|
|
|
|
+ (box :orientation "v" :space-evenly false :spacing 2
|
|
|
|
|
+ (label :class "network-name" :text "{safe_name}" :xalign 0)
|
|
|
|
|
+ (label :class "network-subtext" :text "Connected" :xalign 0)
|
|
|
|
|
+ )
|
|
|
|
|
+ (box :hexpand true)
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
"""
|
|
"""
|
|
|
else:
|
|
else:
|
|
|
ret += rf"""
|
|
ret += rf"""
|
|
|
(button
|
|
(button
|
|
|
- :class "inactive-wifi"
|
|
|
|
|
- :onclick "~/.config/eww/widgets/network/scripts/connect_wifi.sh"
|
|
|
|
|
- """
|
|
|
|
|
- ret += rf"""
|
|
|
|
|
- (box :orientation "h" :height 32 :spacing 2
|
|
|
|
|
- (label :text "{icon}")
|
|
|
|
|
- (label :text "{safe_name}")
|
|
|
|
|
|
|
+ :class "network-item"
|
|
|
|
|
+ :onclick "~/.config/eww/widgets/network/scripts/connect_wifi.sh '{safe_name}'"
|
|
|
|
|
+ (box :orientation "h" :space-evenly false :spacing 16
|
|
|
|
|
+ (label :class "network-icon" :text "{signal_icon}")
|
|
|
|
|
+ (box :orientation "v" :space-evenly true :spacing 2
|
|
|
|
|
+ (label :class "network-name" :text "{safe_name}" :xalign 0)
|
|
|
|
|
+ )
|
|
|
|
|
+ (box :hexpand true)
|
|
|
)
|
|
)
|
|
|
)
|
|
)
|
|
|
- """
|
|
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
return ret + ")"
|
|
return ret + ")"
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if __name__ == "__main__":
|
|
|
- print(yuck())
|
|
|
|
|
-
|
|
|
|
|
|
|
+ print(yuck())
|