(defwindow mainbar :monitor 0 :geometry (geometry :x "0%" :y "0%" :width "100%" :height "30px" :anchor "top center") :stacking "fg" :exclusive false :focusable false (bar)) (defwindow mainbar-ext :monitor 1 :geometry (geometry :x "0%" :y "0%" :width "100%" :height "30px" :anchor "top center") :stacking "fg" :exclusive false :focusable false (bar)) (defvar bat-enabled _BAT_ENABLED_) (defvar bt-enabled _BT_ENABLED_) (defvar wifi-enabled _WIFI_ENABLED_) (defvar bat-extended true) (defvar bluetooth-extended false) (defvar network-extended false) (defvar time-extended false) (defpoll ptime :interval "1s" `date +%H:%M`) (defpoll petimea :interval "1s" :run-while time-extended `date "+%A, %d %B %Y "`) (defpoll petimeb :interval "1s" :run-while time-extended `date "+:%S"`) (defpoll pbat_cap :interval "5s" :run-while bat-enabled `cat /sys/class/power_supply/_BAT_PATH_/capacity`) (defpoll pbat_status :interval "1s" :run-while bat-enabled `cat /sys/class/power_supply/_BAT_PATH_/status`) (defpoll network_strength :interval "1s" :run-while wifi-enabled `nmcli -f IN-USE,SIGNAL device wifi | grep '*' | tr -d -c 0-9`) (defpoll bluetooth_device :interval "1s" :run-while bt-enabled `bluetoothctl devices Connected | grep Device | cut -d" " -f3-`) (deflisten lnetwork :initial "" :run-while wifi-enabled "./scripts/network.sh") (deflisten ltitle :initial "" "./scripts/title.sh") (deflisten lworkspaces :initial "[]" "./scripts/workspaces.sh") (deflisten lcurrent_workspace :initial "1" "./scripts/active-workspace.sh") (defwidget bar [] (eventbox :onscroll "./scripts/scroll.sh {}" (centerbox :orientation "h" :class "bar" (workspaces) (title) (right_bar)))) (defwidget workspaces [] (box :class "widget workspaces" :halign "start" :valign "center" :vexpand true :hexpand true (for workspace in lworkspaces (eventbox :cursor "hand" (button :class "${workspace.id == lcurrent_workspace ? "focused" : (workspace.windows > 0 ? "occupied" : "empty")}" :onclick "hyprctl dispatch workspace ${workspace.id}" "${workspace.id == lcurrent_workspace ? "" : (workspace.windows > 0 ? "" : "")}"))))) (defwidget title [] (literal :content ltitle)) (defwidget time_extension [text] (revealer :transition "slideleft" :reveal time-extended :duration 150 (label :text text :class "extension"))) (defwidget right_bar [] (box :orientation "horizontal" :space-evenly false :halign "end" (box :visible {bt-enabled} (bluetooth)) (box :visible {wifi-enabled} (network)) (box :visible {bat-enabled} (battery)) (time))) (defwidget bluetooth [] (button :onclick `eww update bluetooth-extended=${bluetooth-extended ? "false" : "true"}` (box :orientation "horizontal" :class {"widget pill" + ((bluetooth-extended && bluetooth_device != "") ? " extended" : "")} :spacing {(bluetooth-extended && bluetooth_device != "") ? 5 : 0} :space-evenly false (label :text { bluetooth_device == "" ? "" : ""} :class "base pill-icon") (revealer :transition "slideleft" :reveal {bluetooth-extended && bluetooth_device != ""} :duration 150 (label :text bluetooth_device :class "base"))))) (defwidget network [] (button :onclick `eww update network-extended=${network-extended ? "false" : "true"}` (box :orientation "horizontal" :class {"widget pill" + ((network-extended && lnetwork != "Disconnected") ? " extended" : "")} :spacing {(network-extended && lnetwork != "Disconnected") ? 5 : 0} :space-evenly false (label :text { (lnetwork == "Disconnected") ? "" : (network_strength == "") ? "" : (network_strength < 20) ? "" : (network_strength < 30) ? "" : (network_strength < 55) ? "" : (network_strength < 80) ? "" : ""} :class "base pill-icon") (revealer :transition "slideleft" :reveal {network-extended && lnetwork != "Disconnected"} :duration 150 (label :text lnetwork :class "base"))))) (defwidget battery [] (button :onclick `eww update bat-extended=${bat-extended ? "false" : "true"}` (box :orientation "horizontal" :class {"widget pill" + (bat-extended ? " extended" : "")} :spacing {bat-extended ? 3 : 0} :space-evenly false (label :text { (pbat_status == "Charging" || pbat_status == "Full") ? ( (pbat_cap < 20) ? "" : (pbat_cap < 50) ? "" : (pbat_cap < 100) ? "" : "" ) : (pbat_cap < 10) ? "" : (pbat_cap < 20) ? "" : (pbat_cap < 50) ? "" : (pbat_cap < 80) ? "" : ""} :class "base pill-icon") (revealer :transition "slideleft" :reveal bat-extended :duration 150 (label :text {pbat_cap + "%"} :class "base"))))) (defwidget time [] (button :onclick `eww update time-extended=${time-extended ? "false" : "true"}` (box :orientation "horizontal" :space-evenly false :hexpand true :class "widget time" (time_extension :text petimea) (label :text ptime :class "base") (time_extension :text petimeb))))