275 lines
5.7 KiB
Plaintext
275 lines
5.7 KiB
Plaintext
;;main status bar and whatnot
|
|
(defwindow bar
|
|
:monitor 0
|
|
:stacking "fg"
|
|
:windowtype "dock"
|
|
:vexpand false
|
|
:exclusive "true"
|
|
:geometry (geometry
|
|
:y "3px"
|
|
:width "99%"
|
|
:anchor "bottom center")
|
|
(bar)
|
|
)
|
|
|
|
(defpoll time :interval "1s" :initial `date +%H:%M:%S` `date +%H:%M:%S`)
|
|
(defpoll date :interval "1m" "date +%m/%d/%y")
|
|
(defpoll ip_addr :interval "1h" 'ip -j a show enp0s3')
|
|
(defpoll volume :interval "250ms" 'wpctl get-volume @DEFAULT_SINK@') ;;turn this into a script or smth
|
|
(defpoll active_workspaces :interval "250ms" "hyprctl workspaces -j")
|
|
(defpoll active_window :interval "500ms" 'hyprctl activewindow -j')
|
|
(defpoll current_workspace :interval "250ms" "hyprctl activeworkspace -j")
|
|
(deflisten splash :initial "yo" "hyprctl splash")
|
|
(defvar reveal_calendar false)
|
|
(defvar reveal_sound false)
|
|
(defvar reveal_sound_menu false)
|
|
(defvar network_interface "enp0s3") ;;the interface to listen to
|
|
(defvar reveal_apps 0)
|
|
(defvar browser "microsoft-edge")
|
|
(defvar filemanager "pcmanfm")
|
|
|
|
|
|
;; DONE workspaces
|
|
;; DONE date
|
|
;; KINDA DONE networking
|
|
;; DONE volume
|
|
;; make the sound icon do smth
|
|
;; power menu
|
|
;; DONE app tray
|
|
|
|
(defwidget workspaces []
|
|
(box
|
|
:class "workspaces island"
|
|
:orientation "h"
|
|
:space-evenly true
|
|
:halign "start"
|
|
:spacing 3
|
|
(for wsp in active_workspaces
|
|
(button
|
|
:class {current_workspace.id == wsp.id ? "active_workspace" : "workspaces"}
|
|
:onclick "hyprctl dispatch workspace ${wsp.id}" {wsp.id}))
|
|
(label :visible false :text "${current_workspace}") ;;this is a dummy widget since current_workspace won't poll otherwise
|
|
))
|
|
|
|
(defwidget sound []
|
|
(eventbox
|
|
:onhover "eww update reveal_sound=true"
|
|
:onhoverlost "eww update reveal_sound=false"
|
|
(box
|
|
:space-evenly false
|
|
:orientation "h"
|
|
:spacing "3"
|
|
(revealer
|
|
:reveal reveal_sound
|
|
:transition "slideleft"
|
|
:duration "500ms"
|
|
(scale
|
|
:draw-value true
|
|
:value-pos "right"
|
|
:min 0
|
|
:max 101
|
|
:orientation "h"
|
|
:value {substring(volume,8,4) * 100}
|
|
:onchange "wpctl set-volume @DEFAULT_SINK@ {}%")
|
|
)
|
|
""
|
|
)
|
|
))
|
|
|
|
(defwidget time-and-date []
|
|
(eventbox
|
|
:onclick "eww update ${selected_widget != 1 ? "selected_widget=1" : "selected_widget=0"}"
|
|
(box
|
|
:class "timendate"
|
|
:spacing 1
|
|
:space-evenly false
|
|
:halign "start"
|
|
:orientation "v"
|
|
:tooltip time
|
|
{substring(time,0,strlength(time)-3)}
|
|
date))
|
|
)
|
|
|
|
(defwidget network []
|
|
(box
|
|
:class "monitor"
|
|
:orientation "v"
|
|
"${network_interface}"
|
|
(label :limit_width 25 :wrap true :text "ip: ${ip_addr[0].addr_info[0].local}")
|
|
(label :text ":${round(EWW_NET.enp0s3.NET_UP / 1000000 * 8, 1)} / :${round(EWW_NET.enp0s3.NET_DOWN / 1000000 * 8, 1)} mbps")
|
|
)
|
|
)
|
|
|
|
|
|
(defwidget center []
|
|
(eventbox
|
|
:class "center island"
|
|
:onhover "eww update reveal_apps=1"
|
|
:onhoverlost "eww update reveal_apps=0"
|
|
(stack
|
|
:selected reveal_apps
|
|
:transition "slidedown"
|
|
:samesize true
|
|
(label :class "center island" :text "${active_window.title ?: splash}")
|
|
(box
|
|
:orientation "h"
|
|
:space-evenly true
|
|
(button :onclick {browser} "")
|
|
(button :onclick {filemanager} ""))
|
|
)))
|
|
|
|
|
|
(defwidget right []
|
|
(box
|
|
:class "island"
|
|
:spacing 5
|
|
:orientation "h"
|
|
:space-evenly false
|
|
:halign "end"
|
|
(systray
|
|
:spacing 3
|
|
:orientation "h"
|
|
:space-evenly false
|
|
:icon-size 5
|
|
:prepend-new false)
|
|
(sound)
|
|
(time-and-date)
|
|
))
|
|
|
|
(defwidget bar []
|
|
(centerbox
|
|
:orientation "h"
|
|
:class "bar"
|
|
(workspaces)
|
|
;; (label :class "center island" :text "${active_window.title ?: splash}")
|
|
(center)
|
|
(right)
|
|
))
|
|
|
|
|
|
(defvar selected_widget 0)
|
|
|
|
;;sub window for widgets
|
|
(defwindow widget_window []
|
|
:monitor 0
|
|
:geometry (geometry
|
|
:y "2%"
|
|
:x "2%"
|
|
:anchor "right bottom")
|
|
|
|
:stacking "overlay"
|
|
:exclusive false
|
|
(sub_window)
|
|
)
|
|
|
|
(defwidget sub_window []
|
|
(stack
|
|
:selected selected_widget
|
|
:transition "slideup"
|
|
:same-size false
|
|
""
|
|
(calendar)
|
|
(power_menu)
|
|
)
|
|
)
|
|
|
|
(defwidget power_menu []
|
|
(box
|
|
:class "island"
|
|
:orientation "v"
|
|
:space-evenly false
|
|
(button
|
|
:onclick "shutdown now"
|
|
"shutdown")
|
|
(button
|
|
:onclick "hyprctl dispatch exit"
|
|
"logout")
|
|
(button
|
|
:onclick "reboot"
|
|
"restart")
|
|
(button
|
|
:onclick "eww update selected_widget=0"
|
|
"X")
|
|
)
|
|
)
|
|
|
|
;;second monitor can have cpu and ram usage, cpu temp, time
|
|
|
|
(defwindow resource_monitor []
|
|
:monitor 0
|
|
:geometry (geometry
|
|
:y "5%"
|
|
:x "5%"
|
|
:width "20%"
|
|
:height "20%"
|
|
:anchor "left top")
|
|
:stacking "bottom"
|
|
:exclusive false
|
|
(resource_widget))
|
|
|
|
|
|
(defwidget resource_widget []
|
|
(box
|
|
:orientation "v"
|
|
:halign "start"
|
|
:space-evenly false
|
|
(label :class "monitor clock" :text {time})
|
|
(cpu)
|
|
(ram)
|
|
(disk)
|
|
(network)
|
|
(visualizer)
|
|
))
|
|
|
|
(defwidget cpu []
|
|
(box
|
|
:orientation "h"
|
|
:space-evenly true
|
|
:halign "start"
|
|
(box
|
|
:class "monitor"
|
|
:orientation "v"
|
|
(label :text "cpu avg: ${round(EWW_CPU.avg, 1)}%")
|
|
(for core in {EWW_CPU.cores}
|
|
(label :tooltip "${core.freq} Mhz" :text "${core.core}: ${core.usage}%")))
|
|
(box
|
|
:class "monitor"
|
|
(graph
|
|
:thickness 2
|
|
:time-range "10s"
|
|
:max 100
|
|
:value {round(EWW_CPU.avg,1)}))
|
|
))
|
|
|
|
(defwidget ram []
|
|
(box
|
|
:orientation "h"
|
|
(box
|
|
:class "monitor"
|
|
:orientation "v"
|
|
(label :text "RAM: ${round(EWW_RAM.used_mem/1000000000, 2)}/${round(EWW_RAM.total_mem/1000000000, 2)} GB")
|
|
(label :text "Available: ${round(EWW_RAM.available_mem/1000000000, 2)} GB")
|
|
)
|
|
))
|
|
|
|
(defwidget disk []
|
|
(box
|
|
:class "monitor"
|
|
:orientation "h"
|
|
:space-evenly false
|
|
(label :text "/: ${round(EWW_DISK["/"].free/1000000000, 2)}/${round(EWW_DISK["/"].total/1000000000,2)} GB")
|
|
(circular-progress
|
|
:value {round(EWW_DISK["/"].used_perc, 1)}
|
|
:thickness 6)
|
|
(label :text "${round(EWW_DISK["/"].used_perc, 1)}% used")
|
|
))
|
|
|
|
(deflisten cava "bash $HOME/.config/eww/scripts/cava.sh")
|
|
|
|
(defwidget visualizer []
|
|
(box
|
|
:class "monitor"
|
|
:orientation "h"
|
|
(label :class "visualizer" :text cava)
|
|
))
|