OmaElk: un plugin para Omarchy
Un plugin de Omarchy para luces LED Bluetooth económicas ELK-BLEDOB / ELK-BLE
- Python
- 0 estrellas
- omarchy
- plugin
- python
- qml
- bluetooth
- linux
- open-source

🌱 Cómo empezó
Hace unos meses, mi jefe mencionó Omarchy en un canal del trabajo, el nuevo sistema operativo creado por DHH que se ha vuelto popular en internet. Bueno, fue una mala idea. Llevaba un par de años usando Ubuntu, y leer lo genial y personalizable que era el nuevo sistema operativo me llevó a probarlo primero en un disco duro aparte, pero terminé reseteando toda la computadora. Desde entonces estoy enganchado, y me encanta que todo funcione exactamente como uno quiere. Estoy de acuerdo con la mentalidad de "We can fix everything" ("podemos arreglarlo todo"). El conveniente lado Agentic OS también es algo sobre lo que me encantaría compartir mis ideas en el futuro.
En fin, hace unos meses compré unas luces LED Bluetooth económicas para ver si eran buenas. El problema: solo funcionan con su propia app de Android e iOS, y yo siempre quise usarlas fuera de ese ecosistema. Así que empecé a hacer vibe coding con Claude para ver hasta dónde llegaba. El resultado es un plugin de Omarchy completo que me permite controlar las luces como yo quiera.
✨ Qué hace
- 🔆 Widget en la barra: una bombilla en pixel art que toma su color del tema de Omarchy, con un popup para colores, efectos, brillo y velocidad
- 🎵 Modo reactivo a la música: el tono sigue el espectro (graves → rojo, agudos → violeta) y el brillo sigue el volumen
- 🎨 22 efectos integrados, además de un selector de color y un gotero de pantalla
- 🔄 Sincronización con el tema: iguala las luces al color de acento de tu tema de Omarchy, bajo demanda o en cada cambio de tema
- ⌨️ CLI
omaelkpara scripts, más un generador de menú para el lanzador de Omarchy
🧠 Cómo funciona
Bueno, esta no es mi área de especialidad, ¡pero aquí va un resumen hecho con un poco de ayuda de Claude para explicar cómo funciona!
Escanear y conectar por Bluetooth toma segundos, y un controlador ya conectado deja de anunciarse, así que conectar por cada comando hacía que los cambios rápidos se colgaran o se perdieran. En su lugar, un pequeño daemon en segundo plano mantiene la única conexión Bluetooth, y cada comando es una escritura de una línea en su socket.
omaelk CLI / widget / menú ──► Socket Unix ──► daemon ══ BLE ══► controlador
- ⚡ Con la conexión activa, los comandos tardan unos 50 ms
- 🔒 Un lock garantiza que dos clientes nunca creen dos daemons peleando por el enlace
- 🩹 El daemon se recupera solo de una conexión BlueZ atascada
- 🔬 Implementé directamente el protocolo del controlador: tramas de 9 bytes sobre una característica GATT
🔐 Privacidad desde el diseño
El modo música escucha el monitor de la salida de audio predeterminada, no el micrófono. Cada fragmento de ~43 ms se analiza con una FFT y se descarta, así que nada se graba, se guarda ni se envía. Lo único que llega a la luz son tres bytes de color.
📈 Ligero
Cerca del 1,4 % de un núcleo de CPU y 37 MB de memoria en modo música, y 0 % en reposo.
¿Genial, no? No consume casi recursos. Me gusta cuidar los detalles, y esto era algo que definitivamente tenía en mente cuando desarrollé OmaElk.
🙏 Sobre hombros de gigantes
El trabajo del protocolo se apoya en ingeniería inversa de código abierto hecha por otras personas (acreditada en el repositorio).
🧰 Construido con
Claude · Python · bleak · NumPy · QML / Quickshell · BlueZ · PipeWire