Integración
Barras y paneles vía wlr-layer-shell, los módulos de waybar atlas-submap / atlas-plane, y el scripting de atlaswm por IPC con atlasctl.
En esta página
atlaswm se lleva bien con el ecosistema estándar de Wayland. Las barras, paneles y lanzadores se anclan vía wlr-layer-shell; todo lo que tiene estado se puede consultar y transmitir por un socket IPC en JSON, así que una barra o un script siempre sabe qué está haciendo el compositor.
Barras y paneles (wlr-layer-shell)
atlaswm implementa wlr-layer-shell (zwlr_layer_shell_v1), así que las
barras, paneles y lanzadores — waybar, eww, fuzzel, wofi, … — se anclan a un
borde del monitor, reservan espacio (las zonas exclusivas encogen el área de
tilado para que las ventanas no queden bajo la barra), dibujan en el orden z
correcto y reciben entrada de puntero/teclado. Las superficies de layer pertenecen
a la salida, no al plano, así que una barra nunca panea ni hace zoom con el
lienzo.
Lanza tu barra y tu fondo de pantalla al inicio de la sesión con
spawn-at-startup:
spawn-at-startup "waybar"
spawn-at-startup "swaybg" "-i" "/path/to/wallpaper.png"
Fondo de pantalla: usa
swaybg(o cualquier herramienta de fondo de pantalla de layer-shell).hyprpapernecesita el IPC de Hyprland y no funcionará aquí.
waybar
Los módulos integrados de waybar (reloj, red, pulseaudio, bandeja, batería, …)
funcionan tal cual. Los módulos específicos de Hyprland (hyprland/workspaces,
hyprland/submap, hyprland/window) no — necesitan el IPC de Hyprland. El
repositorio incluye reemplazos en contrib/waybar/
que usan el IPC propio de atlaswm.
atlas-submap — indicador de submodo activo
Muestra qué submodo modal está activo (resize / planes / pan / …) para que nunca
te quedes atrapado en uno sin saberlo — cubriendo el hueco que deja el
deshabilitado hyprland/submap. En blanco cuando no hay ningún submodo activo.
Está dirigido por eventos vía atlasctl subscribe (sin sondeo, se reconecta si
atlaswm se reinicia).
Requisitos: atlasctl en el PATH y jq. Copia el script a algún sitio
ejecutable y añade un módulo personalizado continuo — nota: sin interval,
transmite en flujo:
"custom/atlas-submap": {
"exec": "/home/you/.config/waybar/atlas-submap",
"return-type": "json"
}
Pon "custom/atlas-submap" en una lista modules-* (p. ej. modules-left, donde
solía estar hyprland/submap). style.css opcional:
#custom-atlas-submap.active { color: @peach; font-weight: bold; }
atlas-plane — indicador de plano
Renderiza todo el pool de planos (p. ej. 0 1 2 3) y resalta el plano que el
monitor está mostrando en ese momento — un indicador de workspace para los planos.
También dirigido por eventos. Sin argumento sigue el plano del monitor activo
(correcto para una sola barra compartida); pásale un nombre de conector
(atlas-plane DP-1) y ejecuta una barra por salida para tener indicadores por
monitor.
"custom/atlas-plane": {
"exec": "/home/you/.config/waybar/atlas-plane",
"return-type": "json"
}
Ambos scripts tienen notas de configuración completas en
contrib/waybar/README.md.
IPC: atlasctl
El compositor escucha en un socket Unix (JSON delimitado por saltos de línea, un
objeto por línea) y exporta la ruta completa como ATLASWM_SOCKET a todo lo
que lanza — así que atlasctl simplemente funciona desde cualquier terminal
dentro de la sesión, y desde fuera tras export ATLASWM_SOCKET=…. Tres verbos:
atlasctl action submap:resize # despacha cualquier cadena de acción asignable
atlasctl query windows | jq # consulta de un disparo
atlasctl subscribe # transmite eventos, un objeto JSON por línea
action
Toma el mismo vocabulario que los atajos de la configuración — cualquier cosa
asignable es invocable. atlasctl action tag-toggle:work, atlasctl action plane-switch:3, atlasctl action overview-toggle, etc. Así es como scriptas el
compositor o lo conectas a herramientas externas.
query
Estado de un disparo. Consultas disponibles:
windows focused viewport submap mod planes tags
gather summon overview anchors marks version
atlasctl query windows | jq te da cada ventana con su id, app_id, title,
plane, tags, y los indicadores de flotante/pantalla completa — suficiente para
agrupar, contar o apuntar a ventanas desde un script.
subscribe
Un flujo de eventos en vivo. Su primera línea es siempre una instantánea del
estado actual
({"event":"snapshot","submap":null,"mod":"super","focused":3,"active_plane":0,…}),
así que una barra arranca correcta sin el baile de consultar-y-luego-suscribirse.
Después de eso, los eventos se transmiten conforme suceden:
| evento | carga útil |
|---|---|
submap | {"state":"enter","name":"resize"} / {"state":"exit"} |
focus | {"id":3} / {"id":null} |
window | {"id":3,"change":…} — mapped, closed, float-on/-off, fullscreen-on/-off |
plane | {"change":…,"id":N} — switch, created, closed |
tag | {"id":N,"tag":"work","change":…} — added, removed |
gather | {"tag":"work","change":…} — enter, dismiss |
summon | {"tag":"comms","change":…} — enter, dismiss |
overview | {"change":…} — enter, exit |
config | {"change":"reloaded"} |
Ningún cliente puede dañar la sesión: un suscriptor que deja de leer se
desconecta, una línea basura recibe una respuesta {"error":…} en una conexión
que sigue abierta, y el compositor nunca se bloquea por IPC. Códigos de salida: 0
correcto, 1 respuesta de error del compositor, 2 error de uso / conexión.
atlasctl default-config imprime la configuración por defecto anotada —
canalízala a ~/.config/atlaswm/config.kdl para partir de una base documentada.
Diagnóstico: la traza de acciones
Cuando algo se comporta de forma rara, activa la traza y reprodúcelo:
debug { trace #true }
Cada atajo (con su contexto de submodo), resultado de redimensionado, agarre,
entrada/salida de submodo, mapeo/cierre de ventana y recarga de configuración se
añade a ~/.local/state/atlaswm/trace.log (nuevo por cada sesión). Es la forma más
rápida de ver qué acción disparó realmente una tecla y a qué apuntó — comparte el
archivo al reportar un error.