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.

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). hyprpaper necesita 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:

eventocarga ú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.