185 lines
6.3 KiB
Common Lisp
185 lines
6.3 KiB
Common Lisp
(defvar system_sound_control false)
|
|
(defvar system_sound_mute false)
|
|
|
|
(defpoll volume :interval "3s"
|
|
"wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{print $2 * 100}'")
|
|
|
|
(defwidget system_sound []
|
|
(eventbox
|
|
:cursor "pointer"
|
|
:onhover "${EWW_CMD} update system_sound_control=true"
|
|
:onhoverlost "${EWW_CMD} update system_sound_control=false"
|
|
:tooltip "${ system_sound_mute ? 'Muted' : 'Volume: ${volume}%'}"
|
|
(box
|
|
:space-evenly false
|
|
:orientation "h"
|
|
:class "system-sound"
|
|
(revealer
|
|
:transition "slideleft"
|
|
:reveal system_sound_control
|
|
:duration "250ms"
|
|
(scale
|
|
:class "system-scale"
|
|
:min 0
|
|
:max 151
|
|
:onchange "wpctl set-volume @DEFAULT_AUDIO_SINK@ {}%"
|
|
:value {volume}
|
|
))
|
|
(button
|
|
; since we do not know the initial state, we will just update the variable
|
|
:onclick "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && ${EWW_CMD} update system_sound_mute=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{print $3 ~ /MUTED/ ? \"true\" : \"false\"}')"
|
|
{system_sound_mute ? "" : volume > 75 ? "" : "" })
|
|
)))
|
|
|
|
(defvar system_bright_control false)
|
|
|
|
(defpoll bright :interval "3s" "light")
|
|
|
|
(defwidget system_bright []
|
|
(eventbox
|
|
:cursor "pointer"
|
|
:onhover "${EWW_CMD} update system_bright_control=true"
|
|
:onhoverlost "${EWW_CMD} update system_bright_control=false"
|
|
:tooltip "Brightness: ${round(bright,0)}%"
|
|
(box
|
|
:space-evenly false
|
|
:orientation "h"
|
|
:class "system-bright"
|
|
(revealer
|
|
:transition "slideleft"
|
|
:reveal system_bright_control
|
|
:duration "250ms"
|
|
(scale
|
|
:class "system-scale"
|
|
:min 5
|
|
:max 101
|
|
:onchange "light -S {}"
|
|
:value {bright}
|
|
))
|
|
(button
|
|
:onclick "light -S ${bright < 51 ? 100 : 50}"
|
|
""))))
|
|
|
|
(defwidget system_temp []
|
|
(eventbox
|
|
:cursor "pointer"
|
|
:tooltip {EWW_TEMPS["CORETEMP_PACKAGE_ID_0"] != "" ? "CPU: ${EWW_TEMPS['CORETEMP_PACKAGE_ID_0']} C" : EWW_TEMPS}
|
|
:class "system-temp"
|
|
(button
|
|
"")))
|
|
|
|
(defpoll system_net_ethernet :interval "4s" :initial ""
|
|
"nmcli -f NAME,TYPE con show --active | awk '$NF == \"ethernet\" {NF--; print}'")
|
|
|
|
(defpoll system_net_wifi :interval "4s" :initial ""
|
|
"nmcli -f NAME,TYPE con show --active | awk '$NF == \"wifi\" { NF--; print}'")
|
|
|
|
(defwidget system_net []
|
|
(eventbox
|
|
:cursor "pointer"
|
|
:class "system-net"
|
|
:visible {system_net_ethernet != "" || system_net_wifi != ""}
|
|
:tooltip {EWW_NET}
|
|
(box
|
|
:orientation "h"
|
|
(button
|
|
:visible {system_net_ethernet != ""}
|
|
:tooltip {system_net_ethernet}
|
|
"")
|
|
(button
|
|
:visible {system_net_wifi != ""}
|
|
:tooltip {system_net_wifi}
|
|
:onclick "iwgtk &"
|
|
""))))
|
|
|
|
(defwidget system_info []
|
|
(box
|
|
:orientation "h"
|
|
:space-evenly false
|
|
:spacing 5
|
|
(system_sound)
|
|
(system_bright)
|
|
(system_temp)))
|
|
|
|
(defwidget system_metric [value class tooltip]
|
|
(box
|
|
:orientation "h"
|
|
:space-evenly false
|
|
:class "system-metric-${class}"
|
|
:tooltip "${tooltip}"
|
|
(circular-progress
|
|
:value value
|
|
:start-at 0
|
|
:thickness 4
|
|
(label :text ""))))
|
|
|
|
(defwidget system_metrics []
|
|
(eventbox
|
|
:cursor "pointer"
|
|
:class "system-metrics"
|
|
:tooltip "test"
|
|
:onclick "${EWW_CMD} open --toggle system"
|
|
(box
|
|
:space-evenly false
|
|
(system_metric
|
|
:value {EWW_CPU.avg}
|
|
:tooltip "CPU Usage: ${round(EWW_CPU.avg, 2)}%
|
|
CPU Freq: ${EWW_CPU.cores[0].freq} MHz}"
|
|
:class "cpu")
|
|
(system_metric
|
|
:value {EWW_RAM.used_mem_perc}
|
|
:tooltip "Free Memory: ${round(EWW_RAM.free_mem / 1024 / 1024, 2)} MB
|
|
Available Memory: ${round(EWW_RAM.available_mem / 1024 / 1024, 2)} MB
|
|
Free %: ${round(100 - EWW_RAM.used_mem_perc, 2)}%"
|
|
:class "memory")
|
|
(system_metric
|
|
:value {EWW_BATTERY.total_avg}
|
|
:tooltip "Battery ${round(EWW_BATTERY.total_avg, 0)}%"
|
|
:class "battery")
|
|
(system_metric
|
|
:value {round((1 - (EWW_DISK["/"].free / EWW_DISK["/"].total)) * 100, 0)}
|
|
:tooltip "Free Disk: ${round(EWW_DISK['/'].free / 1024 / 1024 / 1024, 2)} GB
|
|
Free Disk %: ${round(EWW_DISK['/'].free / EWW_DISK['/'].total * 100, 2)}%"
|
|
:class "disk"))))
|
|
|
|
(defvar system_date_reveal false)
|
|
|
|
(defpoll time :interval "1s"
|
|
"date '+%H:%M:%S'")
|
|
|
|
(defpoll date :interval "10m"
|
|
"date '+%b %d'")
|
|
|
|
(defwidget system_time []
|
|
(eventbox
|
|
:onhover "${EWW_CMD} update system_date_reveal=true"
|
|
:onhoverlost "${EWW_CMD} update system_date_reveal=false"
|
|
(box
|
|
:space-evenly false
|
|
:orientation "h"
|
|
:class "system-time"
|
|
(label :class "system-time-time" :text {time})
|
|
(revealer
|
|
:transition "slideright"
|
|
:reveal system_date_reveal
|
|
:duration "250ms"
|
|
(label :class "system-time-date" :text {date})))))
|
|
|
|
(defwidget system_separator [?visible] (box :class "system-separator" :visible {visible == "false" ? false : true}))
|
|
|
|
(defwidget system []
|
|
(box
|
|
:halign "end"
|
|
:class "system"
|
|
:space-evenly false
|
|
:spacing 5
|
|
(system_separator)
|
|
(system_info)
|
|
(system_separator
|
|
:visible "${system_net_ethernet != "" || system_net_wifi != ""}")
|
|
(system_net)
|
|
(system_separator)
|
|
(system_metrics)
|
|
(system_separator)
|
|
(system_time)))
|