(defpoll wireless_active :initial false
                        :interval "60s"
  "scripts/bar/network-status wireless")
(defpoll wired_active :initial false
                        :interval "60s"
  "scripts/bar/network-status ethernet")
(defvar reveal_network false)
(defwidget network []
  (revealer-on-hover
    :revealvar reveal_network
    :revealvar-name "reveal_network"
    (button :onclick 'nm-connection-editor'
            :class {wireless_active || wired_active ? "active" : ""}
      "")
    (network_children)))

(defwidget network_children []
  (box :class "reveal_children"
    :orientation "h"
    :space-evenly false
    :halign "center"
    (button :onclick {wireless_active ? 'scripts/bar/network-updown wifi down' : 'scripts/network-updown wifi up'}
            :class {wireless_active ? "active" : ""}
      "")
    (button :onclick {wired_active ? 'scripts/bar/network-updown ethernet down' : 'scripts/network-updown ethernet up'}
            :class {wired_active ? "active" : ""}
      "🖧")))