Configuration

Un seul fichier KDL rechargé à chaud pilote tout : la touche mod, l'entrée, les raccourcis, les sous-modes, l'apparence, les animations, les règles et plus.

atlaswm ne lit qu'un seul fichier : $XDG_CONFIG_HOME/atlaswm/config.kdl (c.-à-d. ~/.config/atlaswm/config.kdl). C'est du KDL, il est rechargé à chaud dans la seconde qui suit l'enregistrement, et une erreur d'analyse ne fait jamais tomber la session — la dernière configuration valide continue de s'exécuter et l'erreur est consignée. Votre fichier n'a besoin que des lignes que vous voulez changer ; tout le reste revient aux valeurs par défaut compilées dans le binaire.

Pour partir d'une base documentée :

atlasctl default-config > ~/.config/atlaswm/config.kdl

Comment la fusion s'opère

  • Les sections remplacent. Définissez appearance { border-width 0 } et seule cette clé change ; le reste de appearance conserve ses valeurs par défaut.
  • Les raccourcis fusionnent. Même motif de touche qu'un raccourci par défaut = il est remplacé ; un nouveau motif = il s'ajoute. Vous n'avez pas à ré-énumérer tous les raccourcis par défaut.
  • Une mauvaise configuration est inerte. Une coquille, un verbe inconnu, une expression régulière cassée → l'analyse échoue, l'erreur est consignée, et la configuration précédemment chargée continue de s'exécuter. La session ne tombe jamais à cause d'une erreur de configuration ; corrigez le fichier et enregistrez pour réappliquer (rechargement à chaud).

Deux remarques sur les touches :

  • Les raccourcis suivent la lettre, pas la touche physique : Mod+q sur azerty est la touche qui tape q. Verr. Maj et Verr. Num n'affectent jamais les raccourcis.
  • input { xkb-layout "fr" } est la façon dont azerty fonctionne sans les variables d'environnement XKB_DEFAULT_*.

Les blocs principaux

Une carte rapide de ce qui se trouve où. Chacun est facultatif ; omettez un bloc pour en prendre les valeurs par défaut.

BlocCe qu'il contrôle
mod "auto"Le modificateur que tous les raccourcis référencent. auto = Alt en imbriqué, Super sur une vraie session. À redéfinir avec alt ou super.
input { … }Disposition / variante / options XKB, et repeat-delay / repeat-rate des touches.
pan-step 200Pixels déplacés par action de panoramique.
gaps 0Espacement (px) entre les fenêtres tuilées. 0 = sans espace.
zoom-steps 1.0 0.5L'échelle de zoom : facteurs décroissants dans (0, 1]. Le « fit-plane » (ajustement au plan) est toujours ajouté comme dernier échelon.
resize { step-px step-share }Pas de redimensionnement au clavier : pixels pour les cibles absolues, une fraction de part pour les cibles pondérées.
animations { enable duration-ms curve }Lissage du panoramique/zoom/déplacement de fenêtre. enable #false (ou duration-ms 0) = instantané.
debug { trace #false }Quand activé, ajoute chaque action et sa cible résolue à ~/.local/state/atlaswm/trace.log.
appearance { … }Couleurs des bandes d'onglets, largeur/couleurs des bordures de fenêtre, le surlignage de la cible de redimensionnement, et la police/taille/couleurs/touches des étiquettes de saut vers une fenêtre.
binds { … }La table des raccourcis — "<pattern>" "<action>" par ligne. Voir Raccourcis clavier.
submaps { … }Tables de raccourcis modales (resize / planes / pan / les vôtres). Voir Raccourcis clavier.
rules { … }Règles de fenêtre : correspondance par app-id/titre (regex), redéfinition du plan cible / des étiquettes / du flottant / de la taille / de l'ouverture en onglet. Voir Concepts.
anchors { … }Signets de vue nommés, ensemencés sur le plan 1. Voir Concepts.
spawn-at-startup "cmd" "args"…Lancer un programme une fois au démarrage de la session (une barre, un fond d'écran, …). Répétable ; non relancé au rechargement à chaud.
outputs { … }Placer les moniteurs dans l'espace écran combiné par nom de connecteur, et éventuellement définir le plan de départ de chacun.
idle { timeout command }Verrouillage automatique intégré : après timeout secondes d'inactivité, exécute command (votre verrouilleur). Désactivé par défaut.

Une configuration minimale

Vous avez rarement besoin de plus que quelques lignes. Un point de départ courant :

mod "super"
gaps 8

input {
    xkb-layout "fr"
}

animations {
    enable #true
    duration-ms 150
    curve "ease-out-cubic"
}

spawn-at-startup "waybar"
spawn-at-startup "swaybg" "-i" "/path/to/wallpaper.png"

binds {
    "Mod+d" "spawn:wofi --show drun"
    "Mod+Print" "spawn:grim -g \"$(slurp)\" ~/shot.png"
}

Cela conserve tous les raccourcis par défaut, en ajoute deux à vous, choisit Super comme mod, active 8 px d'espacement et les animations, règle azerty, et lance automatiquement une barre et un fond d'écran.

La référence complète

Chaque clé, avec sa valeur par défaut compilée et un commentaire en ligne, figure dans la référence de configuration — reproduite mot pour mot depuis DEFAULT_CONFIG (un test unitaire l'empêche de diverger du code). C'est la liste qui fait autorité :

La référence est l'endroit où copier la syntaxe exacte de rules, anchors, outputs, idle, des verbes de ratio largeur/hauteur, des marques, des groupes et du reste — tout est présenté sous forme d'exemples commentés que vous pouvez décommenter et modifier.