;
;; vim: ft=fennel
(local format-icons ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█"])
{:spacing 4
:layer :top
;
:modules-left [:river/tags :river/window]
;
:modules-left [:hyprland/workspaces :hyprland/window]
;
:modules-right [:mpris
:cava
:cpu
:memory
:network
:pulseaudio
:gamemode
:temperature
:battery
:clock
:tray]
:cava {:hide_on_silence true
:bars 16
:bar_delimiter 0
:method :pipewire
: format-icons}
:mpris {:format "{status_icon} {dynamic}"
:interval 5
:dynamic-order [:title :artist :position :length]
:dynamic-importance-order [:position :length :artist :album]
:status-icons {:playing "" :paused "" :stopped ""}
:title-len 32
:dynamic-len 64
:dynamic-separators " "}
:gamemode {:format "{glyph} {count}"}
:tray {:spacing 10}
:clock {:tooltip-format "{:%Y %B}\n{calendar}"
:format-alt "{:%Y-%m-%d}"}
:cpu {:format (.. (faccumulate [s "" i 0 (- (cg.opt.system :nproc) 1)]
(.. s "{icon" i "}")) " {usage}% ")
:interval 2
: format-icons}
:memory {:format "{}% "}
:temperature {:hwmon-path "<% cpu_temp_hwmon %>"
:critical-threshold 80
:format "{temperatureC}°C {icon}"
:format-icons ["" "" ""]}
:battery {:states {:warning 50 :critical 20}
:format "{capacity}% {icon}"
:format-charging "{capacity}% "
:format-plugged "{capacity}% "
:format-alt "{time} {icon}"
:format-icons ["" "" "" "" ""]}
:pulseaudio (let [fstring (fn [muted bluetooth]
(.. (if muted "" "{volume}%")
(if (and muted (not bluetooth)) "" " {icon}")
(if bluetooth "" "") " {format_source}"))]
{:format (fstring false false)
:format-muted (fstring true false)
:format-bluetooth (fstring false true)
:format-bluetooth-muted (fstring true true)
:format-source "{volume}% "
:format-source-muted ""
:format-icons {:headphone ""
:hands-free ""
:headset ""
:phone ""
:portable ""
:car ""
:default ["" "" ""]}
:on-click :pavucontrol})
:network {:interval 10
:format "{bandwidthDownBytes} {bandwidthUpBytes} "
:tooltip-format-ethernet "{ifname} {ipaddr}"
:tooltip-format-wifi "{essid} {ipaddr}"
:on-click "<% opt.term.command %> nmtui"
:on-click-right "<% opt.term.command %> nmtui"}}