making eww work

This commit is contained in:
Chris Cochrun 2022-12-06 15:19:09 -06:00
parent 6cdfe3e563
commit 651153719b
2 changed files with 360 additions and 0 deletions

62
eww/notifications.yuck Normal file
View file

@ -0,0 +1,62 @@
(defwindow notifications
:geometry (geometry :x "0px"
:y "0px"
:width "1px"
:height "93%"
:anchor "bottom right")
:stacking "fg"
:monitor "0"
(notif-panel))
(defwidget notif-panel []
(eventbox
:halign "start"
:onhoverlost "${EWW_CMD} update rightside=false"
(revealer
:transition "slideleft"
:reveal rightside
:duration "550ms"
(rightside))))
(defvar rightside false)
(defwidget rightside []
(box
:class "side"
:orientation "v"
:space-evenly "false"
:spacing "10"
:halign "center"
(box
:class "notification-header"
:orientation "h"
:space-evenly "false"
(label
:class "notification-label"
:halign "start"
:text "Notifications")
(box
:orientation "h"
:space-evenly "false"
:halign "end"
(button
:class "notification-action"
:tooltip "Refresh"
:onclick "dunstctl history > /tmp/dunst-history.json" "")
(button
:class "notification-action"
:tooltip "Pause/Resume Notifications"
:onclick "dunstctl set-paused toggle" "")
(button
:class "notification-action"
:tooltip "Dismiss All"
:onclick "pkill dunst && hyprctl dispatch exec dunst && dunstctl history > /tmp/dunst-history.json" "")))
(scroll
:vscroll "true"
:hscroll "false"
:height 840
:width 200
(literal
:content notifications)
)))
(deflisten notifications "scripts/notifications")

298
eww/sidebar.yuck Normal file
View file

@ -0,0 +1,298 @@
(defwindow sidebar
:geometry (geometry :x "0px"
:y "0px"
:width "1px"
:height "1024"
:anchor "bottom left")
:stacking "fg"
:monitor "0"
(sidebar))
(defwidget sidebar []
(eventbox
:halign "start"
:onhover "${EWW_CMD} update side=true"
:onhoverlost "${EWW_CMD} update side=false"
(revealer
:transition "slideright"
:reveal side
:duration "550ms"
(side))))
(defvar side false)
;; background
(defwidget side []
(box
:class "side"
:orientation "v"
:space-evenly "false"
:spacing "30"
:halign "start"
(fetch)
(top)
(music-side)
(system-side)
(tray))
)
(defwidget top []
(box
:orientation "h"
:space-evenly "false"
:spacing "30"
:halign "center"
(date)
(weather))
)
;; Music Widgets
(defwidget music-side []
(box
:class "music-player"
:orientation "h"
:space-evenly "false"
:spacing 15
:halign "center"
:valign "start"
:hexpand "true"
:width ""
(box
:class "album_art"
:style "background-image: url('${art}');")
(box
:orientation "v"
:space-evenly "false"
:valign "center"
:halign "center"
:spacing 10
(label
:class "song"
:limit-width 15
:text title)
(label
:class "artist"
:limit-width 15
:text artist)
(box
:orientation "h"
:space-evenly "false"
:valign "center"
:halign "center"
:spacing 25
(button :class "btn_prev" :onclick "scripts/music previous" "玲")
(button :class "btn_play" :onclick "scripts/music toggle" playpause)
(button :class "btn_next" :onclick "scripts/music next" "怜")))))
(defpoll art :interval "1s" "scripts/music coverloc")
(defpoll title :interval "1s" "scripts/music title")
(defpoll artist :interval "1s" "scripts/music artist")
(defpoll playpause :interval "1s" "scripts/music statusicon")
;; weather
(defwidget weather []
(box
:class "weather"
:orientation "v"
:spacing -2
:space-evenly "false"
:vexpand "true"
:hexpand "false"
:valign "start"
:halign "center"
(label
:class "iconweather"
:halign "center"
:valign "center"
:style "color: ${HEX};" :text ICON)
(button
:onclick "scripts/weather --getdata && eww reload &"
:class "label_temp"
:valign "center"
:halign "center"
"${TEMP}")))
(defwidget date []
(box :class "date" :orientation "v" :valign "start" :space-evenly "false" :halign "center"
(label
:text DAY)
(label
:text POO)
(label :class "foo"
:text FOO)))
(defpoll FOO :interval "6h" "date '+%d'")
(defpoll DAY :interval "6h" "date '+%A'")
(defpoll POO :interval "6h" "date '+%B'")
;; Weather vars
(defpoll ICON :interval "15m" `scripts/weather --icon`)
(defpoll TEMP :interval "15m" `scripts/weather --temp`)
(defpoll HEX :interval "15m" `scripts/weather --hex`)
;; <-- System -->
(defwidget system-side []
(box
:class "stats-box"
:space-evenly "false"
:width "300px"
:orientation "v"
:valign "start"
:halign "center"
:spacing 12
(box
:class "stats"
:hexpand "false"
:vexpand "false"
:space-evenly "false"
(label
:tooltip "${round(EWW_CPU.avg, 0)}%"
:class "stats-icon" :text "")
(scale
:min 0
:max 101
:active false
:value {EWW_CPU.avg}
:class "scale"
:width 280))
(box
:class "stats"
:hexpand "false"
:vexpand "false"
:space-evenly "false"
(label
:tooltip "${round(EWW_RAM.used_mem_perc, 0)}%"
:class "stats-icon"
:text "﬙")
(scale
:min 0
:max 101
:active false
:value {EWW_RAM.used_mem_perc}
:class "scale"
:width 280))
(box
:class "stats"
:hexpand "false"
:vexpand "false"
:space-evenly "false"
(label
:tooltip "${round(EWW_DISK["/"].used_perc, 0)}%"
:class "stats-icon"
:text "")
(scale
:min 0
:max 101
:active false
:value {(EWW_DISK["/"].used / EWW_DISK["/"].total) * 100}
:class "scale"
:width 280))
(box
:class "stats"
:hexpand "false"
:vexpand "false"
:space-evenly "false"
(label
:tooltip "${gpu}%"
:class "stats-icon"
:text "調")
(scale
:min 0
:max 101
:active false
:value gpu
:class "scale"
:width 280))
(box
:class "stats"
:hexpand "false"
:vexpand "false"
:space-evenly "false"
(button
:tooltip "${volume_percent}%"
:onclick "amixer set Master toggle"
:onrightclick "alsamixer &"
:class "stats-icon" "墳")
(scale
:min 0
:max 101
:active true
:value volume_percent
:class "scale"
:width 280
:onchange "amixer sset Master {}%")
)))
(deflisten gpu "scripts/gpu")
(defwidget tray []
(box
:class "buttons"
:orientation "h"
:space-evenly "false"
:halign "center"
:valign "start"
:spacing "2"
(button
:class "poweroff"
:halign "center"
:tooltip "Shut Down"
:onclick "kitty poweroff &" "⏻")
(button
:class "reboot"
:halign "center"
:tooltip "Reboot"
:onclick "kitty reboot &" "")
(button
:class "firmware"
:halign "center"
:tooltip "Reboot to EFI"
:onclick "kitty systemctl reboot --firmware &" "拉")
(button
:class "exit"
:halign "center"
:tooltip "Quit Hyprland"
:onclick "hyprctl dispatch exit exit" "")
(button
:class "restart"
:halign "center"
:tooltip "edit Config"
:onclick "footclient nvim ~/.config/hypr/hyprland.conf &" "")))
(defpoll uptime :interval "1m" "uptime -p | sed -e 's/up //;s/ hours,/h/;s/ minutes/m/'")
(defpoll packages :interval "5m" `pacman -Q | wc -l`)
(defpoll kernal :interval "5m" `uname -r`)
(defpoll name :interval "5m" `whoami`)
(defpoll host :interval "5m" `uname -n`)
(defpoll wm :interval "5m" `echo $XDG_CURRENT_DESKTOP`)
(defwidget fetch []
(box
:class "fetch"
:orientation "v"
:space-evenly "false"
:halign "center"
:valign "start"
:spacing "10"
(label
:class "host"
:halign "start"
:text " : ${name}@${host}")
(label
:class "wm"
:halign "start"
:text " : ${wm}")
(label
:class "uptime"
:halign "start"
:text " : ${uptime}")
(label
:class "packages"
:halign "start"
:text " : ${packages}")
(label
:class "kernal"
:halign "start"
:text " : ${kernal}")
)
)