nixos-config/common/eww/eww.yuck

200 lines
3.5 KiB
Text
Raw Permalink Normal View History

2024-11-05 09:41:16 +01:00
(deflisten workspaces-status
2024-11-04 15:49:10 +01:00
:initial "[]"
"./listen/niri/workspaces"
)
2024-11-05 09:41:16 +01:00
(deflisten window-title "./listen/niri/window-title")
(deflisten notifications-status
:initial '{"dnd": false, "count": 0}'
"swaync-client --subscribe"
)
2024-11-19 18:36:23 +01:00
(deflisten audio-status
"./listen/audio"
)
2024-11-05 09:41:16 +01:00
(defvar workspaces-icon '{
2024-11-04 15:49:10 +01:00
"admin": "",
"everything": "",
"apps": ""
}')
2024-11-05 09:41:16 +01:00
(defvar notifications-icon '{
"nothing": "",
"new": "",
"dnd": ""
}')
2024-11-19 18:36:23 +01:00
(defvar battery-icon '[
{ "Discharging": "󰂎", "Charging": "󰢟" },
{ "Discharging": "󰁺", "Charging": "󰢜" },
{ "Discharging": "󰁻", "Charging": "󰂆" },
{ "Discharging": "󰁼", "Charging": "󰂇" },
{ "Discharging": "󰁽", "Charging": "󰂈" },
{ "Discharging": "󰁾", "Charging": "󰢝" },
{ "Discharging": "󰁿", "Charging": "󰂉" },
{ "Discharging": "󰂀", "Charging": "󰢞" },
{ "Discharging": "󰂁", "Charging": "󰂊" },
{ "Discharging": "󰂂", "Charging": "󰂋" },
{ "Discharging": "󰁹", "Charging": "󰂅", "Full": "󱟢" }
]')
(defvar audio-icon '[
{ "muted": "a", "unmuted": "b" },
{ "muted": "c", "unmuted": "d" }
]')
2024-11-05 09:41:16 +01:00
2024-11-04 15:49:10 +01:00
(defwidget workspaces []
(box
:class "workspaces"
2024-11-05 09:41:16 +01:00
(for workspace in {workspaces-status}
2024-11-04 15:49:10 +01:00
(eventbox
:onclick "niri msg action focus-workspace ${workspace.idx}"
:width 25
2024-11-05 09:41:16 +01:00
:class "${workspace.is_active ? " workspace-active" : ""}"
2024-11-04 15:49:10 +01:00
2024-11-05 09:41:16 +01:00
"${"${workspaces-icon?.[workspace.name]}" ?: ""} "
2024-11-04 15:49:10 +01:00
)
)
)
)
2024-11-05 09:41:16 +01:00
(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}"
)
))
)
2024-11-04 15:49:10 +01:00
(defwidget time []
"${formattime(EWW_TIME, "%Y-%m-%d")} ${formattime(EWW_TIME, "%H:%M:%S")}"
)
2024-11-05 09:41:16 +01:00
(defwidget tray []
(box (systray
:icon-size 15
:spacing 10
))
)
2024-11-19 18:36:23 +01:00
(defwidget audio []
(label
:text ""
)
)
2024-11-05 09:41:16 +01:00
(defwidget battery []
(label
2024-11-19 18:36:23 +01:00
:text "${battery-icon[round((EWW_BATTERY.BAT0.capacity - 5) / 10, 0) - 1][EWW_BATTERY.BAT0.status]} ${EWW_BATTERY.BAT0.capacity}"
2024-11-05 09:41:16 +01:00
)
)
2024-11-19 13:55:47 +01:00
(defwindow dock_ahrc-laptop
2024-10-23 20:14:52 +02:00
:monitor 0
:geometry (geometry
2024-11-04 15:49:10 +01:00
:x "0"
:y "0"
:width "100%"
2024-10-23 20:14:52 +02:00
:height "30px"
2024-11-04 15:49:10 +01:00
:anchor "bottom center"
2024-10-23 20:14:52 +02:00
)
:stacking "fg"
2024-11-04 15:49:10 +01:00
:exclusive true
(centerbox
2024-11-05 09:41:16 +01:00
:class "main"
2024-11-04 15:49:10 +01:00
(box
:class "left"
:halign "start"
:space-evenly false
(workspaces)
2024-11-05 09:41:16 +01:00
(window-title)
2024-11-04 15:49:10 +01:00
)
(box
:class "middle"
2024-11-05 09:41:16 +01:00
:space-evenly false
2024-11-04 15:49:10 +01:00
2024-11-05 09:41:16 +01:00
(tray)
2024-11-04 15:49:10 +01:00
(time)
2024-11-05 09:41:16 +01:00
(notifications)
2024-11-04 15:49:10 +01:00
)
(box
:class "right"
2024-11-05 09:41:16 +01:00
:halign "end"
:space-evenly false
2024-11-19 18:36:23 +01:00
(audio)
2024-11-05 09:41:16 +01:00
(battery)
2024-11-04 15:49:10 +01:00
)
)
2024-10-23 20:14:52 +02:00
)
2024-11-19 13:55:47 +01:00
(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
""
)
)
)