dotfiles/eww/eww.yuck

258 lines
9 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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))