(defwindow powermenu :monitor 0 :stacking "fg" :windowtype "normal" :wm-ignore true :geometry (geometry :width "100%" :height "100%") (powermenu_layout)) (defpoll time :interval "5s" :initial `date +'{"hour":"%H","min":"%M"}'` `date +'{"hour":"%H","min":"%M"}'`) (defpoll net :interval "100s" :initial `N/A` `nmcli -t -f SIGNAL,ACTIVE device wifi \ | awk -F':' '{if($2=="yes")print$1}'`) (defpoll eth :interval "100s" :initial `N/A` `nmcli -t -f TYPE,STATE device status \ | awk -F':' '{if($2=="connected")print$1}'`) (defwidget powermenu_layout [] (box :class "layout-box" :space-evenly false :orientation "vertical" :style "background-image: url('./powermenu/wallpaper')" (box :valign "start" :space-evenly false :spacing 25 (_sundial) (_battery :status {EWW_BATTERY.BAT0.status} :battery {EWW_BATTERY.BAT0.capacity}) (_network :strength net :offline "󰤭 " :excellent "󰤨 " :good "󰤥 " :okay "󰤢 " :slow "󰤟 ") (_network_ethernet :name eth) (label :text "|" :class "sep") (button :onclick "eww close powermenu" :class "close-btn" "")) (box :space-evenly false :hexpand true :vexpand true (box :spacing 15 :class "tm-box" :space-evenly false :valign "end" :halign "start" (label :text "󰥔 ") (label :text "${time.hour} ${time.min}")) (_buttons :shutdown "poweroff" :reboot "reboot" :logout "loginctl kill-session self" :shutdown_icon "󰐥 " :reboot_icon "󰤁 " :logout_icon "󰍃 ")))) (defwidget _battery [battery status] (box :class "bat-box" :space-evenly false :spacing 8 (label :text { status == 'Charging' ? "󰂄" : battery < 10 ? "󰁺" : battery < 20 ? "󰁻" : battery < 30 ? "󰁼" : battery < 40 ? "󰁽" : battery < 50 ? "󰁾" : battery < 60 ? "󰁿" : battery < 70 ? "󰂀" : battery < 80 ? "󰂁" : battery < 90 ? "󰂂" : "󰁹"}))) (defwidget _network [strength offline excellent good okay slow] (box :class "net-box" :space-evenly false :spacing 8 (label :text {strength == "" ? offline : strength < 26 ? slow : strength < 51 ? okay : strength < 76 ? good : excellent}))) (defwidget _network_ethernet [name] (box :class "net-box" :space-evenly false :spacing 8 (label :text {name == "ethernet" ? "󰈁 " : "󰈂 "}))) (defwidget _buttons [shutdown shutdown_icon reboot reboot_icon logout logout_icon] (box :class "btns-box" :spacing 5 :vexpand true :hexpand true :valign "end" :halign "end" :space-evenly false (button :onclick shutdown shutdown_icon) (button :onclick reboot reboot_icon) (button :onclick logout logout_icon))) (defwidget _sundial [] (label :class "sundial-lbl" :halign "end" :hexpand true :text {time.hour >= 2 && time.hour <= 4 ? "Early Morning" : time.hour <= 5 ? "Dawn" : time.hour >= 6 && (time.hour <= 8 && time.min <= 59) ? "Morning" : time.hour >= 9 && (time.hour <= 11 && time.min <= 59) ? "Late Morning" : time.hour == 12 && time.min <= 29 ? "Midday" : time.hour >= 12 && time.hour <= 16 ? "Afternoon" : time.hour > 16 && time.hour <= 17 ? "Late Afternoon" : (time.hour >= 17 && time.min <= 1) || (time.hour <= 18 && time.min <= 20) ? "Early Evening" : time.hour >= 18 && time.hour <= 19 ? "Dusk" : time.hour > 19 && time.hour <= 21 ? "Late Evening" : time.hour > 21 ? "Night" : "Midnight"})) ;; vim:ft=yuck