2024-01-17 15:33:46 +07:00
|
|
|
(defwindow mainbar :monitor 0
|
|
|
|
|
:geometry (geometry :x "0%"
|
|
|
|
|
:y "0%"
|
|
|
|
|
:width "100%"
|
|
|
|
|
:height "30px"
|
|
|
|
|
:anchor "top center")
|
|
|
|
|
:stacking "fg"
|
|
|
|
|
:exclusive false
|
|
|
|
|
:focusable false
|
|
|
|
|
(bar))
|
|
|
|
|
|
2025-01-12 13:07:16 +11:00
|
|
|
(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))
|
|
|
|
|
|
2025-03-23 12:36:07 +11:00
|
|
|
(defvar bat-enabled _BAT_ENABLED_)
|
|
|
|
|
(defvar bt-enabled _BT_ENABLED_)
|
|
|
|
|
(defvar wifi-enabled _WIFI_ENABLED_)
|
2025-03-13 22:56:26 +11:00
|
|
|
|
2025-03-17 15:30:26 +11:00
|
|
|
(defvar bat-extended true)
|
2025-03-15 22:37:47 +11:00
|
|
|
(defvar bluetooth-extended false)
|
|
|
|
|
(defvar network-extended false)
|
2025-03-13 22:56:26 +11:00
|
|
|
(defvar time-extended false)
|
2025-03-23 12:36:07 +11:00
|
|
|
|
2025-03-13 22:56:26 +11:00
|
|
|
(defpoll ptime :interval "1s"
|
2024-01-17 15:33:46 +07:00
|
|
|
`date +%H:%M`)
|
2025-03-13 22:56:26 +11:00
|
|
|
(defpoll petimea :interval "1s" :run-while time-extended
|
2024-01-17 15:33:46 +07:00
|
|
|
`date "+%A, %d %B %Y "`)
|
2025-03-13 22:56:26 +11:00
|
|
|
(defpoll petimeb :interval "1s" :run-while time-extended
|
2024-01-17 15:33:46 +07:00
|
|
|
`date "+:%S"`)
|
2025-03-23 12:36:07 +11:00
|
|
|
(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
|
2025-03-15 22:37:47 +11:00
|
|
|
`nmcli -f IN-USE,SIGNAL device wifi | grep '*' | tr -d -c 0-9`)
|
2025-03-23 12:36:07 +11:00
|
|
|
(defpoll bluetooth_device :interval "1s" :run-while bt-enabled
|
2025-03-15 22:37:47 +11:00
|
|
|
`bluetoothctl devices Connected | grep Device | cut -d" " -f3-`)
|
2024-01-17 15:33:46 +07:00
|
|
|
|
2025-03-23 12:36:07 +11:00
|
|
|
(deflisten lnetwork :initial "" :run-while wifi-enabled "./scripts/network.sh")
|
2024-01-27 13:52:10 +07:00
|
|
|
(deflisten ltitle :initial "" "./scripts/title.sh")
|
2024-01-17 15:33:46 +07:00
|
|
|
(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)
|
2025-03-15 22:37:47 +11:00
|
|
|
(right_bar))))
|
2024-01-17 15:33:46 +07:00
|
|
|
|
|
|
|
|
(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]
|
2025-03-15 22:37:47 +11:00
|
|
|
(revealer :transition "slideleft"
|
|
|
|
|
:reveal time-extended
|
|
|
|
|
:duration 150
|
|
|
|
|
(label :text text
|
|
|
|
|
:class "extension")))
|
|
|
|
|
|
|
|
|
|
(defwidget right_bar []
|
|
|
|
|
(box :orientation "horizontal"
|
|
|
|
|
:space-evenly false
|
|
|
|
|
:halign "end"
|
2025-03-23 12:36:07 +11:00
|
|
|
(box :visible {bt-enabled} (bluetooth))
|
|
|
|
|
(box :visible {wifi-enabled} (network))
|
|
|
|
|
(box :visible {bat-enabled} (battery))
|
2025-03-15 22:37:47 +11:00
|
|
|
(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") ? ""
|
2025-03-18 18:59:47 +11:00
|
|
|
: (network_strength == "") ? ""
|
2025-03-15 22:37:47 +11:00
|
|
|
: (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")))))
|
|
|
|
|
|
2024-01-17 15:33:46 +07:00
|
|
|
|
|
|
|
|
(defwidget time []
|
2025-03-13 22:56:26 +11:00
|
|
|
(button :onclick `eww update time-extended=${time-extended ? "false" : "true"}`
|
|
|
|
|
(box :orientation "horizontal"
|
|
|
|
|
:space-evenly false
|
2025-03-15 22:37:47 +11:00
|
|
|
:hexpand true
|
2025-03-13 22:56:26 +11:00
|
|
|
:class "widget time"
|
2025-03-15 22:37:47 +11:00
|
|
|
(time_extension :text petimea)
|
2025-03-13 22:56:26 +11:00
|
|
|
(label :text ptime
|
|
|
|
|
:class "base")
|
2025-03-15 22:37:47 +11:00
|
|
|
(time_extension :text petimeb))))
|
2025-03-13 22:56:26 +11:00
|
|
|
|