nixos-config/common/eww/eww.yuck

222 lines
4 KiB
Text

(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_ahrc-laptop
: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)
)
)
)
(defwindow dock_ahrc-pc
: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
""
)
)
)