;;Input values (defvar image '["kitty.svg","firefox.svg","sublime.svg","kitty.svg","","","","","","webcord.svg"]') (deflisten brightnessValue :initial "0" `scripts/brightness.sh`) (defpoll network :initial '{"name":"No Connection","image":"n.A."}' :interval "2s" `scripts/network.sh &`) (deflisten workspaces :initial '' `scripts/clients/build/clients`) (defpoll bluetooth :initial '{"name":"","battery":"0"}' :interval "2s" `scripts/bluetooth.sh`) (deflisten volume :initial '{"volume":"0","muted":"0"}' `scripts/volume.sh`) (defpoll media :initial '{"status":"","name":""}' :interval "2s" `scripts/media.sh`) ;; Widget templates (defwidget imageDPI [image size visible] (overlay :width "${size}" :height "${size}" :visible "${visible}" (box :width "${size}" :height "${size}") (transform :scale-x "50%" :scale-y "50%" :halign "center" :valign "center" :translate-x "${size}" :translate-y "${size}" (image :path "${image}" :image-width "${size * 2}" :image-height "${size * 2}")))) (defwidget icon [widgetclass ?hover percentage image] (box :class "${widgetclass}" :space-evenly false (overlay :tooltip "${hover}" (circular-progress :width 18 :value "${percentage}" :start-at 75 :thickness 2 :clockwise false) (transform :scale-x "50%" :scale-y "50%" :halign "center" :valign "center" :translate-x "16" :translate-y "16" (image :path "${image}" :image-width "32" :image-height "32"))))) ;; Widgets (defwidget workspaces [] (box (for workspace in workspaces (eventbox :onclick `/home/willifan/.config/scripts/workspaces.sh ${workspace.num}` (label :width "15" :class {workspace.active == 1 ? "activeWorkspace" : workspace.occupied == 0 ? "unoccupiedWorkspace" : ""} ;;:visible {workspace.occupied == 1 ? "true" : "false"} :text "${workspace.num}"))))) (defwidget time [] (eventbox :onclick `` :class "smallBox" :valign "center" :height 20 :width 70 (label :text "${formattime(EWW_TIME, "%H:%M:%S")}"))) (defwidget cpu [] (icon :widgetclass "cpu" :hover "${round(EWW_CPU.avg, 1)}%" :percentage "${round(EWW_CPU.avg, 1)}" :image "images/cpu.png")) (defwidget ram [] (icon :widgetclass "ram" :hover "${round(EWW_RAM.used_mem /(1024*1024*1024), 1)} GiB | ${round(EWW_RAM.used_mem_perc, 1)}%" :percentage "${round(EWW_RAM.used_mem_perc, 1)}" :image "images/ram.png")) (defwidget audio [] (icon :widgetclass "${volume.muted == 1 ? "muted" : "volume"}" :hover "${volume.volume}%" :percentage "${volume.volume >= 0 && volume.volume <= 100 ? volume.volume : 0}" :image "${volume.muted == 1 ? "images/volumeMuted.png" : "images/volume.png"}")) (defwidget brightness [] (icon :widgetclass "brightness" :hover "${brightnessValue / 960}%" :percentage "${brightnessValue / 960}" :image "images/brightness.png")) (defwidget network [] (icon :widgetclass "network" :hover "${network.name}" :percentage "100" :image "images/${network.image}.png")) (defwidget bluetooth [] (icon :widgetclass "bluetooth" :hover "${bluetooth.name}" :percentage "${bluetooth.battery}" :image "images/bluetooth.png")) (defwidget battery [] (icon :widgetclass {EWW_BATTERY.BAT1.status == "Charging" ? "battery" : EWW_BATTERY.total_avg > 25 ? "battery" : "batteryLow"} :hover "${round(EWW_BATTERY.total_avg, 1)}%" :percentage "${EWW_BATTERY.total_avg <= 90 ? round(EWW_BATTERY.total_avg, 1)/0.9 : 100}" :image {EWW_BATTERY.BAT1.status == "Charging" ? "images/charging.png" : EWW_BATTERY.total_avg > 25 ? "images/battery.png" : "images/batteryLow.png"})) (defwidget power [] (icon :widgetclass "power" :hover "placeholder" :percentage "0" :image "images/power.png")) (defwidget smallSpacer [] (box :width 2)) (defwidget space [] (box :width 5)) (defwidget seperator [] (box (label :text "|" ))) ;; Widget blocks (defwidget media [] (box :class "smallBox" :height 20 :valign "center" :space-evenly false :visible {media.status == "Playing" ? true : false} (smallSpacer) (label :text "${media.name}" :tooltip "${media.name}" :limit-width 40) (smallSpacer))) (defwidget processing [] (eventbox :onclick 'hyprctl dispatch exec "[float; pin; size 40% 40%; move 100%-41% 40] kitty bpytop -b proc"' :class "smallBox" (box :space-evenly false :halign "end" :valign "center" :height 20 (smallSpacer) (cpu) (space) (ram) (smallSpacer)))) (defwidget controlls [] (eventbox :onclick 'hyprctl dispatch exec "[float; pin; size 40% 40%; move 100%-41% 40] kitty pulsemixer"' :class "smallBox" (box :space-evenly false :halign "end" :valign "center" :height 20 (smallSpacer) (audio) (space) (brightness) (smallSpacer)))) (defwidget wireless [] (eventbox :onclick "`networkmanager_dmenu`" :class "smallBox" (box :space-evenly false :halign "end" :valign "center" :height 20 (smallSpacer) (network) (space) (bluetooth) (smallSpacer)))) (defwidget energy [] (eventbox :onclick `sleep 1 && systemctl hibernate` :class "smallBox" (box :space-evenly false :halign "end" :valign "center" :height 20 (smallSpacer) (battery) (space) (power) (smallSpacer)))) (defwidget start [] (box :orientation "h" :space-evenly false :halign "start" (space) (workspaces))) (defwidget center [monitor] (box :orientation "h" :space-evenly false :halign "center" (workspaces :monitor "${monitor}") )) (defwidget end [] (box :spacing 2 :orientation "h" :space-evenly false :valign "center" :halign "end" (processing) (seperator) (controlls) (seperator) (wireless) (seperator) (energy) (space))) ;; Window definition (include "newbar.yuck")