Intégration
Barres et panneaux via wlr-layer-shell, les modules waybar atlas-submap / atlas-plane, et le scriptage d'atlaswm par IPC avec atlasctl.
Sur cette page
atlaswm s'intègre à l'écosystème Wayland standard. Barres, panneaux et lanceurs s'ancrent via wlr-layer-shell ; tout ce qui a un état est interrogeable et diffusable sur un socket IPC JSON, de sorte qu'une barre ou un script sait toujours ce que fait le compositor.
Barres et panneaux (wlr-layer-shell)
atlaswm implémente wlr-layer-shell (zwlr_layer_shell_v1), de sorte que les
barres, panneaux et lanceurs — waybar, eww, fuzzel, wofi, … — s'ancrent à un
bord d'écran, réservent de l'espace (les zones exclusives réduisent la zone de
tuilage pour que les fenêtres ne se retrouvent pas sous la barre), se dessinent dans
le bon ordre de profondeur (z-order), et reçoivent l'entrée pointeur/clavier. Les
surfaces de couche appartiennent à la sortie, pas au plan, donc une barre ne fait
jamais de panoramique ni de zoom avec le canevas.
Lancez votre barre et votre fond d'écran au démarrage de la session avec
spawn-at-startup :
spawn-at-startup "waybar"
spawn-at-startup "swaybg" "-i" "/path/to/wallpaper.png"
Fond d'écran : utilisez
swaybg(ou tout outil de fond d'écran layer-shell).hyprpapernécessite l'IPC de Hyprland et ne fonctionnera pas ici.
waybar
Les modules intégrés de waybar (horloge, réseau, pulseaudio, zone de notification,
batterie, …) fonctionnent tels quels. Les modules spécifiques à Hyprland
(hyprland/workspaces, hyprland/submap, hyprland/window) ne fonctionnent pas —
ils nécessitent l'IPC de Hyprland. Le dépôt fournit des remplacements dans
contrib/waybar/
qui utilisent l'IPC propre à atlaswm.
atlas-submap — indicateur de sous-mode actif
Affiche quel sous-mode modal est actif (resize / planes / pan / …) pour que vous ne
restiez jamais coincé dans l'un d'eux sans le savoir — comblant le vide laissé par
le hyprland/submap désactivé. Vide quand aucun sous-mode n'est actif. Il est
piloté par événements via atlasctl subscribe (pas d'interrogation, se
reconnecte si atlaswm redémarre).
Prérequis : atlasctl dans le PATH et jq. Copiez le script à un endroit
exécutable et ajoutez un module personnalisé continu — à noter : pas
d'interval, il diffuse en flux :
"custom/atlas-submap": {
"exec": "/home/you/.config/waybar/atlas-submap",
"return-type": "json"
}
Placez "custom/atlas-submap" dans une liste modules-* (p. ex. modules-left,
là où se trouvait hyprland/submap). style.css facultatif :
#custom-atlas-submap.active { color: @peach; font-weight: bold; }
atlas-plane — indicateur de plan
Affiche tout le pool de plans (p. ex. 0 1 2 3) et met en évidence le plan que le
moniteur affiche actuellement — un indicateur d'espace de travail pour les plans.
Également piloté par événements. Sans argument, il suit le plan du moniteur actif
(adapté à une seule barre partagée) ; passez un nom de connecteur (atlas-plane DP-1) et faites tourner une barre par sortie pour des indicateurs par moniteur.
"custom/atlas-plane": {
"exec": "/home/you/.config/waybar/atlas-plane",
"return-type": "json"
}
Les deux scripts disposent de notes de configuration complètes dans
contrib/waybar/README.md.
IPC : atlasctl
Le compositor écoute sur un socket Unix (JSON délimité par sauts de ligne, un objet
par ligne) et exporte le chemin complet sous ATLASWM_SOCKET vers tout ce qu'il
lance — atlasctl fonctionne donc directement depuis n'importe quel terminal à
l'intérieur de la session, et depuis l'extérieur après export ATLASWM_SOCKET=….
Trois verbes :
atlasctl action submap:resize # déclenche n'importe quelle chaîne d'action assignable
atlasctl query windows | jq # interrogation ponctuelle
atlasctl subscribe # diffuse les événements, un objet JSON par ligne
action
Prend le même vocabulaire que les raccourcis de configuration — tout ce qui est
assignable est invocable. atlasctl action tag-toggle:work, atlasctl action plane-switch:3, atlasctl action overview-toggle, etc. C'est ainsi que vous
scriptez le compositor ou que vous le reliez à des outils externes.
query
État ponctuel. Interrogations disponibles :
windows focused viewport submap mod planes tags
gather summon overview anchors marks version
atlasctl query windows | jq vous donne chaque fenêtre avec son id, app_id,
title, plane, tags, et ses indicateurs de flottant/plein écran — assez pour
regrouper, compter ou cibler des fenêtres depuis un script.
subscribe
Un flux d'événements en direct. Sa première ligne est toujours un instantané de
l'état courant
({"event":"snapshot","submap":null,"mod":"super","focused":3,"active_plane":0,…}),
de sorte qu'une barre démarre correcte sans la danse interroger-puis-s'abonner.
Ensuite, les événements arrivent en flux au fur et à mesure :
| événement | charge utile |
|---|---|
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"} |
Aucun client ne peut nuire à la session : un abonné qui cesse de lire est
déconnecté, une ligne corrompue reçoit une réponse {"error":…} sur une connexion
encore ouverte, et le compositor ne se bloque jamais sur l'IPC. Codes de sortie :
0 ok, 1 réponse d'erreur du compositor, 2 erreur d'usage / de connexion.
atlasctl default-config imprime la configuration par défaut annotée — redirigez-la
dans ~/.config/atlaswm/config.kdl pour partir d'une base documentée.
Diagnostic : la trace d'actions
Quand quelque chose se comporte étrangement, activez la trace et reproduisez le problème :
debug { trace #true }
Chaque raccourci (avec son contexte de sous-mode), résultat de redimensionnement,
saisie (grab), entrée/sortie de sous-mode, mappage/fermeture de fenêtre et
rechargement de configuration est ajouté à ~/.local/state/atlaswm/trace.log (neuf
à chaque session). C'est le moyen le plus rapide de voir quelle action une touche a
réellement déclenchée et ce qu'elle a ciblé — partagez le fichier quand vous
signalez un bug.