(deflisten workspaces-status :initial "[]" "./listen/niri/workspaces" ) (deflisten window-title "./listen/niri/window-title") (deflisten notifications-status :initial '{"dnd": false, "count": 0}' "swaync-client --subscribe" ) (defvar workspaces-icon '{ "admin": "", "everything": "", "apps": "" }') (defvar notifications-icon '{ "nothing": "", "new": "", "dnd": "" }') (defvar battery-icon '{ "Discharging": [ "󰁹", "󰂂", "󰂁", "󰂀", "󰁿", "󰁾", "󰁽", "󰁼", "󰁻", "󰁺", "󰂎" ], "Charging": [ "󰂅", "󰂋", "󰂊", "󰢞", "󰂉", "󰢝", "󰂈", "󰂇", "󰂆", "󰢜", "󰢟" ], "Full": [ "󱟢" ] }') (defwidget workspaces [] (box :class "workspaces" (for workspace in {workspaces-status} (eventbox :onclick "niri msg action focus-workspace ${workspace.idx}" :width 25 :class "${workspace.is_active ? " workspace-active" : ""}" "${"${workspaces-icon?.[workspace.name]}" ?: ""} " ) ) ) ) (defwidget window-title [] (box (label :limit-width 80 :text "${window-title ?: ""}" )) ) (defwidget notifications [] (box (eventbox :onclick "swaync-client --toggle-panel" :onmiddleclick "swaync-client --close-all" :onrightclick "swaync-client --toggle-dnd" :width 25 (label :class "icons" :text "${notifications-status.dnd ? "${notifications-icon.dnd}" : notifications-status.count > 0 ? "${notifications-icon.new}" : "${notifications-icon.nothing}"} ${notifications-status.count}" ) )) ) (defwidget time [] "${formattime(EWW_TIME, "%Y-%m-%d")} ${formattime(EWW_TIME, "%H:%M:%S")}" ) (defwidget tray [] (box (systray :icon-size 15 :spacing 10 )) ) (defwidget battery [] (label :text "${EWW_BATTERY.BAT0.capacity == 100 ? "${battery-icon[EWW_BATTERY.BAT0.status][0]}" : EWW_BATTERY.BAT0.capacity >= 90 ? "${battery-icon[EWW_BATTERY.BAT0.status][1]}" : EWW_BATTERY.BAT0.capacity >= 80 ? "${battery-icon[EWW_BATTERY.BAT0.status][2]}" : EWW_BATTERY.BAT0.capacity >= 70 ? "${battery-icon[EWW_BATTERY.BAT0.status][3]}" : EWW_BATTERY.BAT0.capacity >= 60 ? "${battery-icon[EWW_BATTERY.BAT0.status][4]}" : EWW_BATTERY.BAT0.capacity >= 50 ? "${battery-icon[EWW_BATTERY.BAT0.status][5]}" : EWW_BATTERY.BAT0.capacity >= 40 ? "${battery-icon[EWW_BATTERY.BAT0.status][6]}" : EWW_BATTERY.BAT0.capacity >= 30 ? "${battery-icon[EWW_BATTERY.BAT0.status][7]}" : EWW_BATTERY.BAT0.capacity >= 20 ? "${battery-icon[EWW_BATTERY.BAT0.status][8]}" : EWW_BATTERY.BAT0.capacity >= 10 ? "${battery-icon[EWW_BATTERY.BAT0.status][9]}" : "${battery-icon[EWW_BATTERY.BAT0.status][10]}"} ${EWW_BATTERY.BAT0.capacity}%" ) ) (defwindow dock :monitor 0 :geometry (geometry :x "0" :y "0" :width "100%" :height "30px" :anchor "bottom center" ) :stacking "fg" :exclusive true (centerbox :class "main" (box :class "left" :halign "start" :space-evenly false (workspaces) (window-title) ) (box :class "middle" :space-evenly false (tray) (time) (notifications) ) (box :class "right" :halign "end" :space-evenly false (battery) ) ) )