(defwidget bar [] (centerbox :orientation "h" (workspaces) (music) (sidestuff))) (defwidget sidestuff [] (box :class "sidestuff" :orientation "h" :space-evenly false :halign "end" ; (metric :label "🔊" ; :value volume ; :onchange "amixer -D pulse sset Master {}%") (metric :label "" :value {EWW_RAM.used_mem_perc} :onchange "") (metric :label "💾" :value {round((1 - (EWW_DISK["/"].free / EWW_DISK["/"].total)) * 100, 0)} :onchange "") time)) (defwidget workspaces [] (box :class "workspaces" :orientation "h" :space-evenly true :halign "start" :spacing 10 (button :class "${active_workspace == 1 ? 'active' : '' }" :onclick "wmctrl -s 0" 1) (button :class "${active_workspace == 2 ? 'active' : '' }" :onclick "wmctrl -s 1" 2) (button :class "${active_workspace == 3 ? 'active' : '' }" :onclick "wmctrl -s 2" 3) (button :class "${active_workspace == 4 ? 'active' : '' }" :onclick "wmctrl -s 3" 4) (button :class "${active_workspace == 5 ? 'active' : '' }" :onclick "wmctrl -s 4" 5) (button :class "${active_workspace == 6 ? 'active' : '' }" :onclick "wmctrl -s 5" 6) (button :class "${active_workspace == 7 ? 'active' : '' }" :onclick "wmctrl -s 6" 7) (button :class "${active_workspace == 8 ? 'active' : '' }" :onclick "wmctrl -s 7" 8) (button :class "${active_workspace == 9 ? 'active' : '' }" :onclick "wmctrl -s 8" 9))) (defwidget music [] (box :class "music" :orientation "h" :space-evenly false :halign "center" {music != "" ? "🎵${music}" : ""})) (defwidget metric [label value onchange] (box :orientation "h" :class "metric" :space-evenly false (box :class "label" label) (scale :min 0 :max 101 :active {onchange != ""} :value value :onchange onchange))) (deflisten music :initial "" "playerctl --follow metadata --format '{{ artist }} - {{ title }}' || true") ; (defpoll volume :interval "1s" ; "scripts/getvol") (defpoll time :interval "10s" "date '+%H:%M %b %d, %Y'") (defpoll active_workspace :interval "10ms" "hyprctl monitors -j | jq '.[]|.activeWorkspace.id'") (defwindow bar :monitor 0 :windowtype "dock" :geometry (geometry :x "0%" :y "0%" :width "100%" :height "10px" :anchor "top center") :reserve (struts :side "top" :distance "4%") :exclusive true (bar))