(defpoll vinfo
  :initial "{\"volume\": 0, \"muted\": false}"
  :interval "1s"
  "bash ~/.config/eww/scripts/get-volume-info.sh")
(defvar volume-reveal false)

(defwidget volume-module []
  (eventbox :onhover "${EWW_CMD} update volume-reveal=true"
            :onhoverlost "${EWW_CMD} update volume-reveal=false"
            (box :class "module volume"
                 :orientation "h"
                 :space-evenly false
                 :tooltip {vinfo.muted? "muted" : "Volume: ${vinfo.volume}%"}
                 (label :text {vinfo.muted ? "󰝟" : vinfo.volume < 10 ? "󰕿" : vinfo.volume < 70 ? "󰖀" : "󰕾"}
                        :class "volume icon ${vinfo.muted ? "volume-mute" : ""}")
                 (revealer :transition "slideleft"
                           :duration "750ms"
                           :reveal {volume-reveal && !vinfo.muted}
                           (scale :class "volume-bar"
                                  :orientation "h"
                                  :valign "center"
                                  :width 60
                                  :min 0
                                  :max 101
                                  :value {vinfo.volume}
                                  :onchange "amixer sset Master {}% > /dev/null")))))
