258 lines
9 KiB
Text
258 lines
9 KiB
Text
(defwidget label_circle [text value]
|
||
(box :class "label_circle" :space-evenly false
|
||
(circular-progress :value {value} :clockwise true :start-at 25 :thickness 3 :class "value"
|
||
(label :text text :class "label" :justify "center"))))
|
||
|
||
|
||
(defwidget label_value [text value ?text_class ?value_class]
|
||
(box :class "label_value" :space-evenly false
|
||
(label :text text :class "label ${text_class}")
|
||
(label :text value :class "value ${value_class}")))
|
||
|
||
|
||
(defwidget sep [?class]
|
||
(label :text "|" :class "sep ${class}"))
|
||
(defwidget space []
|
||
(label :text " " :class "space"))
|
||
|
||
|
||
(deflisten workspaces :initial "[]" "~/.config/eww/scripts/get-workspaces")
|
||
(defwidget workspaces [monitor ?all]
|
||
(box :space-evenly false :class "workspaces"
|
||
(for workspace in workspaces
|
||
(eventbox :onclick "hyprctl dispatch workspace ${workspace.id}" :visible {(all ?: false) || (workspace.monitor == monitor)} :class "${workspace.active ? "current" : ""} ${workspace.first ? "first" : ""}" :cursor "pointer"
|
||
(label :text {workspace.name})))))
|
||
|
||
|
||
(deflisten window :initial "..." "~/.config/eww/scripts/get-window-title")
|
||
(defwidget window []
|
||
(box
|
||
(label :text {window ?: ""})))
|
||
|
||
(deflisten audio :initial "--" "~/.config/eww/scripts/get-audio")
|
||
(defwidget volume []
|
||
(eventbox :cursor {audio.muted ? "pointer" : "row-resize"} :onscroll "~/.config/eww/scripts/adjust-volume {}" :onclick "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||
(label_value :text {audio.muted ? "" : ""} :value "${audio.volume}%" :value_class {audio.muted ? "muted" : ""})))
|
||
(defwidget audio_source []
|
||
(eventbox :onclick "~/.config/eww/scripts/swap-audio-source" :cursor "pointer"
|
||
(label :text {audio.source} :class "audio-info")))
|
||
(defwidget audio_sink []
|
||
(eventbox :onclick "~/.config/eww/scripts/swap-audio-sink" :cursor "pointer"
|
||
(label :text {audio.sink} :class "audio-info")))
|
||
|
||
|
||
(defwidget mountpoint [label mount]
|
||
(label_circle :text label :value {EWW_DISK[mount].used_perc}))
|
||
|
||
|
||
(defwidget ram []
|
||
(label_circle :text "" :value {EWW_RAM.used_mem_perc}))
|
||
|
||
|
||
(defwidget cpu []
|
||
(label_circle :text "" :value {EWW_CPU.avg}))
|
||
|
||
(defvar combined_interface true)
|
||
(deflisten interfaces :initial '{}' "~/.config/eww/scripts/network-statistics-shell 5")
|
||
(defwidget network_speed [label interface]
|
||
(eventbox :onclick "${EWW_CMD} update combined_interface=${!combined_interface}" :cursor {interfaces?.[interface]?.up ? "pointer" : ""}
|
||
(tooltip
|
||
(graph :value {interfaces?.[interface]?.combined_raw ?: 0} :thickness 2 :time-range 60000 :dynamic true :line-style "round" :width 60 :height 20)
|
||
(label_value :text label :value {(interfaces?.[interface]?.up ?: false) ? (combined_interface ? interfaces?.[interface]?.combined : "${interfaces?.[interface]?.rx} ${interfaces?.[interface]?.tx}") : "dc"} :value_class {(interfaces?.[interface]?.up ?: false) ? "" : "disabled"}))))
|
||
(defwidget eth []
|
||
(network_speed :label "" :interface "enp6s0"))
|
||
(defwidget wlan []
|
||
(network_speed :label ""
|
||
{% if host.name == "chonk" %}
|
||
:interface "wlo1"
|
||
{% else %}
|
||
:interface "wlp1s0"
|
||
{% endif %}
|
||
))
|
||
|
||
(defwidget date []
|
||
(tooltip
|
||
(box :orientation "vertical" :space-evenly false
|
||
(label :text {formattime(EWW_TIME, "%A, %B %-d")})
|
||
(calendar :show-heading false :show-day-names false))
|
||
(label :text "${formattime(EWW_TIME, "%Y-%m-%d")}" :class "label-date")))
|
||
(defwidget time [?highlighted]
|
||
(label :text "${formattime(EWW_TIME, "%H:%M:%S")}" :class {(highlighted ?: true) ? "label-time" : ""} :tooltip {formattime(EWW_TIME, "%-I:%M %p")}))
|
||
(defwidget datetime []
|
||
(box :space-evenly false
|
||
(date)
|
||
(label :text "/" :class "disabled")
|
||
(time)))
|
||
|
||
|
||
(defvar reveal_power false)
|
||
(defwidget power []
|
||
(box :space-evenly false :class "power"
|
||
(revealer :transition "slideleft" :reveal reveal_power
|
||
(box :space-evenly true :spacing 2
|
||
(eventbox :onclick "loginctl lock-session" :cursor "pointer"
|
||
(label :text "" :class "lock"))
|
||
(eventbox :onclick "systemctl suspend" :cursor "pointer"
|
||
(label :text "鈴" :class "sleep"))
|
||
;(eventbox :onclick "systemctl hibernate" :cursor "pointer"
|
||
;(label :text "" :class "hibernate"))
|
||
(eventbox :onclick "reboot" :cursor "pointer"
|
||
(label :text "ﰇ" :class "reboot"))
|
||
(eventbox :onclick "shutdown now" :cursor "pointer"
|
||
(label :text "" :class "shutdown"))))
|
||
(eventbox :onclick "${EWW_CMD} update reveal_power=${!reveal_power}" :cursor "pointer"
|
||
(stack :selected {reveal_power ? 1 : 0} :transition "crossfade" :same-size true
|
||
(label :text "" :class "control")
|
||
(label :text "×" :class "control")))))
|
||
|
||
|
||
(defvar notifications true)
|
||
(defwidget notifications []
|
||
(eventbox :onclick "${EWW_CMD} update notifications=${!notifications} ; dunstctl set-paused ${notifications}" :cursor "pointer"
|
||
(stack :selected {notifications ? 0 : 1} :transition "crossfade" :same-size true
|
||
(label :text "" :class "primary")
|
||
(label :text "" :class "primary"))))
|
||
|
||
|
||
(defwidget clicker [text command]
|
||
(eventbox :onclick command :cursor "pointer" :timeout "3600s"
|
||
(label :text text :class "primary")))
|
||
;(defwidget colour_selector []
|
||
;(clicker :text "" :command "uwsm-app -- hyprpicker -a"))
|
||
(defwidget wallpaper []
|
||
(clicker :text "" :command "~/scripts/swww_change.py"))
|
||
(defwidget sunset []
|
||
(clicker :text "" :command "~/scripts/sunset.py"))
|
||
|
||
|
||
(defpoll brightness :interval 60 "~/.config/eww/scripts/backlight get")
|
||
(defwidget brightness []
|
||
(eventbox :onscroll "~/.config/eww/scripts/backlight {}" :cursor "row-resize"
|
||
(label_value :text "" :value "${brightness}%")))
|
||
|
||
|
||
(defpoll battery :interval 30 "~/.config/eww/scripts/get-battery")
|
||
(defwidget battery []
|
||
(label_value :text {battery.charging ? "" : battery.icon} :value "${battery.charge}%" :value_class {battery.charge < 30 ? "alert" : ""}))
|
||
|
||
|
||
(defpoll weather :interval 300 "~/scripts/get-weather.sh")
|
||
(defpoll weather_icons :interval 0 :run-while false "cat ~/.config/eww/scripts/weather-icons.json")
|
||
(defwidget weather []
|
||
(tooltip
|
||
(label :text "${round(weather.current.feels_like, 0)}°C")
|
||
(label_value :text {weather_icons[weather.current.weather[0].icon]} :value "${round(weather.current.temp, 0)}°C")))
|
||
|
||
|
||
(defpoll gametime :interval 10 "~/scripts/gametime.sh status")
|
||
(defwidget gametime []
|
||
(eventbox :onclick "~/scripts/gametime.sh toggle" :cursor "pointer"
|
||
(label :text {gametime ? "" : ""} :class "primary")))
|
||
|
||
|
||
(defwidget left_bar []
|
||
(centerbox :class "bar" :orientation "h"
|
||
(box :class "left" :orientation "h" :space-evenly false :halign "begin"
|
||
(workspaces :monitor "DP-2")(sep :class "no-left-pad")
|
||
(window))
|
||
(box)
|
||
(box :class "right" :orientation "h" :space-evenly false :halign "end"
|
||
(volume)(sep)
|
||
(audio_source)(space)
|
||
(audio_sink))))
|
||
(defwidget right_bar []
|
||
(centerbox :class "bar" :orientation "h"
|
||
(box :class "left" :orientation "h" :space-evenly false :halign "begin"
|
||
(workspaces :monitor "DP-1"))
|
||
(systray :pack_direction "ltr" :icon-size 20)
|
||
(box :class "right" :orientation "h" :space-evenly false :halign "end"
|
||
(gametime)(space)
|
||
;(colour_selector)(space)
|
||
(sunset)(space)
|
||
(wallpaper)(sep)
|
||
(mountpoint :label "/" :mount "/")(space)
|
||
(mountpoint :label "" :mount "/home/mbradley/hdd")(sep)
|
||
(ram)(space)
|
||
(cpu)(sep)
|
||
(eth)(sep)
|
||
(datetime)(sep)
|
||
(power))))
|
||
|
||
(defwidget laptop_bar []
|
||
(centerbox :class "bar" :orientation "h"
|
||
(box :class "left" :orientation "h" :space-evenly false :halign "begin"
|
||
(workspaces :monitor "eDP-1" :all true)(sep)
|
||
(window))
|
||
(systray :pack_direction "ltr" :icon-size 20)
|
||
(box :class "right" :orientation "h" :space-evenly false :halign "end"
|
||
(weather)(sep)
|
||
;(colour_selector)(space)
|
||
(sunset)(space)
|
||
(wallpaper)(sep)
|
||
(ram)(space)
|
||
(cpu)(sep)
|
||
(wlan)(space)
|
||
(battery)(sep)
|
||
(brightness)(space)
|
||
(volume)(sep)
|
||
(datetime)(sep)
|
||
(power))))
|
||
|
||
|
||
(defwindow left
|
||
:monitor 1
|
||
:geometry (geometry
|
||
:x "0px"
|
||
:y "4px"
|
||
:width "1912px"
|
||
:height "24px"
|
||
:anchor "top center")
|
||
:stacking "bg"
|
||
:exclusive true
|
||
:focusable false
|
||
(left_bar))
|
||
(defwindow right
|
||
:monitor 0
|
||
:geometry (geometry :x "0px"
|
||
:y "4px"
|
||
:width "1912px"
|
||
:height "24px"
|
||
:anchor "top center")
|
||
:stacking "fg"
|
||
:exclusive true
|
||
:focusable false
|
||
(right_bar))
|
||
|
||
(defwindow laptop
|
||
:monitor 0
|
||
:geometry (geometry :x "0px"
|
||
:y "4px"
|
||
:width "1912px"
|
||
:height "24px"
|
||
:anchor "top center")
|
||
:stacking "fg"
|
||
:exclusive true
|
||
:focusable false
|
||
(laptop_bar))
|
||
(defwindow laptop_left
|
||
:monitor 1
|
||
:geometry (geometry :x "0px"
|
||
:y "4px"
|
||
:width "2552px"
|
||
:height "24px"
|
||
:anchor "top center")
|
||
:stacking "fg"
|
||
:exclusive true
|
||
:focusable false
|
||
(laptop_bar))
|
||
(defwindow laptop_right
|
||
:monitor 2
|
||
:geometry (geometry :x "0px"
|
||
:y "4px"
|
||
:width "1912px"
|
||
:height "24px"
|
||
:anchor "top center")
|
||
:stacking "fg"
|
||
:exclusive true
|
||
:focusable false
|
||
(laptop_bar))
|