This Wayland Desktop Has Window Physics

La vidéo présente FWM, un compositeur Wayland (avec une version X11) qui intègre le moteur physique Box2D pour transformer les fenêtres en objets physiques soumis à la gravité, aux collisions et à la rotation, le tout dans un but délibérément absurde mais fonctionnel.

Voir la source

SYNTHÈSE STRUCTURÉE

Présentation de FWM : un compositeur Wayland avec physique 2D

FWM est un compositeur Wayland écrit en C qui utilise la bibliothèque Box2D pour appliquer des lois physiques aux fenêtres. L’intervenant précise d’emblée le ton : « It doesn’t have to be useful. It doesn’t have to make sense. I just can. » Le projet existe aussi en version X11, mais la démonstration porte sur la version Wayland. Il n’est pas packagé sur les distributions, mais un script d’installation existe pour Arch Linux via run install, qui installe les dépendances et configure une session pour le display manager.

Installation et configuration initiale

Le script d’installation pour Arch Linux se charge de tout : dépendances, session, et configuration. L’intervenant mentionne : « It instills all the packages, all the dependencies for you. It instills it as a session, so if you want to open it up from your display manager, it does with that for you. » Pour les autres distributions, il faudra compiler manuellement. Une fois lancé, l’écran est noir par défaut, mais un fond d’écran peut être défini.

Comportement physique des fenêtres : gravité et inertie

Par défaut, la gravité est désactivée (valeur 0). Les fenêtres se déplacent normalement, mais lorsqu’on les lâche, elles continuent sur leur lancée (inertie). L’intervenant démontre : « If I press super G, that changes the gravity modifier. Now, if we throw it… The window bounces back down. » La gravité peut être modifiée via Super+G, et plusieurs niveaux sont disponibles. Plus la gravité est élevée, plus la fenêtre accélère en tombant, mais l’espace limité de l’écran ne permet pas de développer une grande vélocité.

Collisions entre fenêtres et limitations physiques

Quand deux fenêtres se rencontrent, elles interagissent physiquement : elles se repoussent, se percutent, et peuvent être projetées. L’intervenant prévient : « As always with any sort of physics, if you ever done any game development, moving too fast will break the physics. » En effet, un déplacement trop rapide peut faire traverser les fenêtres ou provoquer des comportements instables. Cela dépend aussi du réglage de gravité.

Gestion des espaces de travail (workspaces) et du défilement

FWM propose 10 espaces de travail virtuels, accessibles via Super+1 à Super+0. Il n’y a pas de limite stricte entre eux : une fenêtre peut chevaucher deux espaces. L’intervenant explique : « There is no hard limit between those different desktops. So, we can exist in the middle of a desktop transition. » On peut aussi déplacer une fenêtre d’un espace à un autre en la faisant glisser jusqu’au bord de l’écran, ou via Super+Shift+[numéro] tout en maintenant la fenêtre.

Épinglage des fenêtres et désactivation des collisions

Pour empêcher une fenêtre de tomber (même avec gravité active), on utilise Super+P pour l’épingler. Elle reste solide et les autres fenêtres rebondissent dessus. L’intervenant précise : « It is pinned as a solid object still. So, if I were to do something like this, the window still bounces off of it. » On peut aussi désactiver les collisions avec Super+N : la fenêtre devient alors transparente aux autres objets physiques, utile pour des overlays.

Rotation des fenêtres et impact sur les applications

Avec Super+R, on déverrouille la rotation d’une fenêtre. Elle peut alors tourner librement, et son momentum est transmis aux autres fenêtres lors d’une collision. L’intervenant note : « With some applications, you can still use them when they’re upside down… Other applications, not necessarily the case. » Par exemple, Firefox peut planter ou ne plus afficher la vidéo en cours de rotation. C’est un effet de bord attendu.

Configuration via le fichier config.toml

Le fichier de configuration se trouve dans ~/.config/fwm/config.toml. Il permet de régler :

  • La gravité (plusieurs préréglages : lunaire, terrestre, etc.)
  • Les sous-types de gravité par espace de travail (exemple : gravité lunaire sur les espaces 3 et 4)
  • Les effets visuels : wobble (fenêtres tremblotantes), squash (écrasement au contact), spin (force de rotation), camera_shake (secousses de l’écran)
  • Les règles de fenêtres (masse, collision, gravité spécifique, espace de travail de spawn)

L’intervenant montre comment modifier la gravité lunaire : « If I save the file and I do super shift R, that reloads the gravity. » Le rechargement se fait via Super+Shift+R.

Règles de fenêtres et personnalisation avancée

FWM supporte des règles de fenêtres classiques (comme la plupart des gestionnaires de fenêtres), mais elles peuvent aussi contrôler des propriétés physiques : masse, collision, gravité. Par exemple, on peut appliquer No Collide à MPV, ou donner une masse différente à certaines applications. L’intervenant souligne : « This environment is a joke. But it’s a joke that’s sort of intended to be useful for normal things as well. » Il existe aussi un mode tiling (carrelage), mais l’intervenant ne l’utilise pas dans la démo.

Bugs et limites connues

Les fenêtres peuvent vibrer, traverser les limites de l’écran, ou se comporter de manière instable en cas de collisions rapides. L’intervenant admet : « If you can drag a window really fast, you’re eventually going to be able to break the collision system. It’s just the way collisions work. » La documentation est principalement constituée des commentaires dans le fichier de configuration, avec peu de documentation externe.

Verdict : un projet absurde mais fonctionnel

L’intervenant conclut qu’il ne daily-driverait pas FWM, mais qu’il trouve le projet cool et encourage les autres à l’essayer : « Is this the kind of thing I would want to daily drive? No, absolutely not. Is this the kind of thing I would expect to see on UnixPorn? … Absolutely, yes. » Il invite à signaler d’autres environnements « stupides » et à partager ses découvertes.

CONCEPTS CLÉS

  • Box2D : Bibliothèque de simulation physique 2D utilisée dans de nombreux moteurs de jeu (Unity, etc.). Dans FWM, elle gère la gravité, les collisions et l’inertie des fenêtres.
  • Wayland compositor : Gestionnaire d’affichage pour Wayland, remplaçant X11. FWM est un compositeur, pas un simple gestionnaire de fenêtres.
  • Wobbly windows : Effet visuel où les fenêtres tremblent ou ondulent lors des déplacements, activé par défaut dans FWM.
  • Camera shake : Effet de secousse de l’écran lors d’impacts violents entre fenêtres, réglable dans la configuration.

CONCLUSION

FWM est un compositeur Wayland qui pousse l’idée de « bureau physique » jusqu’à l’absurde, en utilisant Box2D pour simuler gravité, collisions et rotations. Bien que clairement non destiné à un usage quotidien, il démontre qu’il est possible d’intégrer des mécaniques de jeu dans un environnement de bureau tout en conservant des fonctionnalités de base (espaces de travail, règles de fenêtres, tiling). L’intervenant encourage l’expérimentation et la création de projets « inutiles mais amusants », rappelant que la liberté du logiciel libre permet aussi de faire des choses délibérément absurdes.

Du même canal

Tout voir