(defvar bluetooth-reveal false)
(defpoll bluetooth-status
  :initial ""
  :interval "10s"
  "bluetoothctl show | grep -q \"Powered: yes\" && { [[ $(bluetoothctl devices Connected) ]] && echo \"connected\" || echo \"on\"; } || echo \"off\"")
(defpoll bluetooth-devices
  :initial ""
  :interval "20s"
  "for device in $(bluetoothctl devices Connected | grep Device | cut -d ' ' -f 2); do bluetoothctl info $device | grep \"Alias\" | cut -d ' ' -f 2-; done;")


(defwidget bluetooth-module []
  (eventbox :onhover "${EWW_CMD} update bluetooth-reveal=true"
            :onhoverlost "${EWW_CMD} update bluetooth-reveal=false"
            :onclick "$HOME/.config/rofi/menus/bluetooth/bluetooth.sh &"
            (box :class "module bluetooth"
                 :orientation "h"
                 :space-evenly "false"
                 :tooltip {bluetooth-status == "connected" ? bluetooth-devices :
                           bluetooth-status == "on" ? "Bluetooth: On" : "Bluetooth: Off"}
                 (label :text {bluetooth-status == "connected" ? "󰂱" :
                               bluetooth-status == "on" ? "󰂯" : "󰂲"}
                        :class "bluetooth icon")
                 (revealer :transition "slideleft"
                           :duration "750ms"
                           :reveal {bluetooth-reveal && winfo.connected}
                           (label :class "bluetooth-text"
                                  :text {bluetooth-status == "connected" ? "Connected" :
                                         bluetooth-status == "on" ? "On" : "Off"})))))
