Nucleus
Tao backend

Wayland natif

Le backend Tao rend les apps Compose Desktop directement sur Wayland et bascule sur X11 automatiquement.

Sur Linux, le backend Tao rend les apps Compose Desktop directement sur Wayland via les protocoles Wayland natifs, plutôt que par la couche de compatibilité XWayland. Quand aucune session Wayland n'est disponible, il bascule sur X11 sans aucune modification de code. Cette page décrit ce que la voie Wayland prend en charge, son fonctionnement, et comment lire la session courante depuis Kotlin.

Ajouter la dépendance

La prise en charge de Wayland est fournie avec le backend Tao. Il n'y a pas d'artefact distinct.

build.gradle.kts
dependencies {
    implementation("dev.nucleusframework:nucleus.decorated-window-tao:2.0.7")
}

Détecter la session

Vous branchez rarement sur le type de session — le même code Compose s'exécute sur Wayland et sur X11. La détection est utile pour les diagnostics et les feature gates, car la progression dans la barre des tâches, les badges et les raccourcis globaux se comportent différemment selon la session.

import dev.nucleusframework.core.runtime.LinuxDesktopEnvironment
import dev.nucleusframework.core.runtime.Platform

val onWayland = Platform.isWayland
val desktopEnv = if (Platform.Current == Platform.Linux) LinuxDesktopEnvironment.Current else null

Fonctionnement

Tao lie les protocoles Wayland standards au démarrage : xdg-shell pour les fenêtres, xdg-decoration pour négocier les décorations côté serveur ou côté client, wp_fractional_scale_v1 pour les facteurs d'échelle non entiers, pointer-gestures-unstable-v1 pour le pincement et le balayage, et wp_tablet_v2 pour le stylet. Skiko rend dans une surface EGL attachée au wl_surface de la fenêtre.

Quand le compositeur signale un changement d'échelle — par exemple lorsque vous faites glisser une fenêtre d'un moniteur en 1.0 vers un moniteur en 1.5 — Tao reconfigure la surface EGL et émet un changement de densité vers Compose. Vos valeurs Dp restent logiques et le rendu reste net. Voir HiDPI par moniteur pour les détails.

Sur une session X11, ou sur un compositeur Wayland qui refuse les décorations XDG, Tao bascule sur X11 automatiquement. Le code Compose ne change pas.

Différences entre Wayland et X11

AspectWayland (Tao)X11 (repli)
Scaling fractionnaireNatif, par sortiePixel entier uniquement
Placement de fenêtreContrôlé par le compositeurLe client peut poser une position
Raccourcis globauxMédiés (xdg-portal)XGrabKey
Capture d'écranVia portal uniquementDirect
Pression du styletwp_tablet_v2Non exposée
Gestes multi-touchpointer-gestures-unstable-v1Limités

Notes

Sur Wayland, vous ne pouvez pas poser de coordonnées écran absolues — le compositeur possède le placement des fenêtres. WindowState.position est traité comme une indication par certains compositeurs et ignoré par d'autres (GNOME ignore les positions demandées par le client). Concevez votre layout autour de Center ou PlatformDefault, et mémorisez la dernière taille plutôt que la dernière position.

Référence de l'API

  • Platform.isWaylandtrue sur une session Linux quand XDG_SESSION_TYPE vaut wayland ou que WAYLAND_DISPLAY est défini.
  • Platform.Current — l'une des valeurs Linux, Windows, MacOS ou Unknown.
  • LinuxDesktopEnvironment.Current — l'une des valeurs Gnome, KDE, XFCE, Cinnamon, Mate ou Unknown.

Et ensuite