nix-config/modules/wm/hyprland/config/eww/eww_widgets.yuck
2025-04-05 22:04:16 +02:00

119 lines
6.9 KiB
Text

; -> WIDGETS FOR EWW <- ;
;;;; Imports
(include "/home/horseman/.config/eww/eww_variables.yuck")
;;;; Metric (cpu, ram, etc bars) constructor widget
(defwidget metric [label value ?onchange]
(box :orientation "h" :class "metric" :space-evenly false
(box :class "label" label)
(scale :min 0 :max 101 :active {onchange != ""} :value value :onchange onchange)))
;;;; Background Black Holder Widget
(defwidget bg []
(box :class "bg-box" :orientation "v" :space-evenly false))
;;;; User information fetch widget
(defwidget uinfo []
(box :class "uinfo" :orientation "v" :space-evenly false :halign "center" :valign "center"
(label :style "color: #5e81ac;" :text {host} :halign "center" :valign "center" :wrap "false" :limit-width 25)
(label :style "color: #efefef;" :text "─────────────" :halign "center" :valign "center" :wrap "false" :limit-width 25)
;; Tags for values
(box :orientation "h" :space-evenly "false" :spacing 10
(box :orientation "v" :class "fetch" :spacing 2
(label :style "font-family: 'archcraft'; color: #b48ead;" :halign "end" :text "")
(label :style "color: #ebcb8b;" :halign "end" :text "缾")
(label :style "color: #80a0c0;" :halign "end" :text "")
(label :style "color: #b48ead;" :halign "end" :text ""))
;; Fetch Values
(box :orientation "v" :class "fetch"
(label :style "color: #b48ead;" :halign "start" :text ": ${distro}")
(label :style "color: #ebcb8b;" :halign "start" :text ": Hyprland")
(label :style "color: #80a0c0;" :halign "start" :text ": ${TODAY}")
(label :style "color: #b48ead;" :halign "start" :text ": ${time}")
))))
;;;; System Information Widget
(defwidget sys []
(box :class "cpu" :orientation "v" :space-evenly false :halign "center" :valign "center"
(box :space-evenly false (image :path "images/cpu.svg")(metric :label "" :value {EWW_CPU.avg}) )
(box :space-evenly false (image :path "images/ram.svg")(metric :label "" :value {EWW_RAM.used_mem_perc}) )
(box :space-evenly false (image :path "images/disk.svg")(metric :label "" :value {EWW_DISK["/"].used_perc}) )
(box :space-evenly false :visible { hostname == "luna" } (image :path { EWW_BATTERY.BAT1.status == "Discharging" ? "images/battery.svg" : "images/charging.svg" })(metric :label "" :value {EWW_BATTERY.BAT1.capacity}) )
(box :space-evenly false :visible { hostname == "terra" } (image :path "images/gpu.svg")(metric :label "" :value gpu_load) )
)
)
;;;; Random Quote Widget
(defwidget quote[]
(box :class "quote" :orientation "v" :space-evenly false :halign "center" :valign "center"
(label :class "quote-text" :text "${quote_text}" :wrap true)))
;;;; QuickSettings widget
(defwidget quicksettings []
(box :orientation "h" :space-evenly true :class "quicksettings" :spacing "10" :halign "center" :valign "center"
(button :onclick "playerctl previous &" (image :path "images/prev.svg"))
(button :onclick "playerctl play-pause &" (image :path "images/play.svg"))
(button :onclick "playerctl next &" (image :path "images/next.svg"))))
;;;; AppBar widget
(defwidget appbar []
(box :orientation "h" :space-evenly false :class "appbar" :spacing "10" :halign "center" :valign "center"
(button :onclick "firefox &" (image :path "images/firefox.svg"))
(button :onclick "kitty vim &" (image :path "images/vim.svg"))
(button :onclick "kitty &" (image :path "images/kitty.svg"))
)
)
;;;; Rofi style search
(defwidget searchapps []
(eventbox :onhoverlost "eww close searchapps"
(box :orientation "v" :space-evenly false :class "search-win" :halign "top" :valign "top"
(box :orientation "h" :space-evenly false :class "searchapps-bar" :halign "top" :valign "top"
(label :class "search-label" :text "")
(input :class "search-bar" :onchange "~/.config/eww/scripts/search.sh {}"))
(literal :halign "center" :valign "center" :class "app-container" :content search_listen))))
;;;; Rofi style powermenu
(defwidget bigpowermenu []
(box :orientation "h" :space-evenly false :class "bigpowermenu" :halign "center" :valign "center" :spacing 20
(button :style "color: #d8dee9;" :class "shutdown" :onrightclick "systemctl poweroff" "")
(button :style "color: #e5e9f0;" :class "reboot" :onrightclick "systemctl reboot" "")
(button :style "color: #eceff4;" :class "lock" :onrightclick "bsplock" "")
(button :style "color: #e8e8e8;" :class "suspend" :onrightclick "mpc -q pause & amixer set Master mute & systemctl suspend" "")
(button :style "color: #ffffff;" :class "logout" :onrightclick "bspc quit" "")))
;;;; Music Player
(defwidget musicplayer []
(box :orientation "v" :space-evenly false :class "musicplayer" :halign "center" :valign "center" :hexpand true :vexpand true
(label :class "label-control" :text "${music_current}" :halign "center" :limit-width 50 :show-truncated true :hexpand true :vexpand true)
(box :orientation "h" :space-evenly false :class "controls" :halign "center" :valign "center" :spacing 20
(button :style "color: #d8dee9;" :onclick "mpc -q toggle && notify-send -u low -t 1800 ${music_current}" "懶")
(button :style "color: #e5e9f0;" :onclick "mpc -q stop" "")
(button :style "color: #eceff4;" :onclick "mpc -q next && notify-send -u low -t 1800 ${music_current}" "")
(button :style "color: #e8e8e8;" :onclick "mpc -q prev && notify0send -u low -t 1800 ${music_current}" ""))))
(defwidget network []
(box :orientation "v" :space-evenly false :class "network" :halign "center" :valign "center" :hexpand true :vexpand true
(label :class "label-control" :text "${ssid}" :halign "center" :limit-width 50 :show-truncated true :hexpand true :vexpand true)
(box :orientation "h" :space-evenly false :class "controls" :halign "center" :valign "center" :spacing 20
(button :style "color: #d8dee9;" :onclick "sh ~/.config/eww/scripts/airplane_mode.sh" "")
(button :style "color: #e5e9f0;" :onclick "alacritty --class 'alacritty-float,alacritty-float' -e bmon &" "")
(button :style "color: #eceff4;" :onclick "alacritty --class 'alacritty-float,alacritty-float' -e nmtui &" "")
(button :style "color: #e8e8e8;" :onclick "nm-connection-editor &" ""))))
(defwidget screenshot []
(box :orientation "v" :space-evenly false :class "network" :halign "center" :valign "center" :hexpand true :vexpand true
(label :class "label-control" :text " Screenshot" :halign "center" :limit-width 50 :show-truncated true :hexpand true :vexpand true)
(box :orientation "h" :space-evenly false :class "controls" :halign "center" :valign "center" :spacing 20
(button :style "color: #d8dee9;" :onclick "eww close screenshot && ~/.config/eww/scripts/screenshot 'SCREEN'" "")
(button :style "color: #e5e9f0;" :onclick "eww close screenshot && ~/.config/eww/scripts/screenshot 'SELECT'" ""))))