Decisiones técnicas:
Rust y Wayland nativo
Construí la barra directamente sobre el protocolo de Wayland usando smithay-client-toolkit y wayland-client, sin frameworks de UI por encima. Esto me da control total sobre la superficie layer-shell y mantiene el binario liviano. El event loop corre sobre calloop, que integra los eventos de Wayland con el resto de las fuentes de la aplicación.
Rendering por GPU
El dibujado va por wgpu con Vello para las escenas 2D y Parley para el shaping y layout de texto. En vez de rasterizar por CPU, toda la barra se renderiza en la GPU, lo que mantiene el consumo bajo incluso con actualizaciones frecuentes como el reloj o los workspaces.
Sistema de componentes
Cada widget de la barra es una pill que implementa un trait Component con tres responsabilidades: medir su tamaño, renderizarse dentro de los límites que le asigna el layout, y reportar interacciones mediante hit testing. El layout distribuye los componentes en tres zonas (izquierda, centro y derecha) y los colores, espaciados y radios viven centralizados en un sistema de tokens, igual que en un design system.



IPC con Hyprland
La integración con los workspaces habla directamente con los sockets Unix de Hyprland: uno para consultas y dispatches, y otro para el stream de eventos. Implementé el cliente IPC a mano en lugar de usar una librería externa, con timeouts en las lecturas para que los workers en background puedan apagarse limpiamente. Los hilos de larga duración están siempre owned mediante handles con token de shutdown, nunca detached.
Colores dinámicos
La barra carga el color de acento desde hyprcolor, así se adapta automáticamente al wallpaper.



Clima
La pill del clima consulta Open-Meteo detectando la ubicación aproximada por IP, y todo el JSON externo se deserializa en structs tipados con serde en vez de navegar valores ad-hoc.
Calidad de código
Los parsers, el layout y el hit testing tienen tests de integración, y el CI corre formateo, tests y Clippy con warnings tratados como errores en cada push. La misma batería de chequeos se puede correr localmente antes de commitear.
Estado actual
El proyecto está en una etapa temprana pero funcional: renderiza una barra superior con logo, fecha, reloj, clima, workspaces interactivos con hover y click, y avatar de perfil opcional. La arquitectura está pensada para que la barra crezca componente por componente sin volverse inmantenible.
Para mas información, podes leer el readme en GitHub.