flakes/res/eww-wayland/eww.yuck

157 lines
5.5 KiB
Text

(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-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"
`cat /sys/class/power_supply/BATT/capacity`)
(defpoll pbat_status :interval "1s"
`cat /sys/class/power_supply/BATT/status`)
(defpoll network_strength :interval "1s"
`nmcli -f IN-USE,SIGNAL device wifi | grep '*' | tr -d -c 0-9`)
(defpoll bluetooth_device :interval "1s"
`bluetoothctl devices Connected | grep Device | cut -d" " -f3-`)
(deflisten lnetwork :initial "" "./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"
(bluetooth)
(network)
(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))))