Instalación

Ejecuta atlaswm anidado en una ventana para desarrollo, o instala el flake y elígelo en tu greeter como una sesión GPU real.

Hay dos formas de ejecutar atlaswm, y usarás ambas: anidado en una ventana bajo tu compositor actual (la vía de desarrollo del día a día), y como una sesión DRM/KMS independiente directa sobre la GPU (la que usas a diario). El mismo binario, la misma config — el backend se elige al arrancar.

Anidado (vía de desarrollo)

La forma más rápida de probarlo. atlaswm se abre como una ventana bajo tu compositor Wayland actual (Hyprland, sway, GNOME, …) y ejecuta todo dentro: tilado, planos, zoom, todo. Mod es Alt por defecto cuando está anidado (el anfitrión se queda Super), así que nunca pelea con los atajos de tu anfitrión.

Con flakes de Nix:

nix develop -c cargo run -p atlaswm        # abre la ventana del compositor anidado
nix develop -c cargo test --workspace      # la verificación de tests

nix develop te deja en el dev shell con el toolchain de Rust y las librerías de sistema que Smithay necesita (libinput, libxkbcommon, udev, EGL/GBM, …).

La distribución de teclado sigue las variables de entorno XKB estándar hasta que fijes una en la config:

XKB_DEFAULT_LAYOUT=fr nix develop -c cargo run -p atlaswm   # azerty

La terminal que lanza Alt+Return es $ATLASWM_TERM, con respaldo a foot / alacritty / kitty / weston-terminal.

Prueba anidado primero, siempre. El renderizado, los clientes reales y la sensación de la entrada no se pueden testear unitariamente — ejecutarlo bajo tu compositor actual es cómo lo ves funcionar, sin ningún riesgo para tu sesión.

Prueba rápida de sesión en TTY

Antes de instalarlo como una sesión de greeter, comprueba que el backend DRM funciona en tu hardware. scripts/test-drm.sh detiene tu display manager, ejecuta atlaswm sobre la GPU, y restaura el display manager al salir:

scripts/test-drm.sh          # 120s; pasa un número para más tiempo, p. ej. 300

Ejecútalo desde una VT separada (Ctrl+Alt+F3), no desde dentro de tu escritorio. Sal con Mod+Shift+e (salir), Ctrl+C, o un cambio de VT; además sale automáticamente tras el tiempo límite, así que no puedes quedarte atascado.

Instalar como sesión de greeter (flake de NixOS)

El flake expone un paquete que instala el binario atlaswm más una entrada share/wayland-sessions/atlaswm.desktop (su Exec es atlaswm --session), con las librerías de tiempo de ejecución que Smithay carga con dlopen empaquetadas. Añádelo como una entrada del flake y ponlo en sessionPackages:

# entradas del flake:
inputs.atlaswm.url = "github:elfangor/atlaswm";

# en tu configuración de NixOS:
services.displayManager.sessionPackages = [
  inputs.atlaswm.packages.${pkgs.system}.default
];

Reconstruye, luego elige atlaswm en tu greeter. Para solo compilar el binario sin instalar una sesión:

nix build .#atlaswm      # → ./result/bin/atlaswm

En una sesión real, mod "auto" resuelve Mod a Super — así que Super+Return abre una terminal, Super+h/j/k/l mueve el foco, Super+Shift+e sale.

El wrapper de sesión

El atlaswm instalado es un wrapper que fija la identidad de sesión XDG (XDG_CURRENT_DESKTOP=atlaswm y compañía) y apunta LD_LIBRARY_PATH a las librerías de tiempo de ejecución antes de ejecutar el compositor real con --session. Esa identidad de sesión importa para los portales (es lo que encamina compartir pantalla al backend correcto — mira Solución de problemas). El wrapper también redirige el stderr de la sesión a $XDG_STATE_HOME/atlaswm/session.log (más .old) para que tengas un registro que leer cuando algo se porte mal.

Notas sobre NVIDIA

atlaswm se desarrolla y se usa a diario en una NVIDIA RTX 3080 (Ampere) sobre los módulos del kernel nvidia-open — el backend DRM funciona en esa tarjeta exacta. El EGL de NVIDIA lo provee el driver del sistema vía /run/opengl-driver; no hace falta envolver con nixGL en la sesión. nvidia-drm.modeset=1 ya debería estar puesto si hoy ejecutas algún compositor Wayland. Si los clientes GL fallan al arrancar con errores de asignación de EGL, mira la sección de NVIDIA de Solución de problemas.

Consejo sobre el tema de cursor

El backend DRM dibuja su propio cursor (el backend anidado deja que lo dibuje el anfitrión), cargando el tema XCursor desde XCURSOR_THEME / XCURSOR_SIZE. Si el cursor parece una flecha X por defecto, fija esas variables de entorno a tu tema (p. ej. un cursor catppuccin) en el entorno de tu sesión para que el compositor lo encuentre.

Lo que obtienes en cualquier caso

Tilado sobre un conjunto de planos infinitos (columnas, filas, pestañas, divisiones recursivas), flotantes, pantalla completa, desplazamiento en X/Y, redimensionado con teclado y ratón, una escalera de zoom que termina en una vista general de plano ajustado, wlr-layer-shell para barras/paneles (waybar, eww, fuzzel), XWayland, compartir pantalla — todo configurable, todo recargado en vivo.

Siguiente: la primera ejecución, luego configuración.