desktop-utils/eww.yuck
2024-03-13 19:01:27 +01:00

304 lines
No EOL
7.6 KiB
Text

;;Input values
(defvar image '["kitty.svg","firefox.svg","sublime.svg","kitty.svg","","","","","","webcord.svg"]')
(deflisten brightnessValue
:initial "0"
`scripts/brightness.sh`)
(defpoll network
:initial '{"name":"No Connection","image":"n.A."}'
:interval "2s"
`scripts/network.sh &`)
(deflisten workspaces
:initial '[{"ID":"1","occupied":"0","activeID":""},{"ID":"2","occupied":"0","activeID":""},{"ID":"3","occupied":"0","activeID":""},{"ID":"4","occupied":"0","activeID":""},{"ID":"5","occupied":"0","activeID":""},{"ID":"6","occupied":"0","activeID":""},{"ID":"7","occupied":"0","activeID":""},{"ID":"8","occupied":"0","activeID":""},{"ID":"9","occupied":"0","activeID":""},{"ID":"10","occupied":"0","activeID":""}]'
`scripts/clients.sh`)
(defpoll bluetooth
:initial '{"name":"","battery":"0"}'
:interval "2s"
`scripts/bluetooth.sh`)
(deflisten volume
:initial '{"volume":"0","muted":"0"}'
`scripts/volume.sh`)
(defpoll media
:initial '{"status":"","name":""}'
:interval "2s"
`scripts/media.sh`)
;; Widget templates
(defwidget imageDPI [image size visible]
(overlay
:width "${size}"
:height "${size}"
:visible "${visible}"
(box
:width "${size}"
:height "${size}")
(transform
:scale-x "50%"
:scale-y "50%"
:halign "center"
:valign "center"
:translate-x "${size}"
:translate-y "${size}"
(image
:path "${image}"
:image-width "${size * 2}"
:image-height "${size * 2}"))))
(defwidget icon [widgetclass ?hover percentage image]
(box
:class "${widgetclass}"
:space-evenly false
(overlay
:tooltip "${hover}"
(circular-progress
:width 18
:value "${percentage}"
:start-at 75
:thickness 2
:clockwise false)
(transform
:scale-x "50%"
:scale-y "50%"
:halign "center"
:valign "center"
:translate-x "16"
:translate-y "16"
(image
:path "${image}"
:image-width "32"
:image-height "32")))))
;; Widgets
(defwidget workspaces []
(box
(for workspace in workspaces
(eventbox
:onclick `/home/willifan/.config/scripts/workspaces.sh ${workspace.num}`
(label
:width "15"
:class {workspace.active == 1 ? "activeWorkspace" : workspace.occupied == 0 ? "unoccupiedWorkspace" : ""}
;;:visible {workspace.occupied == 1 ? "true" : "false"}
:text "${workspace.num}")))))
(defwidget time []
(eventbox
:onclick ``
:class "smallBox"
:valign "center"
:height 20
:width 70
(label
:text "${formattime(EWW_TIME, "%H:%M:%S")}")))
(defwidget cpu []
(icon
:widgetclass "cpu"
:hover "${round(EWW_CPU.avg, 1)}%"
:percentage "${round(EWW_CPU.avg, 1)}"
:image "images/cpu.png"))
(defwidget ram []
(icon
:widgetclass "ram"
:hover "${round(EWW_RAM.used_mem /(1024*1024*1024), 1)} GiB | ${round(EWW_RAM.used_mem_perc, 1)}%"
:percentage "${round(EWW_RAM.used_mem_perc, 1)}"
:image "images/ram.png"))
(defwidget audio []
(icon
:widgetclass "${volume.muted == 1 ? "muted" : "volume"}"
:hover "${volume.volume}%"
:percentage "${volume.volume >= 0 && volume.volume <= 100 ? volume.volume : 0}"
:image "${volume.muted == 1 ? "images/volumeMuted.png" : "images/volume.png"}"))
(defwidget brightness []
(icon
:widgetclass "brightness"
:hover "${brightnessValue / 960}%"
:percentage "${brightnessValue / 960}"
:image "images/brightness.png"))
(defwidget network []
(icon
:widgetclass "network"
:hover "${network.name}"
:percentage "100"
:image "images/${network.image}.png"))
(defwidget bluetooth []
(icon
:widgetclass "bluetooth"
:hover "${bluetooth.name}"
:percentage "${bluetooth.battery}"
:image "images/bluetooth.png"))
(defwidget battery []
(icon
:widgetclass {EWW_BATTERY.BAT1.status == "Charging" ? "battery" : EWW_BATTERY.total_avg > 25 ? "battery" : "batteryLow"}
:hover "${round(EWW_BATTERY.total_avg, 1)}%"
:percentage "${EWW_BATTERY.total_avg <= 90 ? round(EWW_BATTERY.total_avg, 1)/0.9 : 100}"
:image {EWW_BATTERY.BAT1.status == "Charging" ? "images/charging.png" : EWW_BATTERY.total_avg > 25 ? "images/battery.png" : "images/batteryLow.png"}))
(defwidget power []
(icon
:widgetclass "power"
:hover "placeholder"
:percentage "0"
:image "images/power.png"))
(defwidget smallSpacer []
(box
:width 2))
(defwidget space []
(box
:width 5))
(defwidget seperator []
(box
(label
:text "|"
)))
;; Widget blocks
(defwidget media []
(box
:class "smallBox"
:height 20
:valign "center"
:space-evenly false
:visible {media.status == "Playing" ? true : false}
(smallSpacer)
(label
:text "${media.name}"
:tooltip "${media.name}"
:limit-width 40)
(smallSpacer)))
(defwidget processing []
(eventbox
:onclick 'hyprctl dispatch exec "[float; pin; size 40% 40%; move 100%-41% 40] kitty bpytop -b proc"'
:class "smallBox"
(box
:space-evenly false
:halign "end"
:valign "center"
:height 20
(smallSpacer)
(cpu)
(space)
(ram)
(smallSpacer))))
(defwidget controlls []
(eventbox
:onclick 'hyprctl dispatch exec "[float; pin; size 40% 40%; move 100%-41% 40] kitty pulsemixer"'
:class "smallBox"
(box
:space-evenly false
:halign "end"
:valign "center"
:height 20
(smallSpacer)
(audio)
(space)
(brightness)
(smallSpacer))))
(defwidget wireless []
(eventbox
:onclick "`networkmanager_dmenu`"
:class "smallBox"
(box
:space-evenly false
:halign "end"
:valign "center"
:height 20
(smallSpacer)
(network)
(space)
(bluetooth)
(smallSpacer))))
(defwidget energy []
(eventbox
:onclick `sleep 1 && systemctl hibernate`
:class "smallBox"
(box
:space-evenly false
:halign "end"
:valign "center"
:height 20
(smallSpacer)
(battery)
(space)
(power)
(smallSpacer))))
(defwidget start []
(box
:orientation "h"
:space-evenly false
:halign "start"
(space)
(workspaces)))
(defwidget center []
(box
:orientation "h"
:space-evenly false
:halign "center"
(workspaces)
))
(defwidget end []
(box
:spacing 2
:orientation "h"
:space-evenly false
:valign "center"
:halign "end"
(processing)
(seperator)
(controlls)
(seperator)
(wireless)
(seperator)
(energy)
(space)))
(defwidget bar []
(centerbox :orientation "h"
(start)
(center)
(end)))
;; Window definition
(include "newbar.yuck")