(include "variables.yuck") (include "templates.yuck") ;; left (defwidget time [] (box :class "barbox" :space-evenly false :spacing 3 (space) (eventbox :onclick `` :class "smallBox" :valign "center" :height 20 :width 70 (label :text "${formattime(EWW_TIME, "%H:%M:%S")}")) (space))) ;; center (defwidget normalWorkspaces [monitor] (box :space-evenly false :spacing 3 :valign "center" :height 20 (for workspace in workspaces (workspace :activeOn {workspace.normal.activeOn} :occupied {workspace.normal.occupied} :id {workspace.normal.id} :cmd {workspace.normal.id} :icon {workspace.normal.icon} :monitor {monitor})))) ;; right (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")) ;; Widget blocks (defwidget media [] (box :class "barbox" :visible {media.status == "Playing" ? true : false} :spacing 3 :space-evenly false :halign "end" :valign "center" :height 30 (space) (box :class "smallBox" :height 20 :valign "center" (label :text {media.name} :tooltip {media.name} :truncate true)) (space))) (defwidget processing [] (eventbox :onclick 'hyprctl dispatch exec "[float; pin; size 40% 40%; move 100%-41% 40] kitty bpytop -b proc"' :class "smallBox" :halign "end" :valign "center" :height 20 (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" :halign "end" :valign "center" :height 20 (box :space-evenly false :halign "end" :valign "center" :height 20 (smallSpacer) (audio) (space) (brightness) (smallSpacer)))) (defwidget wireless [] (eventbox :onclick "`networkmanager_dmenu`" :class "smallBox" :halign "end" :valign "center" :height 20 (box :space-evenly false :halign "end" :valign "center" :height 24 (smallSpacer) (network) (space) (bluetooth) (smallSpacer)))) (defwidget energy [] (eventbox :onclick `wlogout -r 25 -c 25 -m 300 &` :class "smallBox" :valign "center" :height 20 (box :space-evenly false :halign "end" :valign "center" :height 20 (smallSpacer) (battery) (space) (power) (smallSpacer)))) (defwidget start [] (box :orientation "h" :space-evenly false :height 30 :halign "start" :valign "center" :spacing 3 (time) (media) (space))) (defwidget center [monitor] (box :class "barbox" :orientation "h" :space-evenly false :spacing 3 :height 30 :halign "center" :valign "center" (space) (workspace :activeOn {workspaces[0].special.activeOn} :occupied {workspaces[0].special.occupied} :id {workspaces[0].special.id} :icon {workspaces[0].special.icon} :monitor {monitor}) (workspace :activeOn {workspaces[1].special.activeOn} :occupied {workspaces[1].special.occupied} :id {workspaces[1].special.id} :icon {workspaces[1].special.icon} :monitor {monitor}) (seperator) (normalWorkspaces :monitor {monitor}) (seperator) (workspace :activeOn {workspaces[2].special.activeOn} :occupied {workspaces[2].special.occupied} :id {workspaces[2].special.id} :icon {workspaces[2].special.icon} :monitor {monitor}) (workspace :activeOn {workspaces[3].special.activeOn} :occupied {workspaces[3].special.occupied} :id {workspaces[3].special.id} :icon {workspaces[3].special.icon} :monitor {monitor}) (space))) (defwidget end [] (box :class "barbox" :spacing 2 :orientation "h" :space-evenly false :height 30 :valign "center" :halign "end" (space) ;; (systray ;; :spacing 2 ;; :orientation "h" ;; :space-evenly true ;; :icon-size 16) ;; ;; (seperator) (processing) (seperator) (controlls) (seperator) (wireless) (seperator) (energy) (space))) (defwidget bar [monitor] (centerbox :orientation "h" (start) (center :monitor {monitor}) (end))) (defwindow bar [monitor width height] :monitor {monitor} :geometry (geometry :x "0%" :y "5px" :width "${width}px" :height "${height}px" :anchor "top center") :stacking "fg" :exclusive true (bar :monitor {monitor}))