2025-02-04 14:27:15 -05:00

118 lines
3.2 KiB
Plaintext

(defwindow statusbar
:monitor 0
:stacking "fg"
:exclusive true
:geometry (geometry
:y "0.5%"
:width "100%"
:height "24px"
:anchor "top center")
(statusbar))
(defwidget statusbar []
(centerbox
(brightness-ctl)
; (window-title)
(time)
(box :space-evenly false :halign 'end' :class 'padded'
(clipboard)
(battery)
(bluetooth)
(wifi))
)
)
(defwidget cmd-slider [?symbol value command max colour]
(box :space-evenly false
(label :text symbol :class "symbol")
(scale
:min 0 :max max
:value value
:round-digits 0
:timeout "200ms"
:onchange command)
(label :text "${value}%" :class colour)))
(defwidget window-title []
(label
:text windowtitle
:tooltip windowtitle))
(defpoll windowtitle :interval "1s" `scripts/currentWindow.fish`)
(defpoll currentworkspace :interval "1s" `scripts/currentWorkspace.fish`)
(defwidget brightness-ctl []
(cmd-slider :symbol "󰃠" :value brightness
:command `brightnessctl set {}%`
:max 101 :colour "${
brightness >= 80 ? "green" :
brightness >= 50 ? "yellow" :
brightness >= 30 ? "peach" :
brightness >= 10 ? "maroon" : "red"
}"))
(defpoll brightness :interval "1s" `brightnessctl -m | awk -F, '{print $4+0}'`)
(defwidget clipboard []
(label :text clipboard-short :tooltip clipboard :class "clipboard"))
(defpoll clipboard :interval "5s" `scripts/clipboardInfo.zsh all`)
(defpoll clipboard-short :interval "5s" `scripts/clipboardInfo.zsh head`)
(defwidget wifi []
(eventbox
:class "button ${wifi-strength.colour}"
(label
:text {wifi-strength.icon}
:tooltip "Connected To: ${wifi-name}")))
(defpoll wifi-strength :interval "10s" `scripts/wifiInfo.zsh strength`)
(defpoll wifi-name :interval "1m" `scripts/wifiInfo.zsh name`)
(defwidget bluetooth []
(eventbox
:class "bluetooth button ${ bluetooth-name != "" ? "green" : "lavendar" }"
:onclick `blueman-manager &`
(label
:text "${bluetooth-name} 󰂯")))
(defpoll bluetooth-name :interval "10s" `bluetoothctl devices Connected | awk '{print $3}'`)
(defwidget time []
(box
:space-evenly false
:class "time"
:tooltip {time.long}
(label :class "yellow" :text {time.hour})
(label :text ":")
(label :class "yellow" :text {time.minute})))
(defpoll time :interval "1s" `scripts/dateInfo.fish`)
; TODO: make this a package or something, not using rust-script
(defpoll powerstats :interval "2s" `~/Documents/power_bat.rs`)
(defwidget battery []
(box :space-evenly false
:tooltip powerstats
(label
:text "${EWW_BATTERY.BAT1.status == "Charging" ? "󰂄" :
EWW_BATTERY.BAT1.capacity >= 90 ? "󰁹" :
EWW_BATTERY.BAT1.capacity >= 80 ? "󰂂" :
EWW_BATTERY.BAT1.capacity >= 70 ? "󰂁" :
EWW_BATTERY.BAT1.capacity >= 60 ? "󰂀" :
EWW_BATTERY.BAT1.capacity >= 50 ? "󰁿" :
EWW_BATTERY.BAT1.capacity >= 40 ? "󰁾" :
EWW_BATTERY.BAT1.capacity >= 30 ? "󰁽" :
EWW_BATTERY.BAT1.capacity >= 20 ? "󰁼" :
EWW_BATTERY.BAT1.capacity >= 10 ? "󰁻" : "󰁺"
} "
:class "${
EWW_BATTERY.BAT1.capacity >= 80 ? "green" :
EWW_BATTERY.BAT1.capacity >= 50 ? "yellow" :
EWW_BATTERY.BAT1.capacity >= 30 ? "peach" :
EWW_BATTERY.BAT1.capacity >= 10 ? "maroon" : "red"
}")
(label :text "${EWW_BATTERY.BAT1.capacity}%" :class "yellow")))